Skip to content
Now live — sign in to your guild dashboard
Guild Butler
EN
Sign in Add to Discord
Killboard

Raids

Raids & signupsAttendance & stats

Economy

Loot & settlementRegearSiphoned energy

Management

Recruitment & applicationsRoles & nicknamesRoster upkeep

Extras

GiveawaysDashboard & white-labelFeatures Pricing Docs
Sign in Add to Discord

Features Siphoned energy

The energy log in your Discord. Who owes what, on one board.

Paste Albion's copyable energy log into a thread. The bot works out what is actually new, keeps every player's balance, lets officers take guild spending off a member's name, and DMs the people in the red.

Discord
Guild Butler ✓ APP Today at 10:15
⚡ Siphoned Energy — VITRYLA
Season 27 · log through 2026-07-03 08:54 UTC
▎ Owing (most negative)
−1,204 · Kiseg
−342 · Bors
−110 · flafi
−34 · ggpussy
−13 · Rmtmoli
−10 · Groteym
────────────────────────────
▎ No debt (top contributors first)
+664 · Flaiton
+453 · MyFed1k
+40 · Yaberezv1k
+26 · WinLi
+4 · Kabina777
0 · MortStory
🌍 From territories this period: +12,400
🏦 Guild spent this period: −9,894
🤝 Owed to depositors: +33,120
💎 Stored — pool: 800,000 · bank: 250,000 · total: 1,050,000
…+12 more → 📜 Full list
Request update My balance Full list
The energy console — one message the bot owns and keeps editing after every import, tag and link. The columns are shortened here; the real board carries up to 20 names each. Linked members are blue profile links in Discord; an unlinked in-game name renders as a code chip, which also makes a link- or mention-shaped name inert.
~4 weeks
How much history the game keeps
Albion’s guild log forgets everything older. A hole in your history gets a warning on the preview — never swallowed in silence.
4 fields
To tell rows apart
Timestamp, player, reason, amount. Scope stays out on purpose, so an officer’s “this was a guild expense” tag survives every future paste.
0
Silver touched
Its own table, its own balance, its own board. Loot splits, the silver ledger, seasons and regear are untouched.
62
Tests on this feature
Parser, reconciler, queries and console render — plus 10 more on the shared in-game-name registry it sits on.

01 · Why it exists

The game gives you a log and nothing else

Albion's guild tab shows a rolling four-week list of who deposited and who withdrew. It does not total anything, it does not know who your officers are, and it forgets.

What guilds do today

They run a second bot, or an officer keeps a spreadsheet. Both mean somebody copies a wall of rows every few days and does arithmetic by hand, and both go stale the moment that person is busy.

The outside bot most guilds came from had one fatal gap: it could not mark a withdrawal as a guild expense. So when an officer pulled 4,000 energy to buy power cores for the hideout, that showed as personal debt.

Operators worked around it by routing every guild spend through one character — a scapegoat account, parked at −13,725 in one real guild — purely so the other balances stayed readable. The debt was fictional. Everyone knew. Nobody could fix it inside the tool.

Guild Butler tracks energy in the same bot that already tracks silver, and the guild-expense problem is solved by tagging the entry instead of laundering it.

Discord
"Date"                 "Player"    "Reason"       "Amount"
"2026-07-03 08:54:12"  "Groteym"   "Withdrawal"   "-10"
"2026-07-03 08:54:11"  "Groteym"   "Withdrawal"   "-10"
"2026-07-03 08:51:44"  "Flaiton"   "Deposit"      "120"
"2026-07-02 21:10:03"  "Bors"      "Withdrawal"   "-4000"
"2026-07-02 20:58:37"  "ggpussy"   "Withdrawal"   "-34"
… 507 more rows, then it stops about four weeks back
What the game hands you, pasted into the update thread: quoted, tab-separated, UTC, newest first, no row ids — and legitimate near-identical rows seconds apart, because people click withdraw more than once.

