Как вы проигрываете аудиофайл с бота Discord? Необходимо воспроизвести локальный файл, быть в JS, и после отправки определенного сообщения оно присоединится к пользователю, который набрал сообщение, и воспроизведет файл на этом канале.

18
Nicholas Johnson 11 Янв 2017 в 03:24

3 ответа

Я отправил сюда код ботинка Github Николаса Джонсона, но я внес небольшие изменения.

  1. Он, кажется, создает замок; поэтому я создал LockableClient, который расширяет Discord Client.
  2. Никогда не включайте токен авторизации в коде

Auth.js

{
  "token" : "your-token-here"
}

Блокируемые - client.js

const { Client } = require('discord.js')

/**
 * A lockable client that can interact with the Discord API.
 * @extends {Client}
 */
class LockableClient extends Client {
  constructor(options) {
    super(options)
    this.locked = false
  }
  lock() {
    this.setLocked(true)
  }
  unlock() {
    this.setLocked(false)
  }
  setLocked(locked) {
    return this.locked = locked
  }
  isLocked {
    return this.locked
  }
}

module.exports = LockableClient;

Index.js

const auth = require('./auth.js')
const { LockableClient } = require('./lockable-client.js')

const bot = new LockableClient()

bot.on('message', message => {
  if (!bot.isLocked() && message.content === 'Gotcha Bitch') {
    bot.lock()
    var voiceChannel = message.member.voiceChannel
    voiceChannel.join().then(connection => {
      const dispatcher = connection.playFile('./assets/audio/gab.mp3')
      dispatcher.on('end', end => voiceChannel.leave());
    }).catch(err => console.log(err))
    bot.unlock()
  }
})

bot.login(auth.token)
0
Mr. Polywhirl 15 Ноя 2019 в 16:02

Там нет необходимости для раздувания Visual Studio .. путь излишним .. вам просто нужен node.js и зависимости через npm.

3
Bill Kervaski 2 Окт 2018 в 15:07

Огромное спасибо!

Одна вещь, которую я скажу, чтобы помочь кому-то еще, это то, что там, где на шаге 10 написано ВВОД КОДА, вы помещаете код с шага 11 IE

dispatcher.on("end", end => voiceChannel.leave());

В качестве полного примера, вот как я использовал его в своем блоке команды IF сообщения:

if (command === "COMMAND") {
        var VC = message.member.voiceChannel;
        if (!VC)
            return message.reply("MESSAGE IF NOT IN A VOICE CHANNEL")
    VC.join()
        .then(connection => {
            const dispatcher = connection.playFile('c:/PAtH/TO/MP3/FILE.MP3');
            dispatcher.on("end", end => {VC.leave()});
        })
        .catch(console.error);
};
3
callum siciliano 9 Июн 2018 в 11:57