| import Discord from 'discord.js'; |
| import client from './client.js'; |
| import generateEmojiEmbed from "./generateEmojiEmbed.js"; |
| |
| export default async function (m, interactionFilter, messageFilter) { |
| let out; |
| try { |
| out = await new Promise((resolve, reject) => { |
| let mes, int; |
| mes = m.createMessageComponentCollector({filter: (m) => interactionFilter(m), time: 300000}) |
| .on("collect", (m) => { resolve(m); }) |
| int = m.channel.createMessageCollector({filter: (m) => messageFilter(m), time: 300000}) |
| .then("collect", (m) => { try {m.delete();} catch {}; resolve(m); }) |
| mes.on("end", () => { int.stop(); }) |
| int.on("end", () => { mes.stop(); }) |
| }) |
| } catch(e) { |
| console.log(e) |
| return null; |
| } |
| |
| return out; |
| } |
| |
| export async function modalInteractionCollector(m, modalFilter, interactionFilter) { |
| let out; |
| try { |
| out = await new Promise((resolve, reject) => { |
| let mod, int; |
| int = m.createMessageComponentCollector({filter: (m) => interactionFilter(m), time: 300000}) |
| .on("collect", (m) => { resolve(m); }) |
| mod = new Discord.InteractionCollector( |
| client, { |
| filter: (m) => modalFilter(m), |
| time: 300000 |
| }) |
| .on("collect", async (m) => { |
| int.stop(); |
| (m as Discord.ModalSubmitInteraction).deferUpdate() |
| resolve((m as Discord.ModalSubmitInteraction)); }) |
| int.on("end", () => { mod.stop(); }) |
| mod.on("end", () => { int.stop(); }) |
| }) |
| } catch(e) { |
| console.log(e) |
| return null; |
| } |
| return out; |
| } |