如何删除Discord.py上的bot先前消息

时间:2020-08-28 10:49:12

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

我已经看到了这个命令

@bot.command()
async def disappear(ctx):
    msg = await ctx.send("Hey!")
    await msg.delete(delay=1)

但是,我正在尝试删除其他功能中的“ msg”。确切地说,这是我的代码

@bot.command()
async def disappear(ctx):
    msg = await ctx.send("Hey!")
    await msg.delete(delay=1)

@bot.command()
async def somethingelse(ctx):
    await msg.delete(delay=1)

这给我一个错误

 NameError: name 'msg' is not defined

所以我想知道是否有任何方法可以使机器人本身删除该机器人的上一条消息。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

prev_msg = None

@bot.command()
async def deleteprevmsg(ctx):
    global prev_msg

    try:
        await prev_msg.delete(delay = 1)
    except:
        prev_msg = await ctx.send("No previous message found")

prev_msg = 放在每个await ctx.send()之前。请记住在使用它的每个函数中global prev_msg

答案 1 :(得分:0)

如果您不想使用全局变量,则可以获取机器人在该通道中发送的最后一条消息,然后将其删除。

@client.command()
async def somethingelse(ctx):
    channel = client.get_channel(123456789123456)  # ID of channel
    msg = await channel.history().get(author__id=123456789123456)  # ID of bot
    await msg.delete(delay=1)
    print(f"Deleted message: {msg.id}")

channel.history()