我有当前的使用JavaScript的Discord Bot项目,但是当通过concat
之类的命令完成操作时,我无法找到一种存储值本身的方法,希望当我使用{{1 }}。
我知道如何通过以下方式临时存储它:
!setname ___
但是,我无法通过在需要时调用它来解决问题,而不是立即得到答复。例如,现在设置我的名字,但是当我使用命令而不是使用命令来设置值然后将其输出到立即字符串中时能够输出它
答案 0 :(得分:0)
建议在当前实例中使用简单的键值字典样式。
(不过,如果您希望数据可以在不同会话之间保持不变,则可以稍后将其存储到文本文件或数据库中。)
基于this post,基于stackoverflow ...
您可以在顶部创建全局词典
var usernameChangeDict = {};
每当用户调用!setname
时,请执行以下操作:
usernameChangeDict[user.id] = Their_new_name_here
使用usernameChangeDict[user.id]
取回,应该返回null
,如果他们之前未设置名称,则应该为空。
既可以将其存储在本地计算机上的文本文件中,也可以像Zooly提到的那样建立数据库。
(尽管就个人而言,如果您的机器人不被广泛使用,那么数据库将是一个过大的杀伤力。范围的人。)
文本文件
从this post中读取内容,其中包含有关如何写入文本文件的详细信息。
This post谈论从文本文件读取。
由于JSON.parse
存在,我建议您以JSON格式存储它,以使您的生活更轻松。
您很可能最终会以如下格式存储:
{ "23125167744": "someone", "USER_ID": "username" }
通过parsedJson["USER_ID"]
访问它。
SQLite
This教程可能会比我更好地解释如何为JavaScript设置SQLite。
完成所有设置后,只需存储用户ID和用户名即可:
SELECT username FROM yourTable WHERE userID = ?;
和
INSERT INTO yourTable (username, userID) VALUES (?, ?);
用于分别插入和选择到数据库中。