Pineventory - Standard Operating Procedures
This is WARG's very own (automatic) inventory management system using a Discord bot. Since inventory management is historically very annoying, the Discord and Google Spreadsheets integration makes it seamless and helpful when people need to find where things are. This page outlines Standard Operating Procedures (SOPs) to use this tool in a manner to support its efficacy.
Overview
Pineventory is a Discord bot that lets WARG members track physical inventory items, check out and return equipment, and maintain a full audit trail.
Key integrations:
Discord — slash commands, interactive buttons, modals, paginated views
Google Sheets — auto-synced spreadsheet with Inventory, Active Checkouts, Audit Log, and Stats tabs
Getting Started
Before using the bot, make sure you can see its slash commands by typing / in any channel where the bot is present. If you don't see Pineventory commands, contact an admin to check the bot's channel permissions.
Run /about for a quick reference of all available commands, or /pineventory to see a summary of what the bot does.
Command Reference
Inventory Management
Command | Description | Who Can Use |
|---|---|---|
| Add a new item to inventory | Anyone |
| Browse all items (paginated) | Anyone |
| View a specific item by ID | Anyone |
| Edit an item's name, location, subteam, POC, PO, or description | Anyone |
| Delete an item (blocked if active checkouts exist) | Anyone |
| View the linked Google Sheet URL for your server | Anyone |
Checkout & Returns
Command | Description | Who Can Use |
|---|---|---|
| Check out an item (quantity, expected return date, notes) | Anyone |
| Return a checked-out item | Anyone |
| View your own active checkouts with a dropdown to return items | Anyone |
| View all active checkouts across the server | Anyone |
Admin Commands
Command | Description | Who Can Use |
|---|---|---|
| Grant or revoke bot admin privileges for a user | Admins |
| Manually sync all inventory data to Google Sheets | Admins |
SOP 1 — Adding Items to Inventory
When new equipment is received or needs to be tracked, add it to Pineventory immediately.
Run
/additemin Discord.Fill in all required fields:
Item Name — use a clear, descriptive name (e.g., "DeWalt 20V Drill" not just "Drill")
Quantity — total number of this item available
Location — where the item is physically stored (e.g., "Workshop A, Shelf 3")
Subteam — the subteam that owns or primarily uses the item (e.g., mechanical, electrical)
Point of Contact — the Discord member responsible for this item (mention them directly). If none, mention a subteam lead.
Purchase Order — the PO Discord thread link associated with the purchase, if applicable. The number suffices too.
Optionally add a Description for any extra context.
Confirm the item was created by checking the response.
Best practices:
Be specific with location. "The bay" is not helpful "Barometer labelled box on EFS shelf" is.
This should be done when an item is received in the respective purchase order thread.
SOP 2 — Checking Out Equipment
When you need to use a piece of equipment, always check it out through Pineventory so others know it's in use and where it went.
Find the item ID using
/inventoryto browse or/itemdetailsif you know the item ID.Click the Checkout button on the item details embed, or run
/checkoutdirectly.Fill in the checkout modal:
Quantity — how many units you're taking (must not exceed available quantity)
Expected Return — number of days you expect to have it (e.g., "7" for a week)
Notes — any context (e.g., "Testing at home“)
The bot will confirm the checkout and update the item's available quantity.
Best practices:
Always set an expected return date. This helps the team plan around shared equipment.
If your timeline changes, communicate with the point of contact directly.
Check
/mycheckoutsregularly to remind yourself what you have out.When an external member borrows equipment, either you or they need to fill out a checkout entry on WARG’s Discord server.
SOP 3 — Returning Equipment
When you're done with equipment, return it through Pineventory and physically put the item back where it belongs.
Run
/mycheckoutsto see everything you currently have checked out.Use the dropdown menu to select the item you're returning.
Confirm the return when prompted.
Physically return the item to its listed location.
Best practices:
Return items to their listed location, not just "somewhere in the bay." If the location has changed, update it with
/edititem.Don't let checkouts go stale. If you're done with something, return it the same day.
If an item is damaged or lost during checkout, notify the point of contact and update the item quantity with
/edititemafter running the/returncommand to “return” the item.
SOP 4 — Editing and Deleting Items
Items can be updated as circumstances change.
Editing:
Run
/edititemwith the item ID.Only fill in the fields you want to change — leave the rest blank.
The bot will show a summary of what changed.
Deleting:
Run
/deleteitemwith the item ID.The bot will block deletion if the item has active checkouts — all items must be returned first.
Confirm deletion when prompted. This action is permanent.
Best practices:
If an item's quantity changes (lost, broken, received more), update it with
/edititemrather than deleting and re-adding.Keep locations up to date. Stale location data defeats the purpose of the system.
SOP 5 — Google Sheets Sync
Each server has an automatically generated Google Sheet that mirrors the Discord data. This is useful for people who want a read-only overview without needing to be in Discord, or for printing inventory lists.
How it works:
The sheet is auto-created the first time an admin runs
/syncsheets.It contains four tabs: Inventory, Active Checkouts, Audit Log, and Stats.
Data syncs when
/syncsheetsis run manually.
Accessing the sheet:
Run
/sheetinfoto get the Google Sheet URL for your server.Share the link with anyone who needs view access.
Best practices:
The spreadsheet is always updated after each command that mutates the inventory. However, this command can be used if that isn’t the case.
The sheet is view-only for external users. All changes must go through Discord commands.
SOP 6 — Admin Responsibilities
Server admins have additional responsibilities to keep Pineventory running smoothly.
Granting admin access:
Use
/setadminto grant or revoke bot admin privileges for trusted members.Bot admins can run
/syncsheets.Admin status is detected via Discord's native permission system (
interaction.permissions).
Ongoing maintenance:
Periodically run
/syncsheetsto keep the Google Sheet current if not already.Review
/allcheckoutsto identify overdue items and follow up with the responsible members.When members leave the team, ensure their checkouts are returned and their admin access (if any) is revoked.
SOP 7 — Audit Trail
Every action in Pineventory is logged to an audit trail. This includes item creation, edits, deletions, checkouts, and returns.
Audit logs are visible in the Audit Log tab of the Google Sheet after a sync.
Each entry records: timestamp, user, action type, item ID, and details.
The audit log is append-only and cannot be edited or deleted through the bot.
Use the audit log to resolve disputes about equipment, track usage patterns, or investigate missing items.
Troubleshooting
Issue | Solution |
|---|---|
"Item not found" errors | Double-check the item ID. Use |
Can't delete an item | All active checkouts must be returned before an item can be deleted. Run |
Google Sheet isn't updating | Run |
Bot responds with "This command can only be used in servers" | You're running the command in a DM. Use it inside a server channel instead. |
How to Contribute
Pineventory is actively maintained and we welcome contributions from WARG members. Contact @Ronak Patel and checkout https://github.com/Rosnaky/pineventory/ to get involved.