#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я пытаюсь создать бота, который выполняет определенные действия при реакции с помощью смайликов
@client.event
async def on_reaction_add(ctx, reaction, user: discord.User = message.author):
global global_emoji
if reaction.emoji == global_emoji:
print('Reacted successfully')
Но я получаю эту ошибку
AttributeError: 'Member' object has no attribute 'emoji'
РЕДАКТИРОВАТЬ: я решил это, просто нужно было удалить параметр ctx
Ответ №1:
Событие on_reaction_add
принимает два аргумента: reaction
и user
В вашем случае reaction
аргумент, который вы передаете, на самом деле user
является аргументом, а ваш ctx
аргумент на самом деле reaction
является аргументом.
ctx: commands.Context
передается только в качестве первого аргумента только в командах
@client.event
async def on_reaction_add(
reaction: discord.Reaction, user: Union[discord.Member, discord.User]
): # typehinting there will not be parsed by discord.py, as its parsed only in commands
if reaction.emoji == global_emoji:
print('Reacted successfully')
Ответ №2:
Вы пытаетесь получить атрибут, который не существует в указанном классе. Например
class Member(object):
def bla(self):
pass
Упомянутый класс имеет атрибут с именем «bla», если вы попытаетесь написать Member.bla(), все будет работать нормально. Но то, что вы пытаетесь сделать, это достичь «bla2», которого не существует.
Если вы хотите узнать список атрибутов для объекта, попробуйте, например, использовать vars ()
Комментарии:
1. Я понимаю, что атрибут не существует, но я просто в замешательстве, потому что я следовал руководству