计算使用discord.js发送消息的次数

时间:2019-07-19 22:43:06

标签: javascript discord discord.js

我只是想知道是否有一种方法可以计算我的Discord服务器中已发送消息的次数,因此该机器人可以发送消息。我是编码的新手,所以我不了解很多事情。预先谢谢你!

2 个答案:

答案 0 :(得分:0)

如果未创建一个队列系统,以确保不会同时对文件进行多次读写操作,那么

JSON很容易损坏。出于您想要的目的,我将使用SQLite之类的东西,它需要最少的设置,易于学习,并且具有诸如Keyv和Sequelize这样的易于使用的帮助程序框架。

Here是如何在nodejs运行时环境中使用sqlite的很好指南。

答案 1 :(得分:-1)

说明

要存储公会中发送的邮件数量,您必须以某种方式跟踪计数。每次发送消息时,您可以将其增加1。然后,根据用户的请求,您可以显示该数字。

一个简单的选择是将每个公会的“消息计数”存储在JSON文件中。但是,这将极大地影响性能。考虑一个具有更快,更可靠的速度的数据库。

示例设置

在使用此系统之前,请创建带有空白对象(guilds.json)的{}文件。

声明必要的变量...

const fs = require('fs'); // fs is the built-in Node.js file system module.
const guilds = require('./guilds.json'); // This path may vary.

将系统添加到message事件侦听器...

client.on('message', message => {
// If the author is NOT a bot...
  if (!message.author.bot) {
    // If the guild isn't in the JSON file yet, set it up.
    if (!guilds[message.guild.id]) guilds[message.guild.id] = { messageCount: 1 };
    // Otherwise, add one to the guild's message count.
    else guilds[message.guild.id].messageCount++;

    // Write the data back to the JSON file, logging any errors to the console.
    try {
      fs.writeFileSync('./guilds.json', JSON.stringify(guilds)); // Again, path may vary.
    } catch(err) {
      console.error(err);
    }
  }
});

在命令中使用系统...

// Grab the message count.
const messageCount = guilds[message.guild.id].messageCount;

// Send the message count in a message. The template literal (${}) adds an 's' if needed.
message.channel.send(`**${messageCount}** message${messageCount !== 1 ? 's' : ''} sent.`)
  .catch(console.error);