为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能使这个代码循环?

我怎样才能使这个代码循环?

守候你守候我 2022-10-08 15:03:26
我正试图让它在我的 Discord 机器人中成功循环。我想要的是当命令运行时,机器人从中挑选一首歌曲1-10并播放它(已经完成),并且在播放完这首歌之后,它应该重复挑选一首歌曲并播放它。我不知道该怎么做。这是我的代码:client.on('message', async message => {    var isReady = true;    if (!message.content.startsWith(prefix) || message.author.bot) return;    const args = message.content.slice(prefix.length).split(/ +/);    const command = args.shift().toLowerCase();    if (message.content === `${prefix}KOLARADIO`) {        if (message.member.voice.channel) {            const connection = await message.member.voice.channel.join();            songRandom = Math.floor((Math.random() * 10) + 1);            if (songRandom === 1) {                const dispatcher = connection.play('KOCK_MUSIC/a.mp3')                dispatcher.on('start', () => {                    console.log('audio ' + songRandom + ' is playing');                });                dispatcher.on('finish', () => {                    console.log('audio has finished playing');                })                dispatcher.on('error', console.error);            }            else if (songRandom === 2) {                const dispatcher = connection.play('KOCK_MUSIC/b.mp3')                dispatcher.on('start', () => {                    console.log('audio ' + songRandom + ' is playing');                });                dispatcher.on('finish', () => {                    console.log('audio has finished playing');                });                dispatcher.on('error', console.error);            }            else if ...            }            return songRandom;        };    };});
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

我有几个建议,最后一个可以让你永远播放你的播放列表,但需要前面的两个都起作用。


首先,您需要将您的歌曲放在一个数组中。这样你就不需要重复自己来播放不同的歌曲。


const songs = [

   'KOCK_MUSIC/a.mp3',

    // ... more music

];

其次,您的歌曲选择器应该使用 song.length 来选择下一首歌曲,而不是依赖于您拥有 10 首歌曲。这样您就可以在以后添加和删除歌曲而不会破坏代码。


最后,你应该有这样的功能。


playSong() {

    const songId = Math.floor(Math.random() * songs.length);

    connection.play(songs[songId]).on("finish", playSong);

}

这将在上一首歌曲结束时递归播放一首新歌曲。小心,这应该永远运行。你可能想给它一个停止的方法。


查看完整回答
反对 回复 2022-10-08
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信