02 · Setting it up

Install a board, press a button, paste

Energy is off in every server until an officer installs the console. Installing is the on switch — there is no second step for people to forget.

  1. An officer installs the console officer

    /siphoned hub📥 Install console → pick a text channel. The bot posts one message it owns and keeps editing: balances in columns, most negative first, with the buttons everyone else uses. Installing is what switches energy tracking on — nothing about this feature runs until an officer does it. The hub also shows a Getting started checklist (install the console · import your first 4-week log · migrate balances from your old bot · link in-game names) until the essentials are in place.

  2. Anyone presses 🔄 Request update member

    The button sits on the console and is open to everyone, because the person who notices the numbers are stale is usually not the person allowed to paste. A filler — an officer, or a holder of the role set in ⚙️ Settings → Log-filler role — lands straight in the paste thread with the instruction: "Paste the log from Guild Management → Siphoned Energy (Discord attaches long pastes as a file automatically), or upload a .txt/.tsv/.csv." Anyone else gets "✅ Request sent — an officer will update the log." and the bot posts a role ping inside the thread instead.

  3. The filler pastes the log into the thread officer

    The thread hangs off the console message itself, and Discord gives a message-anchored thread the same id as its message. So the bot recognises a paste with no memory of who opened what: it survives a restart, and it is correct even with several bot processes running. The message text is parsed, or a text attachment is downloaded and parsed the same way. Whether the person may paste is re-checked at paste time, not only when the button was pressed.

  4. The bot shows a preview and writes nothing yet bot

    Parsed rows, the date range, how many are new, how many you already hold, how many were rejected, how many were skipped for not being a Deposit or Withdrawal, and how many players are new. Warnings live here too: a gap since the last import, unparseable rows, and a wrong-guild check. Then three buttons: ✅ Import 128, 🔕 Skip notifications, ✖️ Cancel. On a guild’s very first import the silent button is the green one — a 4-week backlog would otherwise DM thirty people at once on day one.

  5. Import runs as one transaction bot

    New in-game names are added to the shared registry, the paste is reconciled against what is already held, only the genuinely new rows are inserted, and the watermark moves. The reconciliation is recomputed inside the commit, not taken from the preview, so two officers importing at the same moment cannot double-insert — the second one simply commits zero new rows.

  6. Officers lift the guild’s own spending off players officer

    The summary carries a picker of the biggest movements, largest magnitude first, 25 to a page with ◀ ▶ and a 🔍 Search by in-game name. Ticking a row means "this was a guild transaction"; unticking flips it back. Deposits are in the list too, so a large guild deposit routed through one player can be lifted the same way. Nothing is deleted — the row stays, so tomorrow’s paste still recognises it and cannot resurrect it as personal.

  7. Done fires the DMs, then the console redraws bot

    Pressing Done sends the negative-balance DMs — deliberately after the reclassify step, so the officer who just moved 4,000 for power cores is never the one told they owe it. Each DM reads "Your siphoned-energy balance in VITRYLA is −34 ⚡. Please deposit to bring it positive." One player gets at most one such DM per 7 days. The console message is then edited in place with the new balances.

  8. Members check themselves anywhere member

    ⚡ My balance on the console, /siphoned balance, /menu → Me → ⚡ Energy balance, and the My-status card, which shows the energy line right beside the silver balance. A member claims their own in-game name once with /ign set or the 🎮 Set my in-game name button on the status card.

The officer hub

/siphoned hub is the one officer screen. It reports how many debtors you have, how far the log runs, the period figures and where the console lives — and carries the eight controls below.

It is ephemeral, so it never clutters a channel, and it re-renders in place as you work. Members do not see it: the hub is officer-gated, while every button on the public console is not.

Discord

Only you can see this

Pick a channel for the energy console:

