【问题标题】:How can I get the number of messages sent by a user in a discord server and store it in a list [Discord.py]如何获取用户在不和谐服务器中发送的消息数量并将其存储在列表中 [Discord.py]
【发布时间】:2022-01-04 17:11:20
【问题描述】:

我目前正在使用此代码来检查用户发送的消息数量,但这种方法非常慢,计算每个用户需要 1 - 2 分钟

user = discord.utils.find(lambda m: m.id== j, channel.guild.members)
async for message in channel.history(limit = 100000):
    if message.author == user:
        userMessages.append(message.content)
print(len(userMessages))

还有其他快速的方法吗?

【问题讨论】:

    标签: python list discord discord.py


    【解决方案1】:

    统计消息

    您可以使用on_message 事件来统计消息。

    message_count = {}
    
    @client.event
    async def on_message(message):
        global message_count
        if message.guild.id not in message_count:
            message_count[message.guild.id] = {}
        try:
            message_count[message.guild.id][message.author.id] += 1
        except KeyError:
            message_count[message.guild.id][message.author.id] = 1
        client.process_commands(message)
    
    

    然后使用

    member = something  # specify member here
    try:
        count = message_count[member.guild.id][member.id]
    except KeyError:
        count = 0
    # now `count` is count of messages from `member`
    

    获取来自成员的消息计数。
    注意:消息计数会在您的机器人重新启动时重置,但此解决方案会很快起作用。

    数据库

    另一种方法是使用任何数据库来存储来自不同成员的消息计数。

    【讨论】:

    • 将数据存储在 json 中是个好方法吗?
    • 可能适用于小型机器人。 Json 不是数据库。无论如何,如果您的机器人很大并且有很多服务器,我强烈建议您使用数据库。
    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2018-06-23
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多