python - 反应角色 Discord.py
问题描述
@client.event
async def on_raw_reaction_add(payload):
message_id = payload.message_id
if message_id == 728213540858757152:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
if payload.emoji.name == "loud_sound":
role = discord.utils.get(message_id.guild.roles, name="DUYURU")
elif payload.emoji.name == "bee":
role = discord.utils.get(guild.roles, name="REKLAM")
else:
role = discord.utils.get(guild.roles, name=payload.emoji.name)
if role is not None:
member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
if member is not None:
await member.add_roles(role)
print(f"{member} {role} aldı!")
else:
print("Member not found")
else:
print("Role not found")
@client.event
async def on_raw_reaction_remove(payload):
message_id = payload.message_id
if message_id == 728213540858757152:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
if payload.emoji.name == "loud_sound":
role = discord.utils.get(guild.roles, name="DUYURU")
elif payload.emoji.name == "bee":
role = discord.utils.get(guild.roles, name="REKLAM")
else:
role = discord.utils.get(guild.roles, name=payload.emoji.name)
if role is not None:
member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
if member is not None:
await member.remove_roles(role)
print(f"{member} {role} aldı!")
else:
print("Member not found")
else:
print("Role not found")
我试图在我的 discord.py 机器人中加入反应角色,但它不起作用。它给了我错误:Role not found
。但我的角色列表中已经有了这个角色。我尝试使用我制作的另一个与角色相关的代码,它可以完美运行,但这也不起作用。我试图改变message_id
,channel
但也没有奏效
解决方案
根据文档
on_reaction_add
,有几个更改有 2 个参数reaction, user
,这会将您的事件侦听器更改为async def on_reaction_add(reaction, user)
其次,获取对象的 id 是通过做来完成的object.id
,所以你可以做guild = reaction.message.guild.id
。
第三,您可以使用bot.get_guild(id)
获取公会,但您不需要这样做,因为您可以从reaction.message.guild
.
推荐阅读
- r - 如何将不同方法的集群标签与 r 中的实际标签相匹配?
- python - 将带有嵌套字典的字典转换为熊猫数据框
- admob - 代号一应用和 GDPR 上的 admob 广告
- php - 预期响应代码 250 但得到代码“530”,消息“530-5.5.1 需要身份验证 - Laravel
- reactjs - 如何在 React Typescript 中实现输入对话框
- colors - 更改另一个应用程序的背景颜色
- elasticsearch - jhipster:弹性搜索节点不可用
- javascript - 将对象推入循环内的数组中
- java - 使用比较器返回具有 max 属性的值列表
- azure - Power BI 中字符串变量的实时流式处理