首页 > 解决方案 > 如何将我的收集器数据添加到变量中并在文件外部使用它?

问题描述

相关问题Discord.js

我只是想问一下,如何将我的收集器数据添加到变量中并在文件外部使用它,例如在 index.js 上使用它。我只想创建一个设置命令,当用户键入时-setup,它会自动提出一些问题并将这些答案存储到变量中,并根据这些变量将这些变量添加到主文件中。

基本上我有三个问题:

1. 我如何向用户提出多个问题。

2. 如何将这些问题存储在变量中并在文件外部使用它

3. 如果用户已完成设置,我该如何过滤。

我在做什么:我正在开发一个欢迎消息机器人,当我们将他添加到我们的服务器时它的作用是什么,管理员必须设置这个机器人来为您的服务器设置欢迎消息。管理员必须使用-setup 命令,这个-setup 命令有什么作用?这个命令添加了一堆问题,什么是频道 ID,你的消息是什么,你的邀请图片是什么等,在获得这些答案后,他将在他/她提供的频道中设置一条欢迎消息,这条消息将来自嵌入所以我必须从用户那里获得嵌入标题、头像、描述。

最后一个问题:我需要为此设置一个数据库吗?

标签: javascriptdatabasediscord.jscollectors

解决方案


  1. 查看有关等待消息的 Discord.js 文档。您可以通过更改过滤器来等待来自特定用户的消息,以将发送命令的人与收到的消息进行比较。
  2. 获取您存储答案并使用的变量,该变量JSON.stringify(variable)会将其转换为文本,然后您可以使用fs 模块将其写入文件
const fs = require('fs')

fs.writeFile('/Users/joe/test.json', variable, err => {
 if (err) {
   console.error(err)
   return
 }
 //file written successfully
})

要从中读取,只需使用var answers = JSON.parse(fs.readFileSync('file', 'utf8'));

  1. 有很多方法可以做到这一点。如果您为每个用户存储一个文件,您只需检查是否存在具有用户/服务器 ID 的文件。
fs.stat('test.json', function(err, stat) {
   if(err == null) {
       console.log('File exists');
   } else if(err.code === 'ENOENT') {
       // file does not exist
       fs.writeFile('log.txt', 'Some log\n');
   } else {
       console.log('Some other error: ', err.code);
   }
});

你是否需要一个数据库真的取决于你的机器人的规模,我以前从来不需要数据库,但我不写主要的机器人。在某些时候,我建议研究如何使用一个。我在整个过程中也包含了更详细的解释和文档的链接,如果您感到困惑,请务必查看这些链接。


推荐阅读