Discord.js-让音乐机器人说话来报告动作



我想给我的音乐机器人添加一个函数,这样,当它在VC中播放音乐或视频时,它会说话并报告歌曲是否循环、暂停、停止等。我确实找到了一些代码,但他们只会播放两个音频中的一个

所以我想做的是让它播放一个当地的mp3,上面写着";暂停"已停止";和其他人,但在音乐播放的时候。有办法做到吗?任何帮助都将不胜感激!

这里我找到了一个解决方案,但它将在语音通道中播放文本到语音,而不是播放本地.mp3文件。将以下内容用于discord.js v13.2.0

1.npm i libsodium包装

2.npm idiscordjs/语音

3.npm i discojs/opus

4.npm i与不一致


const discordTTS=require("discord-tts");
const {Client, Intents} = require("discord.js");
const {AudioPlayer, createAudioResource, StreamType, entersState, VoiceConnectionStatus, joinVoiceChannel} = require("@discordjs/voice");
const token = '' //your token here
const client = new Client({intents:[Intents.FLAGS.GUILDS,Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_VOICE_STATES,]})
client.login(token);
client.on("ready", () => console.log("Online"));
let voiceConnection;
let audioPlayer=new AudioPlayer();
client.on("messageCreate", async (msg)=>{
if(msg.content=="tts")
{
const stream=discordTTS.getVoiceStream("I am connected in the voice channel");
const audioResource=createAudioResource(stream, {inputType: StreamType.Arbitrary, inlineVolume:true});
if(!voiceConnection || voiceConnection?.status===VoiceConnectionStatus.Disconnected){
voiceConnection = joinVoiceChannel({
channelId: msg.member.voice.channelId,
guildId: msg.guildId,
adapterCreator: msg.guild.voiceAdapterCreator,
});
voiceConnection=await entersState(voiceConnection, VoiceConnectionStatus.Connecting, 5_000);
}

if(voiceConnection.status===VoiceConnectionStatus.Connected){
voiceConnection.subscribe(audioPlayer);
audioPlayer.play(audioResource);
}
}
});
client.login(token);

您可以为事件添加各种tts,如在vc中连接的、播放歌曲、添加到队列的歌曲。

有关详细信息,您可以查看包裹。

最新更新