| import Discord from "discord.js"; |
| import client from "./client.js"; |
| |
| export default async function (m, interactionFilter, messageFilter) { |
| let out; |
| try { |
| out = await new Promise((resolve, _reject) => { |
| const mes = m.createMessageComponentCollector({filter: (m) => interactionFilter(m), time: 300000}) |
| .on("collect", (m) => { resolve(m); }); |
| const int = m.channel.createMessageCollector({filter: (m) => messageFilter(m), time: 300000}) |
| .then("collect", (m) => { try {m.delete();} catch (e) { client._error(e); } 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) => { |
| const int = m.createMessageComponentCollector({filter: (m) => interactionFilter(m), time: 300000}) |
| .on("collect", (m) => { resolve(m); }); |
| const 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; |
| } |