我正在尝试在我的机器人中创建一个命令,该命令将仅删除所有机器人的消息。有没有办法迭代所有频道的消息,如果它是机器人发送的消息,机器人会删除它?我已经理解delete_message
但我无法弄清楚如何进行所有频道的消息迭代,如果可能的话。
以下代码不会遍历所有频道的消息,但如果作者ID为383804325077581834
,则会删除该消息:
@bot.event
async def on_message(message):
if message.author.id == '383804325077581834':
await bot.delete_message(message)
383804325077581834
是我的机器人ID。所以我想知道如何迭代所有频道消息并删除我的机器人发送的消息。非常感谢你!
编辑:尝试这样做:
@bot.command(pass_context=True)
async def delete(ctx, number):
msgs = []
number = int(number)
async for msg in bot.logs_from(ctx.message.channel, limit=number):
if msg.author.id == '383804325077581834':
msgs.append(msg)
await bot.delete_messages(msgs)
但我收到错误discord.ext.commands.errors.MissingRequiredArgument: number is a required argument that is missing.
答案 0 :(得分:0)
@bot.command(pass_context=True)
async def delete(ctx):
msgs = []
async for msg in bot.logs_from(ctx.message.channel):
if msg.author.id == '383804325077581834':
msgs.append(msg)
await bot.delete_messages(msgs)
您尝试使用的命令需要一个数字参数,该参数会从通道中删除该数量的消息 如果没有传入限制,则logs_from函数将删除该通道中的所有消息。
编辑:忘记删除号码,哎呀。