我正在使用 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")
答案 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()