Как вы позволяете конкретным людям выполнять команды - PullRequest
0 голосов
/ 17 июня 2019

Я делаю бот discord.js и у меня проблема.Я хочу сделать это, поэтому я должен разрешить, кто может использовать мои команды.Поэтому, если бы я хотел, чтобы только один человек получил личную команду, я мог бы просто добавить код, и только он может использовать его.Я не хочу назначать им определенную роль, потому что я хочу, чтобы они могли использовать ее на любом несогласованном сервере.Кто-нибудь может мне помочь?

Ну, я искал, что делать, но люди говорят только то, что нужно делать с ролями.

В настоящее время у меня нет кода, поскольку у меня пока нет предложений.

Я не ожидаю каких-либо ошибок, потому что я действительно не знаю, что делать.

1 Ответ

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

Вы можете ограничить доступ к командам не только по ролям, но и по идентификаторам пользователей.Каждый пользователь имеет уникальный идентификатор, связанный с ним в Discord.Когда сообщение отправлено, вы можете сравнить идентификатор автора с теми, которым разрешено использовать команды.

Для хранения идентификаторов вы можете использовать файл json или базу данных.Для простоты я использовал файл json для этого примера.

Пример permitted.json:

[
  "189855563893571595",
  "581635015151058944",
  "135190099439779841"
]

Пример события сообщения:

const permitted = require('./permitted.json'); // path may vary depending on the file location

client.on('message', message => {
  if (!permitted.includes(message.author.id)) return;

  // continue on 
});

Пример команды «доступ»:

// permitted = required json file
// args[1] = ID argument

const fs = require('fs');

if (message.author.id !== 'yourID') return;

let action;

if (!permitted.includes(args[1])) {
  permitted.push(args[1]);
  action = 'added to';
} else {
  permitted.splice(permitted.indexOf(args[1]), 1);
  action = 'removed from';
}

try {
  fs.writeFileSync('./permitted.json', JSON.stringify(permitted));
  message.channel.send(`That user has been ${action} the permitted list.`);
} catch(err) {
  console.error(err);
}
...