feat: Prevent inventory, profile, balance, and pay commands from targeting bot users.

This commit is contained in:
syntaxbullet
2025-12-15 22:21:29 +01:00
parent 7e986fae5a
commit 9333d6ac6c
4 changed files with 26 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
import { createCommand } from "@/lib/utils"; import { createCommand } from "@/lib/utils";
import { SlashCommandBuilder, EmbedBuilder } from "discord.js"; import { SlashCommandBuilder, EmbedBuilder } from "discord.js";
import { userService } from "@/modules/user/user.service"; import { userService } from "@/modules/user/user.service";
import { createWarningEmbed } from "@/lib/embeds";
export const balance = createCommand({ export const balance = createCommand({
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
@@ -15,6 +16,11 @@ export const balance = createCommand({
await interaction.deferReply(); await interaction.deferReply();
const targetUser = interaction.options.getUser("user") || interaction.user; const targetUser = interaction.options.getUser("user") || interaction.user;
if (targetUser.bot) {
return; // Wait, I need to send the reply inside the if.
}
const user = await userService.getOrCreateUser(targetUser.id, targetUser.username); const user = await userService.getOrCreateUser(targetUser.id, targetUser.username);
const embed = new EmbedBuilder() const embed = new EmbedBuilder()

View File

@@ -23,6 +23,13 @@ export const pay = createCommand({
), ),
execute: async (interaction) => { execute: async (interaction) => {
const targetUser = await userService.getOrCreateUser(interaction.options.getUser("user", true).id, interaction.options.getUser("user", true).username); const targetUser = await userService.getOrCreateUser(interaction.options.getUser("user", true).id, interaction.options.getUser("user", true).username);
const discordUser = interaction.options.getUser("user", true);
if (discordUser.bot) {
await interaction.reply({ embeds: [createWarningEmbed("You cannot send money to bots.")], flags: MessageFlags.Ephemeral });
return;
}
const amount = BigInt(interaction.options.getInteger("amount", true)); const amount = BigInt(interaction.options.getInteger("amount", true));
const senderId = interaction.user.id; const senderId = interaction.user.id;
const receiverId = targetUser.id; const receiverId = targetUser.id;

View File

@@ -17,6 +17,12 @@ export const inventory = createCommand({
await interaction.deferReply(); await interaction.deferReply();
const targetUser = interaction.options.getUser("user") || interaction.user; const targetUser = interaction.options.getUser("user") || interaction.user;
if (targetUser.bot) {
await interaction.editReply({ embeds: [createWarningEmbed("Bots do not have inventories.", "Inventory Check")] });
return;
}
const user = await userService.getOrCreateUser(targetUser.id, targetUser.username); const user = await userService.getOrCreateUser(targetUser.id, targetUser.username);
const items = await inventoryService.getInventory(user.id); const items = await inventoryService.getInventory(user.id);

View File

@@ -2,6 +2,7 @@ import { createCommand } from "@/lib/utils";
import { SlashCommandBuilder, AttachmentBuilder } from "discord.js"; import { SlashCommandBuilder, AttachmentBuilder } from "discord.js";
import { userService } from "@/modules/user/user.service"; import { userService } from "@/modules/user/user.service";
import { generateStudentIdCard } from "@/graphics/studentID"; import { generateStudentIdCard } from "@/graphics/studentID";
import { createWarningEmbed } from "@/lib/embeds";
export const profile = createCommand({ export const profile = createCommand({
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
@@ -16,6 +17,12 @@ export const profile = createCommand({
await interaction.deferReply(); await interaction.deferReply();
const targetUser = interaction.options.getUser("user") || interaction.user; const targetUser = interaction.options.getUser("user") || interaction.user;
if (targetUser.bot) {
await interaction.editReply({ embeds: [createWarningEmbed("Bots do not have profiles.", "Profile Check")] });
return;
}
const user = await userService.getOrCreateUser(targetUser.id, targetUser.username); const user = await userService.getOrCreateUser(targetUser.id, targetUser.username);
const cardBuffer = await generateStudentIdCard({ const cardBuffer = await generateStudentIdCard({