首页 > 解决方案 > 阻止某个 discord.py 频道中的命令

问题描述

所以我最近添加了这段代码

@bot.event
async def on_message(message):
    prefix = re.findall('([;]|[-]|[=]+)', message.content.lower())
    if prefix and message.channel.id == "405815888177266689":
             await bot.delete_message(message)

机器人确实删除了消息,但机器人检测到命令太快,因此其他机器人回复。我想让它在其他机器人无法回复的地方。我要问的是 - 是否可以基本上将清除添加到此命令以使其清除最近的 2 条消息(命令 + 机器人回复)。

标签: pythonpython-3.xdiscord.py

解决方案


你可以做这样的事情

@bot.event
async def on_message(message):
  prefix = re.findall('([;]|[-]|[=]+)', message.content.lower())
  if prefix and message.channel.id == "405815888177266689":
    await bot.delete_message(message)

    muted_bots = ['bot_1_id','bot_2_id']
    async for msg in bot.logs_from(bot.get_channel("405815888177266689"), limit=4):
      if msg.author.id in muted_bots:
        await bot.delete_message(msg)

在某人使用该前缀写了一条消息并被删除后,它会检查最后的消息数量(无论您放置什么limit,取决于有多少机器人响应)并检查写该消息的人是否在您的muted_botsid 列表中。


推荐阅读