Как в ивенте on_raw_reaction_add получить имя пользователя, написавшего сообщение
Я делаю discord бота(discord.py) и мне нужна функция которая будет прибавляет к полю xp в бд 500, если сообщение пользователя было помечено реакцией '?'. Я пытался сделать это, и вот что у меня получилось:
@bot.event
async def on_raw_reaction_add(payload):
"""Функция on_raw_reaction_add прибавляет к полю xp в бд 500,
если сообщение пользователя было помечено реакцией '?'.
"""
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 == 633717285474795557 and str(reaction.emoji) == '?':
cursor.execute(f"UPDATE users SET xp = xp + 500 WHERE id = {payload.member}")
connect.commit()
Но эта функция прибавляет 500 автору реакции, а мне нужно чтобы добавляла автору сообщения. Помогите плз.
Ответы (1 шт):
Автор решения: sigalgleb
→ Ссылка
Похоже, что member - человек, который добавил реакцию. Вам же нужно прибавлять значение 500 к XP автору message, а не автору реакции:
cursor.execute(f"UPDATE users SET xp = xp + 500 WHERE id = {message.author}")
Если решение не подойдет, то возможно стоит объединить вашу функцию с чем-то подобным: https://discordpy.readthedocs.io/en/latest/api.html#discord.Message.author