如何检查频道是否有任何消息?不和谐.py

时间:2021-02-15 14:14:24

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

所以我现在想要实现的是,找到并编写一个代码,这样每当我清除频道时,它都会首先检查它是否有任何消息。如果没有,那么它会发送一个错误。唯一的问题是我不知道客户端是否可以先检查上面是否有任何消息。如果有人有任何想法或例子,我会很高兴知道!

答案是这样的:

    @commands.command()
    async def clear(self, ctx, *, limit=100):
        await ctx.message.delete()
        channel = ctx.channel
        messages = await channel.history(limit=123).flatten()
        if not messages:
            await ctx.channel.send("I am really sorry but I can not purge an empty channel!")
            return
        else:
            try:
                await channel.purge(limit = limit)
                return
            except discord.Forbidden:
                return await ctx.channel.send('I do not have perms')

1 个答案:

答案 0 :(得分:1)

您可以使用 messages = await channel.history(limit=123).flatten() 获取包含频道消息的列表。限制用于指定要回读的最大消息数。

您可以检查该列表是否为空以检查频道中是否有消息。

API 参考:https://discordpy.readthedocs.io/en/latest/api.html?highlight=history#discord.TextChannel.history