M
src/interactions/commands/bug/buttons.ts
→
src/interactions/commands/bug/buttons.ts
@@ -1,9 +1,10 @@
import config from "@/config";
import { bugs, db } from "@/database";
import { getGuild } from "@/utils/queries";
-import type { ButtonInteraction, Client } from "discord.js";
+import type { ButtonInteraction, Client, GuildMember } from "discord.js";
import { eq } from "drizzle-orm";
import { buildReportModal, updateBugEmbed } from "./_shared";
+import { hasManagerPermissions } from "@/utils/permissions";
async function fetchBugById(id: string) {
const parsedId = Number(id);
@@ -154,7 +155,18 @@ content: "❌ Bug not found.",
flags: ["Ephemeral"],
});
return;
- }
+ }
+
+ const isManager = await hasManagerPermissions(interaction.member as GuildMember)
+ const isBugReporter = bug.reporterId === interaction.user.id
+
+ if (!isManager && !isBugReporter) {
+ await interaction.reply({
+ content: "❌ You don't have permission to delete this bug.",
+ flags: ["Ephemeral"],
+ });
+ return;
+ }
await db.delete(bugs).where(eq(bugs.id, bug.id));
const { data, exists } = await getGuild(interaction.guildId);