gpt4 book ai didi

python - 有没有办法禁止在 say 命令中使用@everyone 或@here

转载 作者:行者123 更新时间:2023-12-01 21:30:52 24 4
gpt4 key购买 nike

我有一个有 say 命令的机器人,我想将这个命令公开给所有人,但一个可能的风险是他们可以通过机器人的消息。

如果有人有办法缓解这种情况并防止机器人对每个人执行 ping 操作,请告诉我。

我的代码:

@bot.command()
@commands.has_guild_permissions(administrator=True)
async def say(ctx, *, message=None):
message = message or "Please say something to use the say command!"
await ctx.message.delete()
await ctx.send(message)

最佳答案

您可以通过多种方式创建它,但一种方式是在此处使用 commands.check() 装饰器:

def not_everyone(ctx):
return not any(m in ctx.message.content for m in ["@here", "@everyone"])

@bot.command()
@commands.has_guild_permissions(administrator=True)
@commands.check(not_everyone) # Note you don't call the function - just pass it in
async def cmd(ctx):
# Do stuff

引用资料:

  • Checks in d.py

  • any()

  • Message.content

  • Message.mention_everyone - 也可用于检查 @everyone/@here 是否在消息中。这取决于偏好。然而,关于这个属性的一个小提示:

    “这不会检查@everyone 或@here 文本是否在消息本身中。相反,此 bool 值指示@everyone 或@here 文本是否在消息中并且它最终提到了。”

关于python - 有没有办法禁止在 say 命令中使用@everyone 或@here,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62456368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com