不断收到 DiscordAPIError:在 Discord.js 中的音乐机器人上使用 reconlx 的分页执行队列命令时出现未知交互
Posted
技术标签:
【中文标题】不断收到 DiscordAPIError:在 Discord.js 中的音乐机器人上使用 reconlx 的分页执行队列命令时出现未知交互【英文标题】:keep getting DiscordAPIError: Unknown Interaction when using reconlx's pagination for my queue command on my music bot in Discord.js 【发布时间】:2021-11-29 12:59:15 【问题描述】:所以我有一个使用discord.js
编写的音乐机器人,我决定为我的队列命令使用分页,这样我就可以整齐地显示整个队列。但是,大多数在单击按钮切换页面时,我不断收到 Unknown interaction discord 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,
)
切片(NUMBERS)是显示的歌曲位置,因此我为每个页面设置了一个新的嵌入,我知道这是一团糟但我想不出办法它更整洁,因为我对编程还不太熟悉。感谢您的帮助,我非常感谢。
【问题讨论】:
【参考方案1】:分页更多地用在网站或开发者网页上,尝试在机器人上使用它是可能的,但更加困难和复杂。我建议你使用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
--
PS :您似乎重复地创建了相同的嵌入,只需稍作更改。尝试创建一个循环,相信我这样更有效,您甚至可以通过更改第 3 行的 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')
))
【讨论】:
以上是关于不断收到 DiscordAPIError:在 Discord.js 中的音乐机器人上使用 reconlx 的分页执行队列命令时出现未知交互的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在尝试编辑离开语音频道的用户时会收到 DiscordAPIError?