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

Echonomy 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. 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") %>