diff --git a/src/actions/debug/debug.service.ts b/src/actions/debug/debug.service.ts new file mode 100644 index 0000000..380644b --- /dev/null +++ b/src/actions/debug/debug.service.ts @@ -0,0 +1,48 @@ +import { type CommandsType, Commands } from "commands"; +import config from "config"; +import type { CacheType, ChatInputCommandInteraction, Interaction } from "discord.js"; +import { checkPermission } from "permissions"; + +export class DebugService { + + async handleInteraction( + interaction: Interaction + ) { + if (interaction.isChatInputCommand()) { + await this.handleChatInputCommand(interaction); + return; + } + + } + async handleChatInputCommand(interaction: ChatInputCommandInteraction) { + const commandName = interaction.commandName as CommandsType; + switch (commandName) { + case Commands.Enum.version: + await this.version(interaction); + return; + default: + break; + } + } + + async version(interaction: ChatInputCommandInteraction) { + try { + console.log("version command"); + if (await checkPermission(interaction.member) !== true) { + await interaction.reply({ + content: "du hast keine rechte fuer diesen befehl", + ephemeral: true, + }); + return; + } + await interaction.reply({ + content: "version: " + config.discord.version, + }); + + } + catch (error) { + console.error("error while sending version msg:", error); + } + } + +} \ No newline at end of file diff --git a/src/actions/greeting/greeting.service.ts b/src/actions/greeting/greeting.service.ts index e2b1719..fe19a79 100644 --- a/src/actions/greeting/greeting.service.ts +++ b/src/actions/greeting/greeting.service.ts @@ -18,6 +18,7 @@ import { } from "discord.js"; import { DmService } from "actions/dm/dm.service.ts"; import { Commands, type CommandsType } from "commands/index.ts"; +import { checkPermission } from "permissions/index.ts"; export class GreetingService { dmService: DmService; @@ -82,7 +83,7 @@ export class GreetingService { //console.log(input); // permission check - if (await this.checkPermission(interaction.member) !== true) { + if (await checkPermission(interaction.member) !== true) { await interaction.reply({ content: "du hast keine rechte fuer diesen befehl", ephemeral: true, @@ -202,7 +203,7 @@ export class GreetingService { try { // permission check - if (await this.checkPermission(interaction.member) !== true) { + if (await checkPermission(interaction.member) !== true) { await interaction.reply({ content: "du hast keine rechte fuer diesen befehl", ephemeral: true, @@ -274,7 +275,7 @@ export class GreetingService { return; } - if (await this.checkPermission(interaction.member) !== true) { + if (await checkPermission(interaction.member) !== true) { await interaction.reply({ content: "du hast keine rechte fuer diesen befehl", ephemeral: true, @@ -325,17 +326,6 @@ export class GreetingService { } } - async checkPermission(member: GuildMember | APIInteractionGuildMember | null) { - let permission = false; - if (member?.roles instanceof GuildMemberRoleManager) { - if (member.roles.cache.has(config.discord.roleAdmin) || member.roles.cache.has(config.discord.roleMod)) { - console.log("user has permission"); - permission = true; - } - } - return permission; - } - async checkRole(member: GuildMember) { let hasRole = false; if (member?.roles instanceof GuildMemberRoleManager) { diff --git a/src/actions/help/help.components.ts b/src/actions/help/help.components.ts index ed2fdc3..6c32e40 100644 --- a/src/actions/help/help.components.ts +++ b/src/actions/help/help.components.ts @@ -8,7 +8,7 @@ export default function createEmbed() { // ({ embeds: [exampleEmbed] }) .setColor(0x004400) //.setTitle("/hilfe") //.setURL("") - .setAuthor({ name: "avocadi - befehle", iconURL: "https://media.discordapp.net/attachments/1321933410188656693/1323447010380222474/mo_Avocadi_Avatar_Closeup_2.png?ex=67748b93&is=67733a13&hm=f48efb3523bca5f50e79144c7b41a127c94670e693e3da3dc2e6ffe62ad8a769&=&format=webp&quality=lossless&width=1524&height=1524", url: 'https://git.unom.io/moriese/avocadi-bot' }) + .setAuthor({ name: "avocadi - befehle", iconURL: "https://media.discordapp.net/attachments/1321933410188656693/1323447010380222474/mo_Avocadi_Avatar_Closeup_2.png?ex=67748b93&is=67733a13&hm=f48efb3523bca5f50e79144c7b41a127c94670e693e3da3dc2e6ffe62ad8a769&=&format=webp&quality=lossless&width=1524&height=1524", url: 'https://git.unom.io/mo/avocadi-bot' }) .setDescription(" ") .addFields( { name: `/${Commands.Enum.giessen}`, value: CommandsMeta.giessen.description }, diff --git a/src/actions/medication/medication.service.ts b/src/actions/medication/medication.service.ts index 797a704..a01abc8 100644 --- a/src/actions/medication/medication.service.ts +++ b/src/actions/medication/medication.service.ts @@ -115,6 +115,7 @@ export class MedicationService { await interaction.reply({ content: "es gab einen fehler beim verarbeiten deiner anfrage :( versuch es bitte spaeter nochmal, oki? c:", + ephemeral: true, }); return; } diff --git a/src/commands/index.ts b/src/commands/index.ts index 7e11630..7361265 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,7 +1,7 @@ import { SlashCommandBuilder, userMention } from "discord.js"; import { z } from "zod"; -export const Commands = z.enum(["giessen", "medikamente", "hilfe", "support", "kofi", "disboard", "discadia", "accept", "welcome", "embed", "message", "reminder"]); +export const Commands = z.enum(["giessen", "medikamente", "hilfe", "support", "kofi", "disboard", "discadia", "accept", "welcome", "embed", "message", "reminder", "version"]); export const CommandsMeta: Record, { description: string }> = { giessen: { @@ -39,6 +39,9 @@ export const CommandsMeta: Record, { description: stri }, reminder: { description: "admin use only" + }, + version: { + description: "admin use only" } } @@ -110,6 +113,9 @@ export default function getCommands() { option.setName('input') .setDescription('input for bot') .setRequired(true)), + new SlashCommandBuilder() + .setName(Commands.Enum.version) + .setDescription(CommandsMeta.version.description), ].map((command) => command.toJSON()); diff --git a/src/discord.controller.ts b/src/discord.controller.ts index f0f15d9..c37cb3a 100644 --- a/src/discord.controller.ts +++ b/src/discord.controller.ts @@ -23,6 +23,7 @@ import { ActivityService } from "actions/activity/activity.service"; import { DmService } from "actions/dm/dm.service"; import { CustomMessageService } from "actions/customMessage/customMessage.service"; import { DynamicVChannelService } from "actions/dynamicVChannel/dynamicVChannel.service"; +import { DebugService } from "actions/debug/debug.service"; import { ReactRolesService } from "actions/reactRole/reactRoles.service"; import config from "config"; @@ -36,8 +37,10 @@ export default class DiscordController extends EventEmitter { private activityService: ActivityService; private dmService: DmService; private customMessageService: CustomMessageService; - private channelListeners = new Map(); private dynamicVChannelService: DynamicVChannelService; + private debugService: DebugService; + + private channelListeners = new Map(); private reactRolesService: ReactRolesService; @@ -54,6 +57,7 @@ export default class DiscordController extends EventEmitter { this.dmService = new DmService(); this.customMessageService = new CustomMessageService(); this.dynamicVChannelService = new DynamicVChannelService(); + this.debugService = new DebugService(); this.reactRolesService = new ReactRolesService(); client.on("messageReactionAdd", async (reaction, user) => { @@ -215,6 +219,9 @@ export default class DiscordController extends EventEmitter { case Commands.Enum.reminder: await this.greetingService.handleChatInputCommand(interaction); return; + case Commands.Enum.version: + await this.debugService.handleChatInputCommand(interaction); + return; default: break; } diff --git a/src/permissions/index.ts b/src/permissions/index.ts new file mode 100644 index 0000000..71107c4 --- /dev/null +++ b/src/permissions/index.ts @@ -0,0 +1,13 @@ +import config from "config"; +import { GuildMember, GuildMemberRoleManager, type APIInteractionGuildMember } from "discord.js"; + +export async function checkPermission(member: GuildMember | APIInteractionGuildMember | null) { + let permission = false; + if (member?.roles instanceof GuildMemberRoleManager) { + if (member.roles.cache.has(config.discord.roleAdmin) || member.roles.cache.has(config.discord.roleMod)) { + permission = true; + } + } + console.log("user permission == " + permission); + return permission; +} \ No newline at end of file