Я пытался запустить свой бот discord.js на Heroku, но у меня возникли проблемы с подключением бота к голосовым каналам. Всякий раз, когда я запускаю свой бот локально, все работает хорошо, но когда я размещаю его на Heroku, некоторые вещи не работают.
Мой bot.js выглядит так:
const Discord = require('discord.js');
const client = new Discord.Client();
const ffmpeg = require('ffmpeg');
const opus = require('opusscript');
const token = 'Hidden for obious reasons'
var isReady = true;
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', message => {
if (message.content === 'ping') {
message.reply('Test message');
client.channels.get('Our general chat').send('Test message 2')
}
});
client.on('message', message => {
if (message.content === 'join') {
isReady = false;
const voiceChannel = client.channels.get('ID of our voiceChannel');
if (!voiceChannel) {
client.channels.get('ID of our general chat').send('Can\'t get vc');
}
else {
client.channels.get('ID of our general chat').send('Got here 1');
voiceChannel.join();
client.channels.get('ID of our general chat').send('Got here 2');
isReady = true;
}
}
});
client.on('message', message => {
if (message.content === 'leave') {
isReady = false;
const voiceChannel = client.channels.get('ID of our voiceChannel');
voiceChannel.leave();
isReady = true;
}
});
client.on('voiceStateUpdate', (oldMember, newMember) => {
if (isReady && newMember.id === 'My friends ID' && oldMember.voiceChannel === undefined && newMember.voiceChannel !== undefined)
{
isReady = false;
var voiceChannel = client.channels.get('ID of our voiceChannel');
voiceChannel.join().then(connection =>
{
// Play the file
const dispatcher = connection.playFile('./clip.mp3');
dispatcher.on("end", end => {
voiceChannel.leave();
});
}).catch(err => console.log(err));
isReady = true;
}
});
client.login(token);
Хотяmy package.json выглядит так:
{
"name": "mybot",
"version": "1.0.0",
"description": "Make It Say Dumb Thing",
"main": "bot.js",
"scripts": {
"start": "node bot.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"discord.js": "^11.5.1",
"ffmpeg": "0.0.4",
"opusscript": "0.0.7"
}
}
С моим Procfile просто:
worker: node bot.js
Когда я запускаю это локально на моей машине, все работает отлично. Однако, когда я размещаю это на Heroku, функция .join () не работает. Он выводит «Got here 1» и «Got here 2», но бот никогда не присоединяется к голосовому чату.