Pick a channel for the energy console:
Installing. Pick any text channel the bot can post in — the console is posted fresh, so running this again is also how you move it or replace a deleted board.
Hub controlWhat it does
📥 Install console Posts the console in a channel you pick and turns tracking on for the server.
🔄 Request update Opens (or reuses) the paste thread anchored to the console message.
📊 Set current total Records the guild's total stored energy, plus an optional separate bank figure. Two readings in a period give you territory income.
🔗 Players The paginated name list: link a name to a member, mark a 🏦 guild account, 🙈 hide someone who left, or open 🏷 just that player's transactions.
🏷 Reclassify The biggest-first picker for tagging guild transactions, reachable at any time rather than only after an import.
📥 Migrate balances Paste another bot's balance list once, to land finals exactly on its figures.
🗑 Remove last import Deletes the last import batch after a confirmation that names the row count, and recomputes the watermark.
⚙️ Settings Tracking on/off, negative-balance DMs on/off, the log-filler role, and Start new period.

03 · The board

One message everybody reads, one card only you see

One bot-owned message, pinned, edited in place after every import, tag, link and reading. Debtors first, because that is the list the guild is actually looking for.

How it is laid out

Debtors are listed most negative first. Then a full-width divider — needed because Discord packs inline fields side by side and the two groups would otherwise blur into one — then everyone in the clear, best contributor first.

Each section holds up to 20 rows per column and 2 columns, and the remainder is one tap away behind 📜 Full list. Two columns rather than three is deliberate: three wrapped names badly at normal desktop widths.

The header carries the period label, "log through … UTC", and who updated it and when. Past 24 hours it gains "⚠️ Log is over a day old — press 🔄 Request update."

Under the columns: territory income, guild spend, what the guild owes its net-positive depositors, and the last recorded pool and bank totals. A guild that has never recorded a total simply does not get that line.

Discord

Only you can see this

⚡ Your siphoned energy
⚠️ You owe −34 ⚡ — please deposit to go positive.

Recent
➖ +10 — withdrawal · 02/07/2026
➖ +10 — withdrawal · 30/06/2026
➕ +120 — deposit · 28/06/2026
➖ +154 — withdrawal · 27/06/2026
➕ +20 — deposit · 24/06/2026
⚡ My balance — private to the member who pressed it, and identical whether they reach it from the console, /siphoned balance or /menu → Me.

04 · Paste, preview, import

Paste the same log every day if you like

The game log has no row ids, and it legitimately contains identical rows seconds apart. That single fact decides how the whole import works.

Discord
Guild Butler ✓ APP Today at 10:15
⚡ Import preview
Parsed 512 rows · 05/06/2026 → 03/07/2026
New: 128 · Already recorded: 384 · Rejected: 0 · Skipped (not a Deposit/Withdrawal): 0
New players: 3

⚠️ Gap: this paste starts after the last import (28/05/2026) — the window in between has aged out of the game log and can’t be recovered.
Import 128 Skip notifications Cancel
The preview. Nothing has been written yet — these numbers are computed against what the bot already holds, and Cancel costs nothing.

Why a unique key would have been wrong

The obvious design is a unique constraint on the row. It would have silently deleted every genuine double withdrawal — and people click withdraw twice in the same second all the time — quietly corrupting exactly the balances this feature exists to defend.

So the bot does a multiset diff instead. For each distinct combination of timestamp, player, reason and amount, it inserts only the copies it does not already hold. Two identical rows in the paste and one in the database means one insert, not zero and not two.

Scope and note are deliberately not in that key. That is what lets an officer's "this was a guild expense" tag survive every future paste: tomorrow the row reads as already recorded, and can never come back as personal.

CaseWhat we already holdWhat you pasteResult
The same paste twice Three rows The same three rows New 0 · already recorded 3
A wider, overlapping paste Rows at 100 and 200 100, 200, 300, 400, 500 New 3 — only 300, 400 and 500 are inserted
Click-spam, same second, same amount One copy of the row The same row twice New 1 · already recorded 1 — the second copy is real
A row already tagged as a guild expense The row, scope guild The same row — the log says nothing about scope New 0. The tag survives, permanently
A hole in coverage Watermark at 50 Oldest row is 100 Gap warned on the preview. The missing window is gone from the game

