#python #discord.py
#python #discord.py
Вопрос:
У меня ошибка в моем боте Discord в настоящее время, когда кто-то использует кавычки в команде, я получаю следующую ошибку: discord.ext.commands.errors.ExpectedClosingQuoteError: Expected closing ".
Похоже, что это открытая ошибка в, discord.py
согласно этому отчету об ошибке, а также этому коду в discord.py
. Немного раздражает, что это проблема, и мне было интересно, есть ли какое-либо исправление для этого в настоящее время. Вот мой код на данный момент:
@bot.command()
async def f(ctx, *args):
hearts = (':heart:', ':orange_heart:', ':yellow_heart:', ':green_heart:', ':blue_heart:', ':purple_heart:')
if not args:
response = '**{0}** has paid their respects {1}'.format(ctx.author.name,
hearts[random.randint(0, len(hearts) - 1)])
else:
response = '**{0}** has paid their respects {1} {2}'.format(ctx.author.name, ' '.join(args),
hearts[random.randint(0, len(hearts) - 1)])
Когда пользователь вызывает эту функцию, набирая !f "The thing
в Discord, я получаю команду, о которой упоминал выше. Могу ли я в любом случае потенциально обойти это? Я не думаю, что это возможно, поскольку в ту минуту, когда аргумент передается в функцию, выдается ошибка. Я полагаю, что могу отредактировать discord.py
, чтобы исправить эту проблему, но это может привести к сбоям в других областях моего бота. Обычно я получаю эту ошибку, когда пользователи iOS используют кавычки на своей клавиатуре и вводят что-то вроде !f Josh's face
. Есть ли какой-либо способ успешно передать все кавычки через эту функцию?
Спасибо!
Ответ №1:
Он принимает все после команды как args
и установил значение по умолчанию None, чтобы вы не получили ошибку, если нет аргументов discord.ext.commands.errors.MissingRequiredArgument: args is a required argument that is missing.
также я изменил форматирование, чтобы использовать строку f, я считаю, что это проще. и в вашем случае лучше использовать random.choise()
@bot.command()
async def f(ctx, *, args=None):
hearts = (':heart:', ':orange_heart:', ':yellow_heart:',
':green_heart:', ':blue_heart:', ':purple_heart:')
if not args:
response = f'**{ctx.author.name}** has paid their respects {random.choice(hearts)}'
else:
response = f'**{ctx.author.name}** has paid their respects {args} {random.choice(hearts)}'
await ctx.send(response)
Комментарии:
1. Большое вам спасибо за исправление моего кода и ссылку на документацию. Действительно полезно! Очень признателен! <3