在 Discord 中的音乐机器人上使用 reconlx 的分页为我的队列命令使用我的队列命令时,不断得到 DiscordAPIError:未知交互.js



所以我有一个使用discord.js编写的音乐机器人,我决定对我的队列命令使用分页,这样我就可以整齐地显示整个队列。然而,当我点击按钮切换页面时,我一直得到未知的交互不和谐API错误大多数。我使用的是reconlx npm package,下面是队列命令的代码:

const queue = distube.getQueue(message)
// embeds
const nothingPlaying = new MessageEmbed()
.setDescription('Nothing playing right now!');
if(!queue) return message.channel.send({ embeds: [nothingPlaying]} );
const queueEmbed1 = new MessageEmbed()
.setTitle('Current Queue:')
.setDescription(`${queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice(0, 20)
.join('n')}`
)
const queueEmbed2 = new MessageEmbed()
.setTitle('Current Queue:')
.setDescription(`${queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice(20, 40)
.join('n')}`
)
const queueEmbed3 = new MessageEmbed()
.setTitle('Current Queue:')
.setDescription(`${queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice(40, 60)
.join('n')}`
)
const queueEmbed4 = new MessageEmbed()
.setTitle('Current Queue:')
.setDescription(`${queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice(60, 80)
.join('n')}`
)
const queueEmbed5 = new MessageEmbed()
.setTitle('Current Queue:')
.setDescription(`${queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice(80, 100)
.join('n')}`
)


const embeds = [
queueEmbed1,
queueEmbed2,
queueEmbed3,
queueEmbed4,
queueEmbed5,
]

pagination({
embeds: embeds,
channel: message.channel,
author:message.author,
fastSkip: true,    
})

数量片()是显示的歌曲位置,因此我为每个页面设置了一个新的嵌入,我知道这是一个烂摊子,但我想不出一种方法来使它更整洁,因为我还不熟悉编程。谢谢你的帮助,我非常感激。

分页在网站或开发人员网页上使用得更多,尝试在bot上使用它是可能的,但更困难和复杂。我建议你用discord-slider。它是一种更简单的方式,使用和处理更好的问题,面对您的情况下的不和谐api。你可以这样使用:

const Discord = require('discord.js')
const client = new Discord.Client()

require("discord-buttons")(client);
require('discord-slider')(client);
// On a command :
channel.createSlider(userID, embedsArray, emojiNext, emojiBack)

在您的例子中,您可以使用

channel.createSlider(message.author.id,embeds, "Next", "Back")

了解更多here

,

p:你似乎在重复地创建相同的嵌入,只做了一点改变。试着创建一个循环,相信我,这是更有效的方式,你甚至可以选择多少嵌入你想通过改变第三行的5!

let embeds = []
for (i = 0; i < 5; i++)
{
embeds.push(new Discord.MessageEmbed()
.setTitle('Current Queue:')
.setDescription(queue.songs
.map(
(song, id) =>
`**${id ? id : 'Playing'}**. ${song.name} - `${
song.formattedDuration
}``,
)
.slice((i*20), (i+1)*20)
.join('n')
))
}

相关内容

  • 没有找到相关文章

最新更新