The reconciliation is recomputed inside the commit transaction rather than trusted from the preview, so two officers pressing Import at the same moment cannot double-insert — the second commits zero rows and says so.

05 · Guild spending

Bought power cores for the hideout? Not your debt

A member's balance is the sum of their personal-scope rows only. Re-tagging one entry as guild takes it off that balance instantly — and deletes nothing.

Biggest first, and reversible

The picker orders by size, largest magnitude first, so the −4,000 power-core withdrawal is at the top and routine −10s never bury it. Deposits are in the list too, because a large guild deposit can pass through one player's hands just as a withdrawal can.

The select's rule is: ticked becomes guild, everything else on this page becomes personal. That makes it a toggle rather than a one-way door, and it is why the 🔍 filter travels inside the control itself — a panel that showed three filtered rows must never let the handler act on twenty-five unfiltered ones.

There is deliberately no automatic threshold. A wrongly-personal entry announces itself the moment the member complains; a wrongly-guild entry leaks accountability in silence. So the safe default is personal, and a human decides.

Discord

Only you can see this

⚡ Import preview
✅ Imported 128 new row(s). 384 already recorded.

📊 Tip: also record the guild’s current total stored energy (button below) so territory income can be tracked.

Any of these that were guild transactions (deposits or withdrawals)? Select them to take off the player’s balance.
Any of these that were guild transactions (deposits or withdrawals)?…
Page 1/3 Search Done
Set current total
Straight after an import — the same picker is also on the hub as 🏷 Reclassify, and on each player's card as 🏷 Transactions.
ScopeSet byCounts toward a member's balanceWhere it shows up
personal The default for every imported row Yes The console columns, ⚡ My balance, and the negative-balance DM
guild An officer ticks the movement in the 🏷 picker, or the whole account is marked 🏦 Guild account No A guild-tagged withdrawal lands in "🏦 Guild spent this period". A guild-tagged deposit simply stops counting toward the member — the guild-spend figure counts withdrawals only.

06 · Names and the nudge

The log has character names. The DM needs a Discord account.

One shared list links in-game names to Discord accounts, and the whole bot reads the same one — so a name that arrived in an energy paste is already there when its owner turns up to claim it.

Claim your own name

An import creates unlinked rows for names nobody has claimed. When that person later runs /ign set, presses 🎮 on their status card, or is approved through a recruitment application, the link snaps onto the existing row and their history comes with it — no officer has to type anything.

With one guard. If the name already carries an energy balance, the claim is queued for an officer rather than granted: linking would hand over someone else's history, and nothing can tell the real player from someone who read the name off the console. A zero-balance name links straight through.

When the DM fires, and why then

The DMs go out when the officer presses Done, never at the moment of import. At import, that officer's own 4,000-energy guild withdrawal is still sitting on their personal balance — and a false alarm to the person doing the work destroys trust in the whole system.

Every linked, non-hidden member in the red is messaged, rate-limited to at most one DM per player per 7 days. Closed DMs are ignored quietly rather than failing the import, and the whole thing can be switched off per server, or skipped for a single import with 🔕 Skip notifications.

Discord
Guild Butler ✓ APP Today at 10:21

Your siphoned-energy balance in VITRYLA is −34 ⚡. Please deposit to bring it positive.

The whole notification: one direct message with the number and what to do about it. The board is public on purpose; the reminder is not — nobody gets pinged in a channel for owing energy.
Discord

Only you can see this

⚙️ Siphoned Energy settings
Tracking: on
Negative-balance DMs: on
Log-filler role: @Quartermaster
Period start: 1 July 2026
Toggle tracking Toggle DMs Start new period
Log-filler role:…
⚙️ Settings. The log-filler role is the one that decides who may paste — everything else about the console is open to the whole channel.

