Inventory
Give Item Command
The giveitem command allows users to transfer items from their inventory to another user. This command is available to all users with sufficient items.
Command Details
- Name: giveitem
- Aliases: gi
- Category: Inventory
- Description: Give your item to another user
- Usage:
giveitem <user> <item> <amount>orgi <user> <item> <amount> - Examples:
giveitem @user gem 1gi @user gem 5giveitem @user gem all
- Cooldown: 5 seconds
- Arguments: Yes (user, item ID, amount)
- Slash Command: Enabled
- Permissions:
- Bot: SendMessages, ViewChannel, EmbedLinks
- User: None
- Player Requirements: Must have the specified item in inventory
Functionality
- Retrieves the user's inventory from the
Usersschema to verify they have the item. - Validates the target user (not a bot, not the same as the author) and the item ID against
ShopItemsandImportantItems. - Checks if the item is giftable and if the user has enough of it.
- Supports flexible amounts (e.g.,
all,half, or a specific number). - Sends a confirmation embed with Accept/Cancel buttons for the transaction.
- Updates the database by removing or reducing the item from the giver's inventory and adding it to the receiver's inventory upon acceptance.
- Handles errors such as empty inventory, invalid users, non-giftable items, or invalid amounts with localized error messages.
- Disables buttons after the transaction or timeout (120 seconds).
Code Overview
The command:
- Extends the
Commandclass from../../structures/index.js. - Imports
Usersschema,ShopItems, andImportantItemsfor item data. - Uses the
runmethod to handle both message and slash command inputs. - Validates the target user, item existence, giftability, and amount.
- Creates a confirmation embed with Discord buttons (
ActionRowBuilder,ButtonBuilder) for Accept/Cancel. - Uses a
MessageComponentCollectorto handle button interactions, updating the database (Users.updateOne) on acceptance. - Removes buttons after completion or timeout and sends localized success or cancellation messages.
- Catches and logs errors, sending a generic error message to the user.
Buy Command
The buy command allows users to purchase items from the shop using their in-game coins. This command is available to all users.
Inventory Command
The inventory command displays a user's inventory, organized by categories, with pagination and interactive navigation. This command is available to all users with inventory items.