#python
Вопрос:
У меня есть discord.py бот, который отправляет сообщение, когда кто-то вступает в гильдию. В нем есть пользовательское сообщение, которое задается администратором с помощью команды. Администратору необходимо указать {пользователь} и {правила}, чтобы упомянуть канал пользователя и правил в этом сообщении. Я пытаюсь сделать так, чтобы им не нужно было вводить правила, или пользователя, или что-то еще.
# 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))
Оставьте сообщение. Я получаю сообщение об ошибке в любое время, когда администратор устанавливает сообщение примерно так
«привет {пользователь}», где нет правил.
Могу ли я как-нибудь сделать так, чтобы форматы были необязательными?
Ответ №1:
Не с форматом. Формат ожидает, что все значения будут использованы при форматировании сообщения.
Если вы хотите немного изменить формат приветственного сообщения, вы можете использовать шаблонные строки:
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
или что-то подобное.