Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна помощь с Javascript при работе с библиотекой discord.js

Dragon _king Профи (596), на голосовании 1 год назад
Вот код, снизу ошибка, бот не работает, знаю что была изменена работа с интентами, но что делать и как исправить не знаю.

const { Client, Intents, GatewayIntentBits } = require('discord.js');
const ytdl = require('ytdl-core');
const ytSearch = require('youtube-search');

const token = 'HBL0mic0ZMuH2y1funOmvhIlE_RLo_l9vkiFCw'; // ds token

const client = new Client({
intents: [
GatewayIntentBits.GUILDS,
GatewayIntentBits.GUILD_MESSAGES,
GatewayIntentBits.GUILD_VOICE_STATES,
GatewayIntentBits.GUILD_MESSAGE_REACTIONS,
]
});

const opts = {
maxResults: 5,
key: 'AIzaSyDOgwXa2zG84zSNjwiPx8z3GM5ben-Hz6Q', // youtube api
type: 'video',
};

let dispatcher = null;
let repeat = false;

client.once('ready', () => {
console.log('Bot is online!');
});

client.on('messageCreate', async (message) => {
if (message.author.bot) return;

const voiceChannel = message.member.voice.channel;

if (message.content.startsWith('!play')) {
if (!voiceChannel) {
return message.channel.send('Вы должны находиться в голосовом канале, чтобы проиграть музыку!');
}

const searchQuery = message.content.replace('!play', '').trim();

try {
const results = await ytSearch(searchQuery, opts);
const videoURL = results[0].link;
const connection = await voiceChannel.join();
const stream = ytdl(videoURL, { filter: 'audioonly' });
dispatcher = connection.play(stream, { seek: 0, volume: 1 });

dispatcher.on('finish', () => {
if (repeat) {
dispatcher = connection.play(stream, { seek: 0, volume: 1 });
} else {
voiceChannel.leave();
dispatcher = null;
}
});
} catch (error) {
console.error(error);
message.channel.send('Произошла ошибка при воспроизведении музыки!');
}
}

if (message.content === '!stop') {
if (dispatcher) {
dispatcher.end();
dispatcher = null;
voiceChannel.leave();
}
}

if (message.content === '!skip') {
if (dispatcher) {
dispatcher.end();
dispatcher = null;
}
}

if (message.content === '!repeat') {
repeat = !repeat;
message.channel.send(`Режим повтора воспроизведения: ${repeat ? 'Включен' : 'Выключен'}`);
}
});

client.login(HBL0mic0ZMuH2y1funOmvhIlE_RLo_l9vkiFCw);

Ошибки:
Uncaught DiscordjsError RangeError [BitFieldInvalid]: Invalid bitfield flag or number: undefined.

at resolve (g:\All_Code\marry_web\node_modules\discord.js\src\util\BitField.js:172:11)
at <anonymous> (g:\All_Code\marry_web\node_modules\discord.js\src\util\BitField.js:167:54)
at resolve (g:\All_Code\marry_web\node_modules\discord.js\src\util\BitField.js:167:40)
at BitField (g:\All_Code\marry_web\node_modules\discord.js\src\util\BitField.js:33:38)
at IntentsBitField (g:\All_Code\marry_web\node_modules\discord.js\src\util\IntentsBitField.js:9:1)
at Module._load (internal/modules/cjs/loader:958:12)
at executeUserEntryPoint (internal/modules/run_main:81:12)
at <anonymous> (internal/main/run_main_module:23:47)
Голосование за лучший ответ
Sergio 2.1 Оракул (67388) 1 год назад
Ваша ошибка Invalid bitfield flag or number: undefined может быть вызвана использованием недействительного флага или числа в опциях intents при создании экземпляра Client. В версии discord.js v14 флаги интентов доступны из GatewayIntentBits.
В вашем коде вы используете GatewayIntentBits, поэтому убедитесь, что используете версию discord.js v14 и что все флаги интентов, которые вы используете, действительны и определены в GatewayIntentBits. Если вы используете более раннюю версию discord.js, то вам необходимо использовать другие флаги интентов.
Также убедитесь, что вы используете правильные имена флагов интентов. Например, в одном случае ошибка была вызвана опечаткой: DIRECT_MESSAGE_REACTION вместо DIRECT_MESSAGE_REACTIONS.
Похожие вопросы