在discord.py中如何删除其他人的所有消息

时间:2021-03-16 03:14:44

标签: python-3.x discord discord.py

我想让机器人删除特定服务器或频道的机器人的所有消息。

但我可以找到删除事件消息或删除频道消息。

import asyncio
@client.event
async def on_message(message):
    content = message.content
    guild = message.guild
    author = message.author
    channel = message.channel
    if content == "!delete":
        await #delete all bot's message

2 个答案:

答案 0 :(得分:0)

可以使用 channel.purge

删除特定频道中所有机器人的消息
async def on_message(message):
   channel = message.channel
   if message.content == '!delete':
      if len(message.mentions) == 0:
         await channel.purge(limit=100, check= lambda x: x.author.id == client.user.id)
      else:
         mentioned = message.mentions[0]
         await channel.purge(limit=100, check= lambda x: x.author.id == mentioned.id)

如果你想删除所有频道中的消息,只需用guild.channels循环它

参考:

注意: check 函数应该返回一个布尔值,告诉 use 我们是否应该删除消息,并以消息为参数。

答案 1 :(得分:0)

如果您想删除特定频道中的所有消息:


guilds_list = [CHANNEL_ID, CHANNEL2_ID, CHANNEL3_ID]
@client.event
async def on_message(message):
    if message.channel.id in guilds_list:
        await message.delete()

现在机器人将删除特定频道中的所有消息,如果您只想删除机器人的消息:

@client.event
async def on_message(message):
    if message.channel.id in guilds_list and message.author is client.user:
        await message.delete()

注意:这个过程是自动的。因此,bot 会删除它发送到特定频道的每条消息。