Who may paste

Officers always. Plus whoever holds the log-filler role, which exists because pasting a log is clerical work and should not require handing someone your economy permissions.

Pressing 🔄 Request update is open to everybody. A filler is dropped into the thread with the paste instructions; anyone else gets "✅ Request sent — an officer will update the log." and the bot posts the request in the thread with a role ping.

Starting a new period takes an optional label — "Season 27" — and resets the guild flow figures. It never touches a personal balance, because a debt does not expire when a season does.

07 · Moving off your old bot

Keep everyone's balance, drop the scapegoat

Importing your old bot's balances and the current four-week log naively counts the overlap twice. The order fixes it: import the log first, then paste the balances.

Discord

Only you can see this

📥 Migrate balances from another bot
Parsed 41 balances · 38 match existing players · 3 new · 2 skipped.

Exclude any scapegoat/guild-debt accounts, then apply — final balances will match the pasted figures exactly.
Select accounts to skip (e.g. the debt-holder)
Apply migration
The migration preview, sorted biggest magnitude first so the parked debt account stands out at the top. An excluded name is never even created.

What it writes

For each player, one opening adjustment of old balance − what our log already implies, dated one second before the oldest imported row. Finals land exactly on the old bot's figures, with the four weeks of real history preserved underneath them.

Re-running the migration deletes the previous openings first, so a corrected list just re-settles instead of doubling. That is the difference between a migration you can retry and one you get exactly one attempt at.

The parser is lenient about the old bot's copy format: -13725 🔋 | @[VT] kojulina and a plain -13725 kojulina both work, and junk lines such as an placeholder are skipped and counted rather than failing the paste.

StepPlayer AA name the log never sawThe scapegoat account
The old bot says −100 +50 −13,725 — ticked to skip
Our imported log implies −20 (two −10 withdrawals) 0
Opening adjustment written −80 +50 None
Final balance −100 — matches the old bot exactly +50 — the name is created for it Does not exist. That debt was guild spending all along

Excluding the scapegoat is the point of the whole exercise. Migrating it would convert years of guild spending into one player's personal debt — precisely the thing this feature exists to end. Going forward, an account that keeps doing that job is marked 🏦 Guild account instead, which moves its entire history off personal balances in one transaction and can be undone just as easily.

08 · Everything else

The rest of it

Paste it raw, nothing silently dropped

Handles the header row, CRLF, quoted or unquoted cells and blank lines. Bad rows are reported, not swallowed.

The game log is the source of truth, so officers never type an amount — the only exception is an opening balance during migration. Everything is sorted ascending by timestamp before anything else happens. Rows that cannot be parsed are counted as "Rejected" in the preview rather than quietly disappearing, and any row whose reason is not Deposit or Withdrawal is reported but not imported — so an old bot’s Manual transfer bookkeeping, pasted by mistake, can never inflate someone’s personal balance. One paste is capped at 50,000 rows, comfortably above a real 4-week export.

Wrong-guild and gap warnings, before you import

A paste from the wrong guild, or one that starts after your last import, is flagged on the preview.

If a paste holds at least 5 players and more than 70% of them are unknown, the preview asks "is this the right guild’s log?". If its oldest row is newer than the watermark, it says so and explains that the window in between has aged out of the game and cannot be recovered by anyone. The gap is recorded on the import row itself, so the audit trail keeps it. Neither warning blocks the import — they inform a human who can see something the bot cannot.

Big roster? The pickers page and search

Both officer pickers page 25 at a time with ◀ ▶ and a 🔍 name filter that is safe to act on.

