Ошибка атрибута: объект ‘Member’ не имеет атрибута ’emoji’

#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. Я понимаю, что атрибут не существует, но я просто в замешательстве, потому что я следовал руководству