Discord.js实现Embed按10条内容分页功能代码失效如何解决?
问题原因分析
- 初始化的
result数组为空,没有填入需要展示的分页内容,逻辑执行无有效数据源 - 循环逻辑错误:在遍历
result的循环内部判断固定值limit=10是否大于等于result总长度,只要条件成立就会每次循环都生成Embed、调用分页方法,导致批量重复发送 - 没有实现数组分片逻辑,没有按每10条一组拆分
result的内容,所有Embed都会塞入全部内容,无法达到分页效果 paginationEmbed方法被放在循环内调用,每次循环都会触发一次发送,自然会重复推送
修复方案
先对内容数组按10条为单位做切片,每一组生成一个Embed存入分页数组,全部生成完成后仅调用一次分页发送方法即可,修正后代码如下:
const Discord = require('discord.js'); const pages = []; // 此处替换为你实际需要展示的内容数组 const result = ['内容1','内容2','内容3',/* 你的实际业务数据 */]; const limit = 10; // 按每10条一组分片生成Embed for (let i = 0; i < result.length; i += limit) { // 截取当前分页的10条内容 const currentPageContent = result.slice(i, i + limit); // 生成当前页Embed,数组转换行字符串展示更美观 const reactionHistory = new Discord.MessageEmbed() .setDescription(currentPageContent.join('\n')); pages.push(reactionHistory); } // 所有分页生成完成后,仅调用一次分页发送方法 if (pages.length > 0) { paginationEmbed(message, pages); }
额外注意事项
- 如果你使用的是Discord.js v14及以上版本,
MessageEmbed已更名为EmbedBuilder,导入和初始化逻辑需要对应调整 - 需确保你调用的
paginationEmbed工具方法本身逻辑正常,支持传入分页Embed数组和消息对象实现交互功能
内容的提问来源于stack exchange,提问作者xxxx
相关产品推荐
相关产品推荐