A Discord dropdown holds 25 options and has no type-to-filter, so a 120-player guild needs both. The 🔗 Players list and the reclassify picker each page 25 rows and carry a 🔍 Search modal filtering on in-game name; the button turns blue while a filter is on, and an empty submit clears it. The filter is part of the panel’s identity, not decoration: the reclassify handler re-reads the exact same filtered page to decide which rows flip back to personal, because an unfiltered re-read would silently reclassify rows the officer never saw. That case has its own named unit test. A typed % or _ stays a literal character.

Batch undo for a bad paste

🗑 Remove last import deletes that batch’s rows and recomputes the watermark. Re-paste to restore.

The entries table is a rebuildable replica of an external ledger, which is the reason deleting a whole import batch is allowed here and nowhere else in the bot. Removing the last import deletes only the rows belonging to that batch, recomputes the watermark from what remains, and redraws the console — and the confirmation tells you how many rows are going. Opening adjustments written by a migration are not part of any import batch and are never touched. Because the game log itself is unchanged, the fix for a mistaken removal is simply to paste the log again.

Period totals, and honest territory income

Start a period and "Guild spent this period" counts from it; territory income is worked out, not guessed.

Personal balances never reset — a debt does not expire at a season boundary — but the guild-flow figures are framed by a period started with Start new period and an optional label such as "Season 27". Guild spend is the sum of guild-scope withdrawals since that start. Territory income cannot come from the log, because passive generation never appears there, so it is computed: an officer records the guild’s total stored energy with 📊 Set current total (plus an optional separate bank figure), and between two readings the bot reports the change in total minus the net logged flows. With fewer than two readings in the period it prints "— (log the total twice)" rather than inventing a number.

Guild accounts, and the people who left

Mark a whole account 🏦 Guild account and its entire history leaves personal balances. 🙈 hides a leaver.

Some characters exist to move guild energy, so tagging their withdrawals one at a time is busywork. Marking a player 🏦 Guild account flips their default scope and re-scopes their whole history in one transaction, which also takes them off the console entirely — unmarking restores everything. Separately, 🙈 Hide (left guild) removes someone from the board, the full list and the DM list while keeping their history in the period figures. Both are on the player’s card in 🔗 Players, next to 🏷 Transactions, which opens the reclassify picker scoped to just that person.

One Discord, all your alts

A Discord account can own more than one in-game name, and ⚡ My balance sums across all of them.

Alts are normal in Albion, and the log speaks in character names. The registry lets one Discord account own several, so a member with two characters sees one number rather than doing the arithmetic themselves — and the card lists the names it added up. The console still lists each character on its own row, because the log does, and because accountability is per character in the game.

It never touches silver — except once, on purpose

Separate table, separate balance, separate board. One deliberate crossing, in the other direction.

Nothing in this feature reads or writes the silver ledger, the settlement math, seasons or regear. That was a constraint from the start: settlement is the most protected surface in the bot, and dragging a second currency into it was the rejected alternative. The single crossing point runs the other way — if energy tracking is on, a member who owes energy is refused a silver transfer to another member, so a tracked obligation cannot be emptied out into an untracked one.

09 · Commands

One officer command, and members need none of them

An officer types /siphoned hub once — that is the only door to the officer screen, and every officer control lives on it. Members never have to type anything: the console buttons and /menu → Me → ⚡ Energy balance cover everything they can do.

/siphoned hub/siphoned update/siphoned balance/siphoned top/ign set/ign show/ign unlink/ign clear

10 · What it cannot do

The limits, stated plainly

Some of these are the game's, some are Discord's, and some are ours. Better to know them before you install than after.

11 · Questions

Questions officers actually ask

