不和谐按钮不改变页面
Discord Button not changing pages
我试图制作一个上面有按钮的命令,按钮工作正常但它停留在当前页面,我有 3 页,点击 next
按钮后应该移动到第 2 页,消息放在 (edited)
但一直停留在第 1 页,
这是我的代码行:
在test.js
const paginator = require('../../ButtonPaginator')
const page1 = new MessageEmbed()
.setTitle('Command List')
.setDescription(`This is the list of moderators commands. To use this type \`${prefix}<command>\``)
.addFields(
{name: "Moderation Command", value:"`announce, ban, clear, hack, kick, lock, mute, nuke, restart, snipe, suggestions, unlock, unmute, warn`"},
{name: "Configuration Command", value:"**Set Configurations:**\n`set-casino, set-confess, set-leave, set-modlog, set-role, set-suggestion-log, set-suggestion, set-tracker, set-welcome`\n\n**Delete Configuration**\n`delete-casino, delete-confess, delete-leave, delete-modlog, delete-role, delete-suggestion-log, delete-suggestion, delete-tracker, delete-welcome`"}
)
.setColor('RANDOM')
.setTimestamp()
const page2 = new MessageEmbed()
.setTitle('Testing Page 2')
const page3 = new MessageEmbed()
.setTitle('Testing Page 3')
let pages = [page1, page2, page3]
paginator(message, pages)
在我的paginator.js
const { MessageButton, MessageActionRow } = require('discord.js')
const ms = require('ms');
const paginator = async (message, pages) => {
if(!message && !message.channel) throw new Error("Provide a message to acces the channel")
if(!pages) throw new Error("Please provide pages")
let page = 0
const btn1 = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY')
const btn2 = new MessageButton().setLabel("Next").setCustomId("00002").setStyle('SECONDARY')
const row = new MessageActionRow().addComponents([btn1, btn2])
const btn1After = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY').setDisabled()
const btn2After = new MessageButton().setLabel("Next").setCustomId("00002").setStyle('SECONDARY').setDisabled()
const deadRow = new MessageActionRow().addComponents([btn1After, btn2After])
const curPage = await message.channel.send({embeds: [pages[0]], components: [row]})
const filter = (b) => ["00001, 00002"].includes(b.id)
const col = await curPage.createMessageComponentCollector(filter, { time: ms('10s') })
col.on('collect', async (button) => {
await button.deferUpdate()
if(button.user.id !== message.author.id) return;
if(button.id == '00001') {
page = page > 0 ? --page : pages.length - 1
} else if(button.id == '00002') {
page = page + 1 < pages.length ? ++page : 0;
}
curPage.edit({embeds: [pages[page]], components: [row]})
})
col.on('end', () => {
if(!curPage.deleted) {
curPage.edit({embeds: [pages[page]], components: [deadRow]})
}
})
return curPage
}
module.exports = paginator
我是这个按钮功能的新手
我找到了 Discord 按钮交互的解决方案。
这部分代码:
col.on('collect', async (button) => {
await button.deferUpdate()
if(button.user.id !== message.author.id) return;
if(button.id == '00001') {
page = page > 0 ? --page : pages.length - 1
} else if(button.id == '00002') {
page = page + 1 < pages.length ? ++page : 0;
}
curPage.edit({embeds: [pages[page]], components: [row]})
})
而不是 button.id
应该是 button.customId
我试图制作一个上面有按钮的命令,按钮工作正常但它停留在当前页面,我有 3 页,点击 next
按钮后应该移动到第 2 页,消息放在 (edited)
但一直停留在第 1 页,
这是我的代码行:
在test.js
const paginator = require('../../ButtonPaginator')
const page1 = new MessageEmbed()
.setTitle('Command List')
.setDescription(`This is the list of moderators commands. To use this type \`${prefix}<command>\``)
.addFields(
{name: "Moderation Command", value:"`announce, ban, clear, hack, kick, lock, mute, nuke, restart, snipe, suggestions, unlock, unmute, warn`"},
{name: "Configuration Command", value:"**Set Configurations:**\n`set-casino, set-confess, set-leave, set-modlog, set-role, set-suggestion-log, set-suggestion, set-tracker, set-welcome`\n\n**Delete Configuration**\n`delete-casino, delete-confess, delete-leave, delete-modlog, delete-role, delete-suggestion-log, delete-suggestion, delete-tracker, delete-welcome`"}
)
.setColor('RANDOM')
.setTimestamp()
const page2 = new MessageEmbed()
.setTitle('Testing Page 2')
const page3 = new MessageEmbed()
.setTitle('Testing Page 3')
let pages = [page1, page2, page3]
paginator(message, pages)
在我的paginator.js
const { MessageButton, MessageActionRow } = require('discord.js')
const ms = require('ms');
const paginator = async (message, pages) => {
if(!message && !message.channel) throw new Error("Provide a message to acces the channel")
if(!pages) throw new Error("Please provide pages")
let page = 0
const btn1 = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY')
const btn2 = new MessageButton().setLabel("Next").setCustomId("00002").setStyle('SECONDARY')
const row = new MessageActionRow().addComponents([btn1, btn2])
const btn1After = new MessageButton().setLabel("Back").setCustomId("00001").setStyle('SECONDARY').setDisabled()
const btn2After = new MessageButton().setLabel("Next").setCustomId("00002").setStyle('SECONDARY').setDisabled()
const deadRow = new MessageActionRow().addComponents([btn1After, btn2After])
const curPage = await message.channel.send({embeds: [pages[0]], components: [row]})
const filter = (b) => ["00001, 00002"].includes(b.id)
const col = await curPage.createMessageComponentCollector(filter, { time: ms('10s') })
col.on('collect', async (button) => {
await button.deferUpdate()
if(button.user.id !== message.author.id) return;
if(button.id == '00001') {
page = page > 0 ? --page : pages.length - 1
} else if(button.id == '00002') {
page = page + 1 < pages.length ? ++page : 0;
}
curPage.edit({embeds: [pages[page]], components: [row]})
})
col.on('end', () => {
if(!curPage.deleted) {
curPage.edit({embeds: [pages[page]], components: [deadRow]})
}
})
return curPage
}
module.exports = paginator
我是这个按钮功能的新手
我找到了 Discord 按钮交互的解决方案。
这部分代码:
col.on('collect', async (button) => {
await button.deferUpdate()
if(button.user.id !== message.author.id) return;
if(button.id == '00001') {
page = page > 0 ? --page : pages.length - 1
} else if(button.id == '00002') {
page = page + 1 < pages.length ? ++page : 0;
}
curPage.edit({embeds: [pages[page]], components: [row]})
})
而不是 button.id
应该是 button.customId