Бот для discord на python добавляет роли, но не убирает их
Бот использует реакции и добавляет роли, но если убирать реакцию, он пишет Member not found (прикрепляю код):
@client.event
async def on_raw_reaction_remove(payload):
message_id = payload.message_id
if message_id == 822401200942350336:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)
if payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=788080179624149002)
elif payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=788080230182682634)
elif payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=790238512774512660)
else:
role = None
if role is not None:
member = guild.get_member(payload.user_id)
if member is not None:
await member.remove_roles(role)
print("done")
else:
print("Member not found")
else:
print("Role not found")
Ошибки нет, только выводит ответы, сначала done при получении роли и Member not found при удалении роли:
Stupid_bot присоединился к Discord!
done
Member not found
Ответы (1 шт):
Автор решения: DeNRouN
→ Ссылка
Попробуй так:
@client.event
async def on_raw_reaction_remove(payload):
message_id = payload.message_id
if message_id == 822401200942350336:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)
if payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=788080179624149002)
elif payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=788080230182682634)
elif payload.emoji.name == '?':
role = discord.utils.get(guild.roles, id=790238512774512660)
else:
role = None
if role is not None:
member = utils.get(message.guild.members, id=payload.user_id)
if member is not None:
await member.remove_roles(role)
print("done")
else:
print("Member not found")
else:
print("Role not found")