#python #python-3.x #discord #discord.py #discord.py-rewrite
#python #python-3.x #Discord #discord.py
Вопрос:
В принципе, я пытаюсь создать команду опроса / голосования, которая позволяет добавлять реакции «:thumbsup:» для согласия и «:thumbsdown:» для несогласия. Например:
User: Am I male?
Reactions: :thumbsup:, :thumbsdown:
Meaning of Reactions: [yes:no]
Это мой полный код:
@client.command()
async def poll(ctx, *, message):
await ctx.send(f"{message}")
await Message.add_reaction(emoji=u"U0001F44D")
Всякий раз, когда я вызываю команду, сообщение отправляется, но реакция не добавляется. Вместо этого появляется эта ошибка
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: add_reaction() missing 1 required positional argument: 'self'
Полная ошибка здесь:
Ignoring exception in on_command_error
Traceback (most recent call last):
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:UsersdanieDocumentsScriptsBotsDiscordBotskybot.py", line 53, in poll
await discord.Message.add_reaction(emoji=u"U0001F44D")
TypeError: add_reaction() missing 1 required positional argument: 'self'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordclient.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:UsersdanieDocumentsScriptsBotsDiscordBotskybot.py", line 189, in on_command_error
raise error
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandsbot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 855, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: add_reaction() missing 1 required positional argument: 'self'
Ignoring exception in on_command_error
Traceback (most recent call last):
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "C:UsersdanieDocumentsScriptsBotsDiscordBotskybot.py", line 53, in poll
await discord.Message.add_reaction(emoji=u"U0001F44D")
TypeError: add_reaction() missing 1 required positional argument: 'self'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordclient.py", line 312, in _run_event
await coro(*args, **kwargs)
File "C:UsersdanieDocumentsScriptsBotsDiscordBotskybot.py", line 189, in on_command_error
raise error
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandsbot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 855, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:UsersdanieAppDataLocalProgramsPythonPython38libsite-packagesdiscordextcommandscore.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: add_reaction() missing 1 required positional argument: 'self'
Это мой источник для эмодзи в юникоде
Ответ №1:
В discord.py send()
функция возвращает сообщение, поэтому все, что вам нужно сделать, это установить для вашей функции отправки значение переменной.
@client.command()
async def poll(ctx, *, message):
message = await ctx.send(message)
await message.add_reaction(u"U0001F44D")
Ответ №2:
Вам нужен экземпляр сообщения, а не класс, сохраните ваше сообщение в переменной. В этом случае переменная является msg
:
@client.command()
async def poll(ctx, *, message):
msg = await ctx.send(f"{message}")
await msg.add_reaction(emoji=u"U0001F44D")
Комментарии:
1. Спасибо за ответ, действительно ценю это. Я принял другого парня, поскольку у него была более низкая репутация. Надеюсь, вы понимаете. 🙂
2. Нет проблем, рад, что вы нашли свой ответ!