Skip to content

Commit

Permalink
Start delete command
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewstech committed Oct 22, 2023
1 parent bd4edbf commit ccb7ac6
Show file tree
Hide file tree
Showing 8 changed files with 163 additions and 0 deletions.
26 changes: 26 additions & 0 deletions components/fork.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const user = require('../models/user');
const { EmbedBuilder } = require("discord.js");
const { Octokit } = require("@octokit/rest");
module.exports = async function (interaction) {
const User = await user.findOne({ id: interaction.user.id });
const octokit = new Octokit({
auth: User.githubAccessToken,
});
// fork the repo
const fork = await octokit.repos.createFork({
owner: "is-a-dev",
repo: "register",
});
if (!fork.status === 202) {
const sadEmbed = new EmbedBuilder()
.setDescription("Something went wrong while forking the repo!")
.setColor("#0096ff");
return await interaction.editReply({
embeds: [sadEmbed],
ephemeral: true,
});
}
}



14 changes: 14 additions & 0 deletions events/ButtonEvent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const ChooseDeleteDomain = require("./buttons/ChooseDeleteDomain")
const CancelDeleteDomain = require("./buttons/CancelDelete")
const ConfirmDelete = require("./buttons/ConfirmDelete")
module.exports = async function (interaction) {
if (interaction.customId === "deleteDomain") {
await ChooseDeleteDomain(interaction);
}
if (interaction.customId === "cancel-del") {
await CancelDeleteDomain(interaction);
}
if (interaction.customId.startsWith("del-")) {
ConfirmDelete(interaction);
}
}
5 changes: 5 additions & 0 deletions events/SelectEvent.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
const ChooseEmail = require("./select/ChooseEmail");
const deleteDomain = require("./select/delete");
module.exports = async function (interaction) {
if (interaction.customId === "email") {
await ChooseEmail(interaction);
}
if (interaction.customId === "delete") {
await deleteDomain(interaction);
}

};
10 changes: 10 additions & 0 deletions events/buttons/CancelDelete.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const { EmbedBuilder } = require('discord.js');
const Loading = require('../../components/loading');
module.exports = async function (interaction) {
await Loading(interaction, true);
const embed = new EmbedBuilder()
.setTitle("Domain Deletion Cancelled")
.setDescription("You have cancelled the domain deletion process.")
.setColor("#0096ff");
await interaction.editReply({ embeds: [embed] });
}
58 changes: 58 additions & 0 deletions events/buttons/ChooseDeleteDomain.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
const user = require("../../models/user");
const loading = require('../../components/loading');
const { StringSelectMenuBuilder, ActionRowBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
module.exports = async function (interaction) {
await loading(interaction, true);
const data = await user.findOne({ _id: interaction.user.id });
if (!data) {
const embed = new EmbedBuilder()
.setDescription("You are not logged in!")
.setColor("#0096ff");
return await interaction.editReply({ embeds: [embed] });
}
const username = data.githubUsername;
fetch("https://raw-api.is-a.dev")
.then((response) => response.json())
.then(async (data) => {
let found = false;
let results = [];
for (let i = 0; i < data.length; i++) {
if (
data[i].owner.username.toLowerCase() ===
username.toLowerCase()
) {
results.push({
label: data[i].domain,
value: data[i].domain,
});
found = true;
}
}
if (!found) {
const sadEmbed = new EmbedBuilder()
.setDescription("You don't own any domains")
.setColor("#0096ff");
await interaction.editReply({ embeds: [sadEmbed] });
return;
} else {
// Create a select menu
const select = new StringSelectMenuBuilder()
.setCustomId("delete")
.setPlaceholder("Choose a domain to delete!")
.addOptions(results);

const row = new ActionRowBuilder().addComponents(select);

const embed = new EmbedBuilder()
.setDescription("Choose the domain you want to delete")
.setColor("#0096ff");

// Create the text input components
await interaction.editReply({
components: [row],
ephemeral: true,
embeds: [embed]
});
}
});
}
10 changes: 10 additions & 0 deletions events/buttons/ConfirmDelete.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const Loading = require('../../components/loading');
const fork = require('../../components/fork');
module.exports = async function (interaction) {
await Loading(interaction, true);
const domain = interaction.customId.slice(4);
fork(interaction);


}

35 changes: 35 additions & 0 deletions events/select/delete.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const user = require("../../models/user");
const loading = require('../../components/loading');
const { ActionRowBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
module.exports = async function (interaction) {
await loading(interaction, true);
const domain = interaction.values[0];
const data = await user.findOne({ _id: interaction.user.id });
if (!data) {
const embed = new EmbedBuilder()
.setDescription("You are not logged in!")
.setColor("#0096ff");
return await interaction.editReply({ embeds: [embed] });
}
const ConfirmButton = new ButtonBuilder()
.setCustomId(`del-${domain}`)
.setLabel("Confirm Delete")
.setStyle(ButtonStyle.Danger);

const CancelButton = new ButtonBuilder()
.setCustomId(`cancel-del`)
.setLabel("Cancel")
.setStyle(ButtonStyle.Primary);

const row = new ActionRowBuilder().addComponents(ConfirmButton, CancelButton);

const embed = new EmbedBuilder()
.setDescription(`Are you sure you want to delete ${domain}?`)
.setColor("#0096ff");

await interaction.editReply({
components: [row],
ephemeral: true,
embeds: [embed]
});
}
5 changes: 5 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const mongoose = require("mongoose");
const Sentry = require("@sentry/node");
const keepAlive = require("./components/webServer.js");
const HandleSelectMenu = require("./events/SelectEvent.js");
const HandleButtonEvent = require("./events/ButtonEvent.js");
require("dotenv").config();

Sentry.init({
Expand Down Expand Up @@ -59,6 +60,10 @@ client.on(Events.InteractionCreate, async (interaction) => {
HandleSelectMenu(interaction);
return;
}
if (interaction.isButton()) {
HandleButtonEvent(interaction);
return;
}

if (!command) {
console.error(
Expand Down

0 comments on commit ccb7ac6

Please sign in to comment.