JavaScript (Discord) Есть ли способ для моего бота сохранить значения и затем повторить? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть текущий проект Discord Bot, использующий JavaScript, однако я не могу найти способ сохранить само значение, когда оно выполняется с помощью команды, такой как !setname ___, в надежде получить ответ, который повторяется при использовании !myname.

Я знаю, как сделать это путем временного хранения:

bot.on('message', function (user, userID, channelID, message, evt) {
     if(message == "!myname") {
     bot.sendMessage({
                    to: channelID,
                    message: 'Your name is  ' + user.username; 
                });
    }
}

Однако я не могу понять, как это сделать, используя возможность вызывать его всякий раз, когда вы хотите, а не получать немедленныйответ.Например, установить мое имя сейчас, но иметь возможность выводить его, когда я использую команду вместо команды, которая устанавливает значение, а затем выводит ее в виде строки

1 Ответ

0 голосов
/ 12 февраля 2019

Рекомендовал бы простой стиль словаря значения ключа в текущем экземпляре.
(Хотя вы можете сохранить его в текстовом файле или базе данных позже, если вы предпочитаете, чтобы данные были постоянными в разных сеансах.)

На основе экземпляра:

Основано на этом посте на stackoverflow ...

Вы можете создать глобальный словарь вверху
var usernameChangeDict = {};

Всякий раз, когда пользователь вызывает !setname, просто сделайте:
usernameChangeDict[user.id] = Their_new_name_here

Получить его обратно, используя usernameChangeDict[user.id], должно вернуть null или пусто, если они не установили свое имя ранее.

Постоянные данные:

Можно сохранить их в текстовом файле на локальном компьютере или создать базу данных, как упоминал Зооли.
(Хотя лично база данных будет излишней.если ваш бот не будет использоваться широким кругом людей.)

Текстовый файл

Чтение из этого поста , он содержитподробности о том, как писать в текстовый файл.
Этот пост говорит о чтении изma text file.

Я бы порекомендовал хранить его в формате JSON, чтобы упростить вам жизнь, поскольку существует JSON.parse.

Скорее всего, вы в конечном итоге сохранитев таком формате:
{ "23125167744": "someone", "USER_ID": "username" }

Доступ к нему по parsedJson["USER_ID"].

SQLite

This учебник, вероятно, объяснит, как настроить ваш SQLite для javascript лучше, чем я.

После того, как все настройки выполнены, просто сохраните ID пользователя и имя пользователя, вы можете просто сделать:
SELECT username FROM yourTable WHERE userID = ?;
и
INSERT INTO yourTable (username, userID) VALUES (?, ?);
Для вставки и выбора в базе данных соответственно.

...