删除频道

时间:2017-12-02 11:06:52

标签: python-3.x discord.py

我正在尝试在我的机器人中创建一个命令,该命令将仅删除所有机器人的消息。有没有办法迭代所有频道的消息,如果它是机器人发送的消息,机器人会删除它?我已经理解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.

1 个答案:

答案 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函数将删除该通道中的所有消息。

编辑:忘记删除号码,哎呀。