【问题标题】:How do I make my discord.py bot count the amount of messages sent by a certain person?如何让我的 discord.py 机器人计算某个人发送的消息量?
【发布时间】:2021-04-09 05:56:24
【问题描述】:

我正在尝试制作一个类似于 mee6 的 Discord 机器人,因为它会以一定的时间间隔计算用户在我的 Discord 服务器中发送的消息。我已经在网上搜索过,即使有类似的问题,也找不到我要找的东西。例如,我能够找到一些代码来计算在一个特定通道中发送的消息数量。我还能够找到我基本上正在寻找的东西,即在公会中发送的全部消息,但它是用 Java 编写的。我希望这能缩小我的问题范围,并提前感谢您。

【问题讨论】:

标签: discord.py


【解决方案1】:

您可以将作者和消息计数存储在Dictionary 中,如下所示:

messageCount = {}

@client.event
async def on_message(ctx):
    author = str(ctx.author)
    if author in messageCount:
        messageCount[author] += 1
    else:
        messageCount[author] = 1
    
    await client.process_commands(ctx)

所以,字典看起来像这样:

messageCount = {
    'user#1532': 52,
    'user#0864': 742,
    'user#0067': 662,
    ...
}

注意:一旦机器人离线,所有数据都将被删除,因此将这些数据存储在外部文件或数据库中会更安全。我希望这个答案能给你一个关于如何开始的要点。

【讨论】:

  • 完美!我是根据 mee6 手动输入所有值的,但这让它变得容易多了。它还回答了我要搜索的另一个问题。再次感谢!
  • @AdrianMaciuca 没有问题!如果有帮助,请将其标记为解决方案。
  • 所以当我尝试实现它时,如果没有用户以前的数据,它不会将它们添加到字典中,但不会返回任何错误。然后我手动将自己添加为 0,它不会改变。我想我在这里遗漏了一些东西,但你能再帮我一次吗?再次感谢。
  • @AdrianMaciuca 到底发生了什么?我在回答之前测试了我的代码,它工作正常。您可以尝试在await client.process_commands(ctx) 之前添加print(messageCount)。它会告诉你里面有什么。
猜你喜欢
  • 2022-01-03
  • 2019-09-19
  • 2021-01-27
  • 2020-11-04
  • 1970-01-01
  • 2021-01-26
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多