python - 如何检查消息作者的角色 + 如何在 Discord.py 上 DM 特定角色?
问题描述
所以我正在制作一个 Discord 机器人,当有人违反规则时,它会 DM 扮演 mod 类型的角色。这是我的第一个 discord 机器人,并且真的刚刚离开了 GitHub 上的示例。我似乎找不到如何检查角色或 DM 每个角色。我发现了类似的东西
if message.author.server_privileges("kick_members"):
还有检查角色的东西。虽然它总是说“成员没有属性'server_privileges”或类似的东西。无论如何,我希望你们能帮助我。这些是我需要完成的最后一件事。这是我的代码:
class MyClient(discord.Client):
async def on_ready(self):
print("")
print('Logged on as', self.user)
async def on_message(self, message):
reasons = []
# don't respond to ourselves
if message.author == self.user:
return
if CheckBot.susCheck(self, message.content, susWords):
reasons.append("Being sus")
# DM staff, admins, and headstaff
report = "Caught " + str(message.author) + " being sus with the following message: \n" + message.content
print("")
print("####################-END-####################")
print("")
print(report)
if CheckBot.badCheck(self, message.content, badWords):
reasons.append("Saying bad words")
# DM staff, admins and headstaff
report = "Caught " + str(message.author) + " saying bad words with the following message: \n" + message.content
print("")
print("####################-END-####################")
print("")
print(report)
if #Check if message author has certain role:
if CheckBot.spamCheck(self, message.content, 100000000000000000):
reasons.append("Spam")
# DM staff, admins, and headstaff
report = "Caught " + str(message.author) + " spamming with the following message: \n" + message.content
print("")
print("####################-END-####################")
print("")
print(report)
else:
if CheckBot.spamCheck(self, message.content, 55):
reasons.append("Spam")
# DM staff, admins, owner, and headstaff
report = "Caught " + str(message.author) + "spamming with the following message: \n" + message.content
print("")
print("####################-END-####################")
print("")
print(report)
CheckBot 是我创建的一个类,其中包含检查某人是否违反规则的功能。你推荐的任何东西都会很棒,而且很有帮助。
解决方案
您可以获取一个discord.Role
实例Guild.get_role
并将其与in
关键字 with进行比较Member.roles
role = message.guild.get_role(ROLE_ID_HERE)
if role in message.author.roles:
# Has the role, do something here
参考:
推荐阅读
- java - Android 应用程序具有外部 SD 卡写入权限,但我仍然无法修改文件
- flutter - 无需每次调用 `of(context)` 的本地化
- java - 有没有办法在junit和黄瓜中使用surefire-plugin报告?
- python - 我的 wx.OnPaint() 函数不会在 wx 主循环中不断调用
- perl - 从 rhel6 升级到 rhel8 后 Perl 代码崩溃
- python - python - pickle 引发“没有剩余空间”错误的原因?
- tslint - 打字稿:如何抑制任何分号警告
- codeigniter - 一个字段有 2 个可调用的表单验证规则
- python - Docker - 在服务之间共享本地存储
- javascript - 如何在重定向时重新渲染 React 组件