Does this move silver, or affect loot splits in any way?
No. Energy lives in its own table with its own balance and its own board. The settlement math, the silver ledger, seasons and regear are untouched by everything on this page. There is one deliberate link in the other direction: while energy tracking is on, a member who owes energy is blocked from sending silver to another member, so a tracked debt cannot be turned into an untracked one.
What happens if we paste the same log twice, or paste an overlapping range?
Nothing bad, by design. The bot compares the paste against what it already holds per (timestamp, player, reason, amount) and inserts only the copies it is missing. Re-pasting yesterday’s log inserts zero rows. Pasting a wider range backfills only the part you were missing. Genuine identical rows seconds apart — someone clicking withdraw repeatedly — are kept by count, not collapsed, because collapsing them would quietly corrupt that person’s balance.
How do we stop the officer who buys power cores from looking like the biggest debtor?
Tick that withdrawal in the 🏷 reclassify picker. It stays in the mirror as a real log row, but it stops counting toward their personal balance and moves into "🏦 Guild spent this period". Because the tag is not part of the dedupe key, tomorrow’s paste still recognises the row and cannot resurrect it as personal. Unticking puts it back — it works both ways. For an account that does this constantly, mark it 🏦 Guild account and its entire history moves off personal balances at once.
We already use another energy bot. Can we move without everyone restarting from zero?
Yes, and the order matters: import the 4-week log first, then paste the old bot’s balance list into 📥 Migrate balances. The bot writes one opening adjustment per player of old balance − what our log already implies, so final balances land exactly on the old figures with the recent history preserved underneath. The parser copes with the old bot’s copy format — pipes, emoji, [VT] tags and @ prefixes included — and skips junk lines. Re-running the migration clears the previous one first, so a corrected list re-settles instead of doubling.
Who is allowed to paste the log?
Officers always, plus anyone holding the log-filler role you set in ⚙️ Settings. Everyone else can still press 🔄 Request update — their click posts a request in the thread that pings the filler role. Permission is re-checked at the moment the message is pasted, not only when the button was pressed, so losing the role mid-flow stops the import.
Is the debtor list public?
Yes, on purpose. Visibility is the accountability mechanism, and it is exactly what guilds used their old bot for. The console goes in whichever channel you install it in, so you control who can see it — but the update thread hangs off that console message and is a public thread, so pastes, previews and import summaries are visible to the same people. Individual member views (⚡ My balance, /siphoned balance) are private replies only that person can see.
What if someone’s Discord is not linked to their in-game name?
They still appear on the console under their in-game name, and their balance is still tracked — accountability does not depend on linking. What they lose is the DM when they go negative and the ⚡ line on their own status card. Linking is self-service with /ign set or the 🎮 button, with one guard: if the name already carries an energy balance, the claim is queued for an officer to approve instead of being granted on the spot. Nothing can tell the real player from someone who read the name off the console.
We forgot to update for two weeks. What do we lose?
Whatever Albion has already dropped from its rolling ~4-week window is gone for everyone, us included — there is no API to fetch it back. The bot detects the hole and says so in the preview: "Gap: this paste starts after the last import … the window in between has aged out of the game log and can’t be recovered." The gap is recorded on the import for the audit trail, and after 24 hours without an update the console header itself starts asking for one.
Someone pasted the wrong thing. Can we undo it?
The preview writes nothing, so ✖️ Cancel costs you nothing. If a bad paste was actually imported, the hub’s 🗑 Remove last import deletes that batch’s rows and recomputes the watermark, and the confirmation tells you how many rows go. Re-pasting the correct log restores everything, since the reconciler is deterministic. A wrong-guild paste is also flagged before you commit, when more than 70% of the players in it are unknown.
Can we track energy that our territories generate?
Partly, and honestly. Passive territory generation never appears in the player log — it only moves the guild’s total stored figure on another screen. So it is derived: an officer records that total with 📊 Set current total, and between two readings in the same period the bot reports the change in total minus the net logged flows as territory income. With fewer than two readings it prints "— (log the total twice)" rather than guessing.

See it running before you install

The community server runs the bot in the open — a live killboard, real boards to press, and humans who answer questions.

Watch it live

Stop keeping the energy log in a spreadsheet

One pinned board, one paste, and guild spending that stops landing on a member's name. Free to add.