diff --git a/src/commands/guild.ts b/src/commands/guild.ts index e8feeed..1d310ec 100644 --- a/src/commands/guild.ts +++ b/src/commands/guild.ts @@ -61,7 +61,6 @@ export async function guild (message: Message, args: string[]): Promise member.user.username).join('\n') const memberEmbed = new MessageEmbed() @@ -78,6 +77,16 @@ export async function guild (message: Message, args: string[]): Promise ( interaction.isButton() && interaction.user.id === message.author.id ), - time: 60000, - max: 1 + time: 60000 }) collector.on('collect', async (interaction) => { + await interaction.deferUpdate() // Defer the interaction + if (interaction.customId === 'members_button') { membersButton.setDisabled(true) + nextButton.setDisabled(false) + prevButton.setDisabled(true) + await reply.edit({ embeds: [memberEmbed], components: [ - new MessageActionRow().addComponents(guildButton) + new MessageActionRow().addComponents(guildButton, prevButton, nextButton) ] }) @@ -120,17 +135,80 @@ export async function guild (message: Message, args: string[]): Promise { membersButton.setDisabled(false) + nextButton.setDisabled(true) + prevButton.setDisabled(true) await reply.edit({ embeds: [embed], components: [actionRow] }) }) + + const nextButtonCollector = reply.createMessageComponentCollector({ + componentType: 'BUTTON', + filter: (btnInteraction: Interaction) => ( + btnInteraction.isButton() && + btnInteraction.customId === 'next_button' && + btnInteraction.user.id === message.author.id + ), + time: 60000 + }) + + nextButtonCollector.on('collect', async () => { + const newPage = memberPage + 1 + const newMemberResponse = await axios.get(`https://api.polytoria.com/v1/guilds/${guildID}/members?page=${newPage}&limit=15`) + const newMemberData = newMemberResponse.data.members + const newMemberUsernames: string = newMemberData.map((member: any) => member.user.username).join('\n') + + memberPage = newPage + memberEmbed.setDescription(newMemberUsernames) + + nextButton.setDisabled(false) + prevButton.setDisabled(false) + + await reply.edit({ + embeds: [memberEmbed], + components: [ + new MessageActionRow().addComponents(guildButton, prevButton, nextButton) + ] + }) + }) + + const prevButtonCollector = reply.createMessageComponentCollector({ + componentType: 'BUTTON', + filter: (btnInteraction: Interaction) => ( + btnInteraction.isButton() && + btnInteraction.customId === 'prev_button' && + btnInteraction.user.id === message.author.id + ), + time: 60000 + }) + + prevButtonCollector.on('collect', async () => { + if (memberPage > 1) { + const newPage = memberPage - 1 + const newMemberResponse = await axios.get(`https://api.polytoria.com/v1/guilds/${guildID}/members?page=${newPage}&limit=15`) + const newMemberData = newMemberResponse.data.members + const newMemberUsernames: string = newMemberData.map((member: any) => member.user.username).join('\n') + + memberPage = newPage + memberEmbed.setDescription(newMemberUsernames) + + nextButton.setDisabled(false) + prevButton.setDisabled(false) + + await reply.edit({ + embeds: [memberEmbed], + components: [ + new MessageActionRow().addComponents(guildButton, prevButton, nextButton) + ] + }) + } + }) } })