在某个discord.py通道中阻止命令

时间:2018-09-10 23:49:15

标签: python python-3.x 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条消息(该命令+机器人回复)。

1 个答案:

答案 0 :(得分:0)

您可以这样做

@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_bots ID列表中。