Не работает функция для выдачи роли при реакции

Суть в чем. Человек пишет сообщение и только когда на сообщение поставят реакцию бот выдает роли этому человеку

@bot.event
async def on_raw_reaction_add(payload): #отлов реакции на сообщение
    channel = bot.get_channel(payload.channel_id) #отлов канала, где произошла реакция
    message = await channel.fetch_message(payload.message_id)
    role = discord.utils.get(message.guild.roles, name="test") #находим роль по имени на сервере
    await message.author.add_roles(role) #выдаём роль пользователю

Почему-то не работает

AttributeError: 'User' object has no attribute 'add_roles'

Ответы (1 шт):

Автор решения: nyekitka

Проблема тут в том, что message.author может вернуть объект класса User, у которого нет метода add_roles, вместо объекта класса Member. Произойти это может из-за того, что сообщение, которое вы ловите, находится либо в приватном канале, либо человек, который его написал, вышел из сервера. Поэтому нужно обработать данную ситуацию и сделать так:

if isinstance(message.author, discord.Member):
    await message.author.add_roles(role)

Если же вернулся User, то тут уж ничего не поделаешь.

→ Ссылка