我想让机器人删除特定服务器或频道的机器人的所有消息。
但我可以找到删除事件消息或删除频道消息。
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
答案 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 会删除它发送到特定频道的每条消息。