我已经看到了这个命令
@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
所以我想知道是否有任何方法可以使机器人本身删除该机器人的上一条消息。
答案 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}")