首页 > 解决方案 > 在 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

标签: pythonpython-3.xdiscord.py

解决方案


也许发生错误是因为你没有得到on_reaction_add类中的所有其他函数,并且可能缺少self参数,这将是我的猜测


推荐阅读