繁体   English   中英

在 python 中使用可选的格式化标记

[英]Using optional formatting tokens in python

我有一个 discord.py 机器人,当有人加入公会时会发送消息。 它有一条由管理员使用命令设置的自定义消息。 管理员需要输入 {user} 和 {rules} 以在该消息中提及用户和规则频道。 我正在努力做到这一点,这样他们就不必设置规则或用户,或任何一个。

# Sends welcome message
welcome = cluster.find_one({'id': 'settings'})
welcome_channel = client.get_channel(welcome['welcome_channel'])
welcome_message = welcome['join_message']
rules_channel = client.get_channel(welcome['rules_channel'])
await welcome_channel.send(welcome_message.format(user=member.mention, rules=rules_channel.mention))

离开包含消息。 每当管理员将消息设置为类似

“hello {user}”,它没有规则。

有什么办法可以让格式是可选的?

不带格式。 Format 期望在格式化消息时使用所有值。

如果您愿意稍微更改欢迎消息格式,可以使用模板字符串

from string import Template

welcome_message = Template(welcome['join_message'])
await welcome_channel.send(welcome_message.safe_substitute(user=member.mention, rules=rules_channel.mention))

这需要 Python 3.2 或更高版本,并且消息变量应为$var${var} 因此,在您的情况下,消息将是Welcome $user, here are the $rules或类似的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM