From 2b6223fa67c5b174f252a90d257ac497cfc3fe07 Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Thu, 19 Sep 2024 19:03:53 +0100 Subject: [PATCH 1/3] Update yarn.lock --- yarn.lock | 5 ----- 1 file changed, 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 56f8f79..d672daa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4346,11 +4346,6 @@ typescript@^5.0.0: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== -undici-types@~6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" - integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== - undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" From 4e734a9245258e578dfeeef15ff8c1b5ea3c5b72 Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Thu, 19 Sep 2024 19:23:01 +0100 Subject: [PATCH 2/3] Add /moons add command --- src/commands/304276391837302787/moons.ts | 15 ++++++++++- src/commands/304276391837302787/moons/add.ts | 26 ++++++++++++++++++++ src/constants/EmbedColours.ts | 1 + src/database/entities/Moon.ts | 8 ++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/commands/304276391837302787/moons/add.ts diff --git a/src/commands/304276391837302787/moons.ts b/src/commands/304276391837302787/moons.ts index 13f0f98..dc884a0 100644 --- a/src/commands/304276391837302787/moons.ts +++ b/src/commands/304276391837302787/moons.ts @@ -1,6 +1,7 @@ import { Command } from "../../type/command"; import { CommandInteraction, SlashCommandBuilder } from "discord.js"; import ListMoons from "./moons/list"; +import AddMoon from "./moons/add"; export default class Moons extends Command { constructor() { @@ -20,7 +21,16 @@ export default class Moons extends Command { .addNumberOption(option => option .setName("page") - .setDescription("The page to start with"))); + .setDescription("The page to start with"))) + .addSubcommand(subcommand => + subcommand + .setName('add') + .setDescription('Add a moon to your count!') + .addStringOption(option => + option + .setName("description") + .setDescription("What deserved a moon?") + .setRequired(true))); } public override async execute(interaction: CommandInteraction) { @@ -30,6 +40,9 @@ export default class Moons extends Command { case "list": await ListMoons(interaction); break; + case "add": + await AddMoon(interaction); + break; } } } diff --git a/src/commands/304276391837302787/moons/add.ts b/src/commands/304276391837302787/moons/add.ts new file mode 100644 index 0000000..3a68a14 --- /dev/null +++ b/src/commands/304276391837302787/moons/add.ts @@ -0,0 +1,26 @@ +import {CommandInteraction, EmbedBuilder} from "discord.js"; +import Moon from "../../../database/entities/Moon"; +import EmbedColours from "../../../constants/EmbedColours"; + +export default async function AddMoon(interaction: CommandInteraction) { + const description = interaction.options.get("description", true).value?.toString(); + + if (!description || description.length > 255) { + await interaction.reply("Name must be less than 255 characters!"); + return; + } + + const moonCount = await Moon.FetchMoonCountByUserId(interaction.user.id); + + const moon = new Moon(moonCount + 1, description, interaction.user.id); + + await moon.Save(Moon, moon); + + const embed = new EmbedBuilder() + .setTitle(`${interaction.user.globalName} Got A Moon!`) + .setColor(EmbedColours.Moon) + .setDescription(`${moon.MoonNumber}. ${moon.Description}`) + .setThumbnail("https://cdn.discordapp.com/emojis/374131312182689793.webp?size=96&quality=lossless"); + + await interaction.reply({ embeds: [ embed ] }); +} diff --git a/src/constants/EmbedColours.ts b/src/constants/EmbedColours.ts index 023c77a..b15429c 100644 --- a/src/constants/EmbedColours.ts +++ b/src/constants/EmbedColours.ts @@ -1,3 +1,4 @@ export default class EmbedColours { public static readonly Ok = 0x3050ba; + public static readonly Moon = 0x50C878; } \ No newline at end of file diff --git a/src/database/entities/Moon.ts b/src/database/entities/Moon.ts index 566d1d4..24fdbf1 100644 --- a/src/database/entities/Moon.ts +++ b/src/database/entities/Moon.ts @@ -46,4 +46,12 @@ export default class Moon extends BaseEntity { return moons; } + + public static async FetchMoonCountByUserId(userId: string): Promise { + const repository = AppDataSource.getRepository(Moon); + + const count = await repository.count({ where: { UserId: userId } }); + + return count; + } } From 53cc4796f54c75788d17552f55464076b0f5b3f5 Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Thu, 19 Sep 2024 19:27:13 +0100 Subject: [PATCH 3/3] Move moon entity --- src/buttonEvents/moons/list.ts | 2 +- src/commands/304276391837302787/moons/add.ts | 2 +- src/commands/304276391837302787/moons/list.ts | 2 +- src/database/entities/{ => 304276391837302787}/Moon.ts | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename src/database/entities/{ => 304276391837302787}/Moon.ts (92%) diff --git a/src/buttonEvents/moons/list.ts b/src/buttonEvents/moons/list.ts index 9309dbe..ef7f7a9 100644 --- a/src/buttonEvents/moons/list.ts +++ b/src/buttonEvents/moons/list.ts @@ -1,5 +1,5 @@ import {ActionRowBuilder, ButtonBuilder, ButtonInteraction, ButtonStyle, EmbedBuilder} from "discord.js"; -import Moon from "../../database/entities/Moon"; +import Moon from "../../database/entities/304276391837302787/Moon"; import EmbedColours from "../../constants/EmbedColours"; export default async function List(interaction: ButtonInteraction) { diff --git a/src/commands/304276391837302787/moons/add.ts b/src/commands/304276391837302787/moons/add.ts index 3a68a14..a4459fc 100644 --- a/src/commands/304276391837302787/moons/add.ts +++ b/src/commands/304276391837302787/moons/add.ts @@ -1,5 +1,5 @@ import {CommandInteraction, EmbedBuilder} from "discord.js"; -import Moon from "../../../database/entities/Moon"; +import Moon from "../../../database/entities/304276391837302787/Moon"; import EmbedColours from "../../../constants/EmbedColours"; export default async function AddMoon(interaction: CommandInteraction) { diff --git a/src/commands/304276391837302787/moons/list.ts b/src/commands/304276391837302787/moons/list.ts index 8727124..ff4661e 100644 --- a/src/commands/304276391837302787/moons/list.ts +++ b/src/commands/304276391837302787/moons/list.ts @@ -1,5 +1,5 @@ import {ActionRowBuilder, ButtonBuilder, ButtonStyle, CommandInteraction, EmbedBuilder} from "discord.js"; -import Moon from "../../../database/entities/Moon"; +import Moon from "../../../database/entities/304276391837302787/Moon"; import EmbedColours from "../../../constants/EmbedColours"; export default async function ListMoons(interaction: CommandInteraction) { diff --git a/src/database/entities/Moon.ts b/src/database/entities/304276391837302787/Moon.ts similarity index 92% rename from src/database/entities/Moon.ts rename to src/database/entities/304276391837302787/Moon.ts index 24fdbf1..e3ffa48 100644 --- a/src/database/entities/Moon.ts +++ b/src/database/entities/304276391837302787/Moon.ts @@ -1,6 +1,6 @@ import { Column, Entity, IsNull } from "typeorm"; -import BaseEntity from "../../contracts/BaseEntity"; -import AppDataSource from "../dataSources/appDataSource"; +import BaseEntity from "../../../contracts/BaseEntity"; +import AppDataSource from "../../dataSources/appDataSource"; @Entity() export default class Moon extends BaseEntity {