Discord бот не видит реакции на сообщениях от пользователя
Я пишу discord (discord.py) бота, который будет распределять роли и начислять поинты пользователям, если я оставляю реакцию (:white_check_mark:) на их сообщениях. Функция для начисления поинтов должна будет записывать их в бд (sqlite3):
@bot.event
async def add_points(payload):
channel = bot.get_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
guild = bot.get_guild(payload.guild_id)
reaction = discord.utils.get(message.reactions, emoji=payload.emoji.name)
if payload.member.id == bot.user.id:
pass
elif payload.member.id == 63371... and str(reaction.emoji) == '✅':
cursor.execute(f"UPDATE users SET points = points + {500} WHERE id = {payload.member.id}")
connect.commit()
Когда я ставлю реакцию на сообщение, бот её не видит. Помогите плиз.
Ответы (2 шт):
Библиотека точно discord py?
Если да, то у них есть функция on_raw_reaction_add
Вы можете называть своими именами команды бота, помеченные декоратором @bot.command().
Но это не касается событий бота @bot.event. Чтобы отлавливать сообщения, функция должна называться конкретно - on_message(message), чтобы создать функцию, которая будет вызвана при запуске бота, она тоже может называться только on_ready() и больше никак.
Это же касается и события добавления реакции. Вы назвали функцию add_points(payload):, поэтому библиотека discord-py не может найти подходящее событие для функции с таким названием.
Правильно будет назвать функцию on_raw_reaction_add(payload)