Мой бот Discord.js использует обработчик команд.Как я могу создать команды воспроизведения / пропуска / паузы / возобновления / и т. Д. В разных файлах? - PullRequest
0 голосов
/ 11 июня 2019

Я установил обработчик команд для своего бота, используя руководство Discord.js (я относительно новичок в Discord.js, а также в самом JavaScript, я бы сказал).Однако, так как все мои команды находятся в разных файлах, есть ли способ, которым я могу обмениваться переменными между файлами?Я попытался поэкспериментировать с экспортом модулей, но, к сожалению, не смог заставить его работать.

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

Я получилзапущен и работает отдельный музыкальный бот, но весь код находится в одном файле, связанном цепочками if / else if / else.Возможно, я мог бы просто скопировать этот код в основной файл для моего другого бота вместо использования обработчика команд для этих конкретных команд?

Я предполагаю, что есть способ сделать это, что вполне очевидно, и я приношу извиненияесли я трачу время людей.

Кроме того, я не верю, что для этого вопроса требуется код, но если я ошибаюсь, пожалуйста, дайте мне знать.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я также прочитал этот вопрос несколько раз заранее и пробовал решение, хотя я не получил его работать.

1 Ответ

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

Простой способ «перенести» переменные без экспорта - назначить их свойству вашего клиента.Таким образом, везде, где у вас есть переменная client (или bot), вы также получаете доступ к необходимой информации, не требуя файла.

Например ...

ready.js (при условии, что у вас есть обработчик события; в противном случае ваше ready событие)

client.queue = {};
for (guild of client.guilds) client.queue[guild.id] = [];

play.js

const queue = client.queue[message.guild.id];
queue.push({ song: 'Old Town Road', requester: message.author.id });

queue.js

const queue = client.queue[message.guild.id];

message.channel.send(`**${queue.length}** song${queue.length !== 1 ? 's' : ''} queued.`)
  .catch(console.error);
...