当前位置: 首页 > 知识库问答 >
问题:

音乐机器人未连接到语音频道

薛元忠
2023-03-14

尝试制作一个简单的音乐机器人,只播放一个链接,但它不连接到语音通道,因此不会出现任何错误,所以我只能放入所有代码。这是我的主要内容。js公司

const {Intents} = require('discord.js');
const Discord = require('discord.js');
const botIntents = [ Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILD_VOICE_STATES, Intents.FLAGS.GUILD_MEMBERS];
const client = new Discord.Client({ intents: botIntents });
const prefix = '-';
const fs = require('fs');
const teo = "<@---------->";
const aime = "<@------------>";
const pagliac = "Di di no alla vita sociale! Ogni giorno migliaia di gamer perdono i propri amici per questa Vita sociale, Non si sa cosa sia pero se donate una piccola somma di: 4 reni, tua madre e forse anche tua sorella";

client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
    const command = require(`./commands/${file}`);

    client.commands.set(command.name, command);
}

client.once('ready', async () =>{
    console.log('Ready!');
    client.user.setActivity('Tua madre', { type: 'PLAYING' });
})

client.on ('message', message=>{
    if(!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if(command === 'embed'){
        client.commands.get('embed').execute(message, args, Discord, client);
    } else if (command === 'pong'){
        message.channel.send('Aime e un pagliaccio, giochiamo a the forest');
    } else if (command === 'teo'){
        for (var i=0; i<5; i++){
            message.channel.send(teo);
        }
    } else if (command === 'aime'){
        for (let s=0; s<5; s++){
            message.channel.send(aime);
            message.channel.send(pagliac);
        }
    } else if (command === 'clear'){
        client.commands.get('clear').execute(message, args);
    } else if (command === 'ping'){
        message.channel.send(`Pingazzo pazzo di: ${Date.now() - message.createdTimestamp}ms. La latenza delle api ${Math.round(client.ws.ping)}ms`);
    } else if (command === 'acqua'){
        const siuum = new Discord.MessageEmbed()
        .setColor('#0011FF')
        .setTitle('Marmellata')
        .setDescription('marmellata')
        const sus = message.mentions.users.first();
        sus.send({embeds: [siuum]});
    } else if(command === 'bully'){
        client.commands.get('bully').execute(message)
    } else if(command === 'aimesus')
        client.commands.get('aimesus').execute(message)

});

这是我的音乐机器人命令,我认为它是正确的,因为我已经在这里请求了一些人的帮助。

const ytdl = require('ytdl-core');

module.exports ={
    name:'aimesus',
    description:'aaaaaaaaaaaam',
    execute(message, args){
        const { joinVoiceChannel, createAudioPlayer, createAudioResource, generateDependencyReport, VoiceConnectionStatus } = require('@discordjs/voice');
        const url = 'https://www.youtube.com/watch?v=NevKVKbCNy4&ab_channel=NTDM'
        const stream = ytdl(url, {filter: 'audioonly'});
        const player = createAudioPlayer();
        const resource = createAudioResource(stream);
        const connection = joinVoiceChannel({
            channelId: message.channelid,
            guildId: message.guildid,
            adapterCreator: message.guild.voiceAdapterCreator
        })
        connection.subscribe(player);
        player.play(resource);
        
        console.log(generateDependencyReport());
        
    }
}

共有1个答案

凤棋
2023-03-14

首先,我建议您将侦听器从<代码>更改为。打开('消息')至。打开('messageCreate')。前者已被弃用,后者效果更好。

更重要的是,您在您的joinVoiceChannel()代码中传递了错误的变量。guildid和channelid属性为雪花类型,而字段采用字符串。就这样做吧:

const connection = joinVoiceChannel({
    channelId: message.member.voice.channel.id,
    guildId: message.guild.id,
    adapterCreator: message.guild.voiceAdapterCreator
})
 类似资料:
  • 我有一个叫“土豆音乐”的音乐机器人,它是一个音乐机器人。目前,机器人按照我希望的方式执行命令。但是一旦我停止在本地托管机器人并将其部署在Heroku上,就有一些错误开始出现。 我有一个名为“播放”的命令,每当我执行该命令时,它都应该在语音频道上播放歌曲。命令在命令开头有一个条件,用于检查用户是否已经在语音频道中。但是在我在Heroku上托管了这个机器人之后,一旦我执行命令,它就会一直告诉我我没有连

  • 我刚开始用node学习javascript。js和我正在尝试创建一个音乐机器人,我已经设置了命令处理程序和所有东西,但是,当我尝试运行play命令时,我一直会遇到这个错误 错误:未找到FFmpeg/avconv!在功能上。getInfo(C:\Users\johnd\OneDrive\Desktop\discordBot\node\u modules\prism media\src\core\FF

  • 我正在使用discord制作一个discord机器人。我最近遇到了一个问题。 我已发出加入用户语音频道的命令。问题是,当我在本地PC上运行它时,我的命令运行得非常好,但现在我尝试在raspberry pi上运行它,当连接到语音频道时,它失败了。 我已尝试安装所有依赖项,但无法使其正常工作。命令的代码: 没有提出例外情况。

  • 我想知道是否有可能知道任何成员连接到discord中的特定语音频道。jsv12。2.0. 最近几天我一直在问这个问题。如果你有什么线索,请告诉我。

  • 我希望我的不和谐机器人加入语音频道。但是我遇到了一个问题,每当我想让它加入风投时,什么都不会发生——甚至没有错误。我尝试过SO/Git的其他解决方案,但没有一个适合我(下面有一个)。 编辑:解决了!问题是:没有不和。已安装py[语音]模块。解决方案:

  • 播放音乐 还是老样子,增加一个新的指令。 点下之后出现具体的参数填写窗口。 文件:当然就是填写背景音乐的文件名了,点击右边的方块可以打开音乐文件选择窗口,NVL会把认识的音乐文件都列出来,可以直接试听。 渐入时间:当切换背景音乐时,会有一段时间的渐变,前一首音乐音量逐渐减小而后一首音量逐渐增大,就是这么个效果。不填则使用默认值1000毫秒。 交叉时间:在音乐渐变时,两首曲子一起播放的交叠时间。不填