discord.Guild.get_member() 未绑定方法调用 discord.py 中的参数 'self' 没有值
discord.Guild.get_member() No value for argument 'self' in unbound method call discord.py
我正在创建一个不和谐的反应机器人,它根据成员使用的反应表情符号分配角色。
我发现 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)
为了解决这个问题,我尝试在成员列表中搜索给定公会和 return 使用其成员 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 和角色名称即可。
参考我问这个问题的地方并获得解决它的帮助(以及删除反应时删除角色的代码):
我正在创建一个不和谐的反应机器人,它根据成员使用的反应表情符号分配角色。
我发现 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)
为了解决这个问题,我尝试在成员列表中搜索给定公会和 return 使用其成员 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 和角色名称即可。
参考我问这个问题的地方并获得解决它的帮助(以及删除反应时删除角色的代码):