Ошибка при добавлении ролей реакции в discord.py

Я пытаюсь добавить роль в реакции, и, похоже, она работает нормально до того момента, когда я пытаюсь назначить или удалить роль, я получаю неопределенную ошибку, и я не знаю, как ее отлаживать

Это мой код:

# Events @self._client.event async def on_raw_reaction_add(payload: discord.RawReactionActionEvent): if payload.user_id == self._client.user.id: return await self.on_reaction_add(payload.message_id, payload.user_id, payload.channel_id, payload.guild_id, payload.emoji) @self._client.event async def on_raw_reaction_remove(payload: discord.RawReactionActionEvent): if payload.user_id == self._client.user.id: return await self.on_reaction_remove(payload.message_id, payload.user_id, payload.channel_id, payload.guild_id, payload.emoji) # Other methods async def on_reaction_add(self, message_id: int, user_id: int, channel_id: int, server_id: int, emoji: str): await self.on_reaction(message_id, user_id, channel_id, server_id, emoji, True) async def on_reaction_remove(self, message_id: int, user_id: int, channel_id: int, server_id: int, emoji: str): await self.on_reaction(message_id, user_id, channel_id, server_id, emoji, False) async def on_reaction(self, message_id: int, user_id: int, channel_id: int, server_id: int, emoji: str, add: bool): result = self._database.find_reaction_role(str(server_id), str(channel_id), str(message_id), emoji) print(result) if result is not None: server = await self._client.fetch_guild(server_id) # type: discord.Guild role = server.get_role(int(result.role_id)) # type: discord.Role user = server.get_member(user_id) if user is None: user = await server.fetch_member(user_id) # type: discord.Member if user is not None and role is not None: if add: await user.add_roles(role, reason=»reaction») else: await user.remove_roles(role, reason=»reaction»)

Он не работает в последней строке с этой ошибкой на консоли:

ERROR: root: on_raw_reaction_add

Я не думаю, что вам следует использовать on_raw_reaction_ и on_reaction_ одновременно, я рекомендую использовать raw для ролей реакции, поскольку on_reaction_add работает только с кешированными сообщениями   —  person freakrho    schedule 25.03.2021

on_reaction — это внутренний метод, вызываемый из on_raw_reaction_add и on_raw_reaction_remove   —  person freakrho    schedule 25.03.2021

да, но on_reaction_ также является событием, вызываемым при добавлении / удалении реакции, поэтому ошибка может заключаться в том, что она вызывается дважды, один раз вашим кодом в raw_reaction_ и один раз через событие Но я не уверен   —  person freakrho    schedule 25.03.2021

он не определен как событие и не печатается дважды, поэтому я полагаю, что проблема здесь не в этом   —  person freakrho    schedule 25.03.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!