我现在在研究一个音乐机器人。我创建了一个queue命令,它显示了队列中当前有多少首歌曲。我想让它看起来像如果队列中的歌曲大于10,机器人将分割它,并在下一个“页面”上显示其余的歌曲。要在页面之间滚动,我想要使用反应。我的代码正在工作,但是Bot会自动删除它自己的反应。为什么会这样呢?
const Discord = require("discord.js");
module.exports.run = async (client, message, args, queue, searcher) => {
const serverQueue = queue.get(message.guild.id);
if(!serverQueue)
return message.channel.send("**Jelenleg nincs zene lejátszás alatt!**");
if(message.member.voice.channel != message.guild.me.voice.channel)
return message.channel.send("**Előbb lépj be a hang szobába!**")
let currentPage = 0;
if(serverQueue.songs.length <= 1) return message.channel.send(`**Lejátszás alatt:** [__${serverQueue.songs[0].title}__](${serverQueue.songs[0].url})`);
const embeds = embedGenerator(serverQueue)
//if(serverQueue.songs.length < 12) return message.channel.send(embeds);
const queueEmbed = await message.channel.send(`**Oldal:**: ${currentPage+1}/${embeds.length}`, embeds[currentPage])
await queueEmbed.react('⬅️');
await queueEmbed.react('➡️');
const reactionFilter = (reaction, user) => ['⬅️', '➡️'].includes(reaction.emoji.name) && (message.author.id === user.id)
const collector = queueEmbed.createReactionCollector(reactionFilter);
collector.on('collect', (reaction, user) => {
if(reaction.emoji.name === '➡️'){
if(currentPage < embeds.length-1){
currentPage+=1;
queueEmbed.edit(`**Oldal:**: ${currentPage+1}/${embeds.length}`, embeds[currentPage]);
message.reactions.resolve(reaction).users.remove(user)
}
}else if(reaction.emoji.name === '⬅️'){
if (currentPage !== 0){
currentPage -= 1;
queueEmbed.edit(`**Oldal:** ${currentPage+1}/${embeds.length}`, embeds[currentPage])
message.reactions.resolve(reaction).users.remove(user)
}
}
})
}
function embedGenerator(serverQueue){
const embeds = [];
let songs = 11;
for (let i = 1; i < serverQueue.songs.length; i += 10){
const current = serverQueue.songs.slice(i, songs)
songs += 10;
let j = i-1;
const info = current.map(song => `${++j}. [${song.title}](${song.url})`).join('\n')
const msg = new Discord.MessageEmbed()
.setDescription(`**Lejátszás alatt:** [${serverQueue.songs[0].title}](${serverQueue.songs[0].url}) \n ${info}`)
embeds.push(msg)
}
return embeds;
}
module.exports.config = {
name: "queue",
aliases: ['q']
}发布于 2020-12-19 19:18:03
好的,我发现problem.It发现我的另一个机器人有一个反应事件,它在大约4秒后移除消息上的反应,我没有添加if(message.author.bot)返回,所以它一直删除了这个反应。
https://stackoverflow.com/questions/65358400
复制相似问题