/catalog — Product Catalog
Type: Customer slash command
Scope: All guild members
Description
Displays a paginated list of all active, published products available for the tenant. Each product card shows the product name, description, price, and stock availability (visibility controlled by qtyVisibility / defaultQtyVisibility). Buttons allow pagination and ordering (ordering flow coming soon).
Usage
/catalog
Optional pagination via the Previous / Next buttons embedded in the response.
Behavior
- Filters products by
isActive = trueANDisPublished = true. - Applies role-gating: products with
requiredRoleIdsare hidden from users who lack those roles (stub — always shows products with no required roles). - Shows up to 10 products per page. Navigation buttons appear when more than 10 products exist.
- Each product embed includes:
- Name and description
- Formatted price (e.g.
$9.99) - Stock level (public: numeric qty; private: "In stock" / "Out of stock")
- Product image (resolved from
product.imageUrl→botConfig.defaultProductImageUrl→ placeholder) - Active global discount promo line (e.g.
🎁 Use code **SAVE10** for 10% off!) when at least one active global discount applies
- Order button per product fires
catalog:order:<productId>which enters the rich order flow.
Pagination
Custom IDs used: catalog:page:<n> (0-indexed).
Permissions
None — available to all guild members.