Не работает fetch_message() в on_raw_reaction_add Discord.py
Я делаю функцию в Discord боте на discord.py которая печатает в консоль "Emoji activated" когда пользователь нажимает на определенный эмоджи к сообщению.
@bot.event
async def on_raw_reaction_add(payload):
channel = bot.get_channel(810882194159042590)
message = await channel.fetch_message(842363832344379393)
reaction = discord.utils.get(message.reactions, emoji='✅')
if payload.member.id == bot.user.id:
return
if payload.message == 842363832344379393 and reaction.emoji == '✅':
await print("Emoji activated ")
Но когда я его запускаю происходит ошибка: AttributeError: 'NoneType' object has no attribute 'fetch_message'.
Я не понимаю что означает эта ошибка, так как переменная с каналом channel уже существует.
Что она значит, и как ее можно решить?
Ответы (1 шт):
Во первых вы не смогли получить канал(скорее всего, ошиблись циферками), поэтому он принял значения NoneType и по итогу получилась ошибка. К тому же, это действие для вас лишние.
Получить ид сообщения куда поставилась реакцию, можно с помощью -payload.message_id
Скопировать эмодзи с дискорда можно с помощью \ :emojiname: (без пробела) 
await print() у вас так же вызовет ошибку.
Код ниже.
@bot.event
async def on_raw_reaction_add(messages):
user_id = messages.user_id # ID пользователя, который добавил реакцию
message_id = messages.message_id
if messages.user_id == bot.user.id:
return
if message_id == 838114130397233173: # сюда вводим свой ид сообщения
if messages.emoji.name == "✅": # имя реакции. узнать его можно скопировав с дса. Можно через and
print("emoji active")