微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我想删除每条消息直到 10 秒前

如何解决我想删除每条消息直到 10 秒前

标题主要是这样说的,我尝试了各种方法,我尝试将变量设置为 1 并将每条消息附加到列表中,然后在 10 秒后说列表 = [],我从 pyhton discord 服务器获得了帮助,但是它最后没有用,然后我在文档上看到有办法在某个日期后删除消息,但我不知道如何将其设置为 10 秒前,所以我问是否有人对此有任何想法怎么做,我的代码

@commands.cooldown(rate=1,per=25,type=commands.BucketType.user)
async def king_crimson(ctx):
    kingcrimson = discord.utils.get(ctx.guild.roles,id=817441099173199923)
    if kingcrimson in ctx.author.roles:
        kc_list = []
        kc_ability = []
        await ctx.channel.purge(limit=1)
        kc_embed = discord.Embed(title="King Crimson activated!",colour=discord.Colour(0xb90d0d))
        await ctx.author.send(embed=kc_embed)
        kc_ability = 1
        await asyncio.sleep(10)
        kc_ability = 0
        kc_embed2 = discord.Embed(title="Time has skipped!",colour=discord.Colour(0xb90d0d))
        await ctx.author.send(embed=kc_embed2)
        await ctx.channel.purge(after=10)

基本上当命令被触发时,它会等待 10 秒,然后在这 10 秒内删除每条消息

解决方法

当命令被调用时,将当前时间存储为一个日期时间对象:

import datetime

start_time = datetime.datetime.now()

await asyncio.sleep(10)

now = datetime.datetime.now()
await ctx.channel.purge(before=now,after=start_time,bulk=True)

您还应该指定 bulk=True,以便一次性删除所有消息。您可能还想设置一个检查,以便不会删除机器人消息。您可以找到有关清除命令 here 的更多信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。