python - discord.Guild.get_member() 在未绑定的方法调用 discord.py 中参数“self”没有值
问题描述
我正在创建一个不和谐反应机器人,它根据他们使用的反应表情符号分配成员角色。
我发现discord.utils.find
在本地运行应用程序时按预期工作,但当应用程序托管在 Heroku 或 ibmcloud 上时找不到成员。
@client.event
async def on_raw_reaction_remove(payload):
message_id = payload.message_id
#...
#...
#...
# payload.member is not available for REACTION_REMOVE event type
member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
member2id = int(payload.user_id)
GetMember = discord.Guild.get_member()
RoleLoser = GetMember(member2id)
为了解决这个问题,我试图在成员列表中搜索给定的公会并使用他们的成员 ID 返回成员。但是运行上面会提示以下参考这一行GetMember = discord.Guild.get_member()
No value for argument 'self' in unbound method call
No value for argument 'user_id' in unbound method call
非常感谢任何帮助!
解决方案
InsertCheesyLine 是正确的。这是工作代码:
@client.event
async def on_raw_reaction_add(payload):
# channel and message IDs should be integer:
if payload.channel_id == 700895165665247325 and payload.message_id == 757114312413151272:
if str(payload.emoji) == "<:Apex:745425965764575312>":
guild = client.get_guild(payload.guild_id)
member = guild.get_member(payload.user_id)
role = get(payload.member.guild.roles, name='Apex')
await payload.member.add_roles(role)
print(f"Assigned {member} {role}.")
我添加了一个打印语句,当用户被分配一个角色时发送到控制台。只需替换 id 和角色名称即可。请参阅我在哪里提出这个问题并获得帮助解决它(连同删除反应时删除角色的代码):当用户对某个频道中的消息做出反应时分配不和谐角色
推荐阅读
- react-native - 如何在不使用 base64 的情况下从 react-native 上传图片?
- java - Maven在windows上生成的JAR在linux上找不到find main
- javascript - 在 Angular 和 RxJS 6 中使用不同的页码参数调用相同的 HTTP 服务
- javascript - 如何在流星上的 HTML 上显示另一个数组中的数组中的项目?
- node.js - 将参数传递给组合的 npm 脚本
- javascript - 如何通过字符串字段查询 Firestore 以获取文档(搜索引擎友好的 Slug)
- ios - UIScreenEdgePanGestureRecognizer 补偿移动覆盖
- python - 下一个状态未定义的机器人 Q 学习算法
- angular - GroupBy 'rxjs/operators' 以角度 6 排列键和值数组
- ssis - 使用 SSIS 动态加载数千个文件