Как я могу создать диск-бот, который будет сообщать пользователю определенный код, когда он запускает команду? Вроде как генератор аккаунта - PullRequest
0 голосов
/ 24 июня 2019

Итак, в основном я пытаюсь создать код для своего бота discord.js, который будет сообщать пользователям Steam-ключ при выполнении определенной команды.Мне пришла в голову идея, когда я хотел предоставить VIP-членам особую функцию, позволяющую им получать ключ Steam каждый день, просто используя простую команду, чтобы мои личные сообщения не получали спам.Я буду предоставлять паровые ключи.Функция должна сообщать уникальный ключ steam каждому пользователю, использующему команду, и не должна сообщать один и тот же ключ разным пользователям.Я кодировал так много других команд, но эта действительно беспокоит меня, я не могу понять, как я могу создать такую ​​функцию.Пожалуйста, помогите.

Так что это в основном для моего сервера разногласий и должно быть закодировано в discord.js.Я могу создать код, но меня беспокоит то, что я не могу остановить повторение клавиш ...

1 Ответ

0 голосов
/ 24 июня 2019

Пояснение

Как Рикки Мо прокомментировал,

Поддерживать пул неотправленных ключей и таблицу пользователей с ключамиони попали в базу данных.

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

Реальная база данных - намного лучший вариант, чем файл JSON, но ваши возможные варианты слишком великив одном простом примере.


Пример настройки

keys.json:

{
  "__UNUSED": [
    "ABCD",
    "1234",
    "0000"
  ],

  "userIDHere": "keyHere"
}

Внутренняя команда:

/* Async context needed for 'await' (meaning within an async function). */

const fs = require('fs');
const keys = require('./keys.json');

try {
  // Ensure the user hasn't claimed a key already.
  if (keys[message.author.id]) return await message.author.send(':x: You already claimed a key.');

  // Ensure there's keys remaining.
  if (keys.__UNUSED.length === 0) {
    console.error('Out of keys.');
    return await message.author.send(':x: Sorry, no keys are available to claim right now.');
  }

  // Grab the first key (no need to randomize).
  const key = keys.__UNUSED[0];

  // Send the user the key, then remove it from the pool, catch any errors.
  await message.author.send(`Here's your key: ||${key}||`);

  keys.__UNUSED.splice(1);
  keys[message.author.id] = key;

  fs.writeFileSync('./keys.json', JSON.stringify(keys));
} catch(err) {
  console.error(err);
}

... Я подумал о том, чтобы предоставить VIP-членам особую функцию, позволяющую им получать [S] командный ключ каждый день ...

Если вы хотите включить этоВы можете установить интервал или создать задание cron для удаления пользователя из JSON / базы данных каждые 24 часа.

...