如何让我的 discord.py 机器人只允许来自管理员和模组的 @everyone 和 @here,而不是来自普通成员的

Posted

技术标签:

【中文标题】如何让我的 discord.py 机器人只允许来自管理员和模组的 @everyone 和 @here,而不是来自普通成员的【英文标题】:How to make my discord.py bot only allow @everyone and @here from only admins and mods and not from normal members 【发布时间】:2021-10-15 19:46:24 【问题描述】:
import discord
from discord.ext import commands 

bot = discord.Bot(command_prefix='!')

@bot.event
@commands.has_permissions(administrator=False)
async def delmessage(message):
 await message.delete()

【问题讨论】:

在服务器频道的设置中禁用@所有人和@这里权限,并且只为管理员和模组启用它 【参考方案1】:

正如stijndcl 在评论中解释的那样,最好的解决方案是直接进入您的服务器设置,只允许管理员和版主使用@everyone@here

如果您仍想使用机器人,可以使用on_message 处理程序轻松完成某些操作,然后检查消息作者的角色以删除或保留消息。

这种方法的问题是过滤过程是在消息发布之后完成的,因此删除未经授权的 ping 会创建ghost pings,因此会给您的服务器成员带来糟糕的体验(以及为什么当存在用于此确切目的的设置时会打扰)。

【讨论】:

以上是关于如何让我的 discord.py 机器人只允许来自管理员和模组的 @everyone 和 @here,而不是来自普通成员的的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的 discord.py 机器人提及我的消息中提到的某人?

如何让我的 discord.py 机器人识别它正在被 ping

如何让我的 discord.py 机器人在语音频道中播放 mp3?

Discord.py 机器人:如何让我的不和谐机器人向我发送对用户在 DM 中使用的命令的响应,例如进行调查?

Discord.py - 如果命令被编辑,让我的机器人编辑他的响应

我该怎么做才能让我的机器人再次工作? discord.py [关闭]