<%- include("../../../src/web/views/partials/layout-top", { title }) %>

Economy Framework

Unified, cross-platform currency tooling and stats.

<% if (config.currency.icon) { %> Currency icon <% } %> <%= config.currency.name %> (<%= config.currency.plural %>)

Overview

Your balance <%= userBalance %>
Command root !<%= config.command.root %>
Cooldown <%= config.cooldownSeconds %>s
<% if (isAdmin) { %>
Total in circulation <%= globalStats.totalBalance %>
Total spent <%= globalStats.totalSpent %>
<% } %>
<% if (isAdmin) { %>

Currency settings

Example: coins, souls, shards
Comma separated aliases that also trigger the root command.

Currency icon

PNG only, up to 2 MB. Used across the WebUI.

Banking labels

Shown on the profile page button and the banking page title.

Platforms

Currency earning rules

Monetization tiers

<%= config.communityFunds.plural %>

<% if (!funds.length) { %>

No <%= config.communityFunds.plural.toLowerCase() %> configured yet.

<% } else { %> <% } %> <% if (isAdmin) { %>

Create <%= config.communityFunds.name %>

Update <%= config.communityFunds.plural %>

<% funds.forEach((fund) => { %>
<% }) %> <% } %>
<% } %> <% if (isAdmin) { %>

Event rewards

<% if (!events.length) { %>

No custom events configured yet.

<% } else { %> <% } %>

Response templates

Customize bot replies. Tokens: {amount_text}, {balance_text}, {target}, {fund}, {lines}, {cooldown}, {usage}, {help}.

<% responses.forEach((response) => { %>
<%= response.label %>
<% response.replies.slice(0, 2).forEach((reply) => { %> • <%= reply.text %> <% }) %> <% if (response.replies.length > 2) { %> …and <%= response.replies.length - 2 %> more <% } %>
<% }) %>
<% } %> <% if (isMod) { %>

Adjust user balance

<% } %>

Top balances

Snapshot of the richest accounts.

<% if (!topBalances.length) { %>

No balances yet.

<% } else { %> <% topBalances.forEach((entry) => { %> <% }) %>
User Balance
<%= entry.username %> <%= entry.balance %>
<% } %>

Transaction history

Every change is logged with a UUID.

<% transactions.forEach((tx) => { %> <% const fromName = tx.from_name || 'System'; %> <% const toName = tx.to_name || 'System'; %> <% }) %>
UUID Type Amount From To Note Date
<%= tx.type %> <%= tx.amount %> <%= fromName %> <%= toName %> <% if (tx.activity_reward) { %>
<%= tx.note_display %> <% if (tx.activity_reward.hourStart && tx.activity_reward.hourEnd) { %>
<%= new Date(tx.activity_reward.hourStart).toLocaleString() %> - <%= new Date(tx.activity_reward.hourEnd).toLocaleString() %>
<% } %>
    <% tx.activity_reward.rewards.forEach((reward) => { %>
  • <%= reward.label %>: <%= reward.amount %> <% if (reward.hits > 0) { %> (<%= reward.hits %> events)<% } %> <% if (reward.minutes > 0) { %> (<%= reward.minutes %> min)<% } %>
  • <% }) %>
<% } else { %> <%= tx.note_display || tx.note || '-' %> <% } %>
<%= new Date(tx.created_at).toLocaleString() %>
Page 1 of 1
<%- include("../../../src/web/views/partials/layout-bottom") %>