如何删除不和谐机器人在一段时间后发送的消息? (不和谐.py)

时间:2021-01-02 22:38:48

标签: python discord discord.py

我正在使用 python 制作一个不和谐的机器人,它将每隔几秒钟发送一次某些消息。所以它不会弄乱频道,我希望它删除它在 while 循环开始时最后发送的消息,用新消息替换这些消息。

我不知道该怎么做,任何帮助将不胜感激:)

@bot.command()
async def start(ctx):
    await ctx.send("Bot Started.")
    global bot_status
    bot_status = "running"
    while bot_status == "running":
        if bot_status == "stopped":
            break

        time.sleep(10)

        #delete
        #delete
        #delete

        await ctx.send("test")
        await ctx.send("test")
        await ctx.send("test")

1 个答案:

答案 0 :(得分:0)

.send() 函数有一个名为 delete_after 的参数。您可以使用它在特定时间后删除消息。此外,您可以使用布尔值来代替字符串。

@bot.command()
async def start(ctx):
    await ctx.send("Bot Started.")
    global bot_status
    bot_status = True
    while bot_status == True:
        if bot_status == False:
            break
        await ctx.send("test", delete_after=11)
        await ctx.send("test", delete_after=11)
        await ctx.send("test", delete_after=11)
        await asyncio.sleep(10)

或者,您可以使用 Message.delete。为此,您必须将发送的消息分配给变量。

@bot.command()
async def start(ctx):
    await ctx.send("Bot Started.")
    global bot_status
    bot_status = True
    while bot_status == True:
        if bot_status == False:
            break
        msg1 = await ctx.send("test")
        msg2 = await ctx.send("test")
        msg3 = await ctx.send("test")
        await asycnio.sleep(10)
        await msg1.delete()
        await msg2.delete()
        await msg3.delete()