如何获取此命令以检查不仅在一个通道中全局发送的消息

时间:2020-09-07 06:39:18

标签: discord discord.py-rewrite

我一直在尝试使用此命令来检查整个服务器中用户发送的所有消息是否存在时间。我想到了一个命令,该命令仅检查用户在1个通道中发送的消息。

@client.command(aliases=["m"])
async def messages(ctx, user: discord.Member):
    channel = ctx.message.channel
    counter = 0
    async for message in channel.history():
        if message.author == user:
            counter += 1

1 个答案:

答案 0 :(得分:0)

请注意,无论您如何执行此操作,如果您使用的是ENTIRE服务器历史记录,该机器人都将花费一些时间来浏览所有内容。知道了这一点,如果您仍然希望这样做,那么这里是一个解决方案。

@client.command(aliases=["m"])
async def messages(ctx, user: discord.Member):
    counter = 0
    for channel in guild.channels:
        if isinstance(channel, discord.TextChannel):
            async for message in channel.history(limit=None):
                if message.author.id == user.id:
                    counter += 1

还请注意,我在比较ID而不是成员对象本身,这是因为该对象可以更改,这只是防止了这种情况。