'NoneType' object has no attribute 'remove_roles'
роли выдаёт, а когда убираешь реакцию с сообщения, выдаёт ошибку "'NoneType' object has no attribute 'remove_roles'", нигде не могу найти, как пофиксить Код:
import discord
intents = discord.Intents.default()
intents.members = True
client = discord.Client()
from discord import user
@client.event
async def on_raw_reaction_add(payload):
if payload.message_id == 1003651093206663210 and payload.emoji.name == "✅":
guild = discord.utils.get(client.guilds, id=payload.guild_id)
role = discord.utils.get(guild.roles, name='╬ㅤㅤㅤヾ(≧▽≦*)oㅤㅤㅤ╬')
await payload.member.add_roles(role)
@client.event
async def on_raw_reaction_remove(payload):
if payload.channel_id == 938726443842682892 and payload.emoji.name =="✅":
guild = discord.utils.get(client.guilds, id=payload.guild_id)
role = discord.utils.get(guild.roles, name='╬ㅤㅤㅤヾ(≧▽≦*)oㅤㅤㅤ╬')
await payload.member.remove_roles(role)
UPD Пофиксил добавив: client = commands.Bot(command_prefix="!", intents=intents)
Ответы (1 шт):
Автор решения: Dmitry
→ Ссылка
Ничего не понимаю в ботах, но ошибка дает представление, что этого можно избежать, добавив проверку для payload.member
role = discord.utils.get(guild.roles, name='╬ㅤㅤㅤヾ(≧▽≦*)oㅤㅤㅤ╬')
if payload.member:
await payload.member.remove_roles(role)
UPD
По конкретнее решение вопроса можно найти здесь enSO, автор ответа Dominik
Код с включенными отладочными print'ами
@client.event
async def on_raw_reaction_remove(payload):
guild = client.get_guild(payload.guild_id)
print("Guild checked.")
member = discord.utils.get(guild.members, id=payload.user_id)
print("Member checked.")
if payload.message_id == 865402961585111111:
print("Got message.")
if str(payload.emoji) == "✅":
print("Checked for the reaction.")
role = discord.utils.get(guild.roles, name='Announcements')
print("Got the role.")
else:
role = discord.utils.get(guild.roles, name=payload.emoji)
if role is not None:
await member.remove_roles(role)
print("Removed the role")