Items are what give your server’s coins meaning ♡ This page covers how to create items, customize them, manage settings like stock/visibility, and add custom actions that run when a member uses /consume.
You’ll build items inside your server’s shop editor (and members will browse it with /servershop). Purchased items show up in the member’s /inventory, and consumables can be used with /consume.
item key basics + role items vs custom items
Creating an item requires a unique item key. This key is the item’s permanent identity. It cannot be changed later.
daily_cookie, vip_role, rose_bundle).There are two common patterns: role shop items and custom shop items.
Creating role shop items only requires the role ID — everything else is optional. When a member purchases it, the role is given automatically.
vip_role✨Custom shop items can simply sit in inventories as collectibles — no actions needed.
starlit_trophy🏆name, description, emoji, and making items feel “real”
Items can optionally have a custom name, description, and emoji. These help members understand what they’re buying at a glance.
daily_cookie🍪enable/disable, stock, and when items appear in the shop
Items can be enabled or disabled in the server shop. This is great for “prize-only” items.
Stock lets you control how many total purchases are available. You can set it, adjust it later, or remove it.
winter_badge❄️turn items into “little commands” that run on /consume
Custom shop items are a little more advanced: they can be regular trophies, or they can have custom actions attached. When a member uses /consume on the item, those actions trigger.
To configure custom actions, open /server-currency → Server Shop → select your item → Manage Item → Custom Actions.
Copy one JSON object into JSON Params and adjust values.
{
"op": "msg.dm",
"text": "You opened a Celestial Crate! ✨",
"embed": {
"title": "🎁 Celestial Crate",
"description": "Enjoy your reward!",
"color": 3447003
},
"delay_s": 3
}
{
"op": "msg.channel",
"channel": "here",
"text": "{user} just opened a crate!",
"embed": {
"title": "🎉 Congrats!",
"description": "Loot drop incoming!",
"color": 15844367
},
"delay_s": 4
}
{
"op": "msg.reply",
"text": "Thank you for your purchase!",
"delay_s": 0
}
{
"op": "msg.ephemeral",
"text": "Rewards delivered. Check your DMs ✨"
}
{
"op": "nick.set",
"template_string": "{name} the Brave",
"duration_s": 3600,
"delay_s": 2
}
{
"op": "role.give",
"role_id": 777000111222333444,
"duration_s": 604800,
"delay_s": 5
}
{
"op": "role.remove",
"role_id": 777000111222333444,
"delay_s": 2
}
{
"op": "timeout.user",
"seconds": 3600,
"reason": "Cooldown period after item use",
"delay_s": 0
}
{
"op": "channel.create",
"name": "{user}-lounge",
"category": 1424447177513635912,
"private": true,
"delay_s": 6
}
{
"op": "thread.create",
"name": "{user}-support-room",
"private": false,
"delay_s": 2
}
{
"op": "embed.log",
"channel": 123456789012345678,
"title": "Purchase Logged",
"description": "{user} bought {item}",
"color": 15158332,
"delay_s": 0
}
{
"op": "currency.give",
"amount": 5000,
"note": "💰 {user} just won **5,000** coins!",
"delay_s": 0
}
{
"op": "currency.give",
"choices": [
{
"amount": 100000,
"weight": 1,
"note": "JACKPOT 💎 {user} just hit 100k!!"
},
{
"amount": 2500,
"weight": 5,
"note": "{user} found 2,500 coins."
},
{
"amount": 500,
"weight": 20,
"note": "{user} got 500 coins!"
}
],
"delay_s": 0
}
{
"op": "inventory.give",
"key": "GoldenTicket",
"qty": 1,
"note": "🎟 {user} received a **Golden Ticket**!",
"delay_s": 0
}
{
"op": "inventory.give",
"choices": [
{
"key": "GoldenTicket",
"qty": 1,
"weight": 1,
"note": "🌟 LEGENDARY DROP for {user}: Golden Ticket!"
},
{
"key": "UltraSword",
"qty": 1,
"weight": 2,
"note": "⚔ {user} pulled an Ultra Sword!"
},
{
"key": "TrashBag",
"qty": 5,
"weight": 8,
"note": "🗑 pity pull for {user} (5× TrashBag)"
}
],
"delay_s": 0
}
{
"op": "xp.give",
"amount": 250,
"note": "✨ {user} gained **250 XP**!",
"delay_s": 0
}
{
"op": "xp.give",
"choices": [
{
"amount": 5000,
"weight": 1,
"note": "🔥 HUGE XP DROP for {user}: +5,000 XP!!"
},
{
"amount": 500,
"weight": 5,
"note": "{user} gained 500 XP!"
},
{
"amount": 100,
"weight": 20,
"note": "{user} gained 100 XP!"
}
],
"delay_s": 0
}
{
"op": "pet.give",
"key": "dragonling",
"note": "🐉 {user} just bonded with a Dragonling companion!"
}
{
"op": "pet.give",
"choices": [
{
"key": "phoenix",
"weight": 1,
"note": "🔥 A PHOENIX has chosen {user}!"
},
{
"key": "slime-bud",
"weight": 6,
"note": "🪱 {user} adopted a Slime Bud :3"
}
]
}
{
"op": "modal.send",
"title": "Quick Survey",
"questions": [
"Why did you buy this?",
"Favorite character?",
"Any suggestions?"
],
"channel": "here",
"msg": "@Staff New response received!"
}
daily_cookie (can’t be renamed later)🍪rose_bundle🌹rose × 3sticker_pack × 1event_pass🎟️