python - 在 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_reaction_add
类中的所有其他函数,并且可能缺少self
参数,这将是我的猜测
推荐阅读
- angular - 指令的onInit方法在父元素隐藏再显示时被多次调用
- python - 在python中将timedelta转换为int非常慢
- vb.net - 在没有 Dispose 事件处理程序的情况下处理应用程序关闭事件
- lldb - 如何在LLDB中列出更多行代码
- xaml - Xamarin FontAwesome 无法从后面的代码中工作
- javascript - 我对换能器的理解正确吗?
- android - Android Room 迁移未正确处理(错误的列顺序)
- package - 无法在 Julia 中使用 FITSIO
- java - 什么相当于 Swift 或 Objective C 中的 java ByteBuffer?
- python - Python-OpenCV 查找矩形并裁剪图像