Gift codes
One of the most popular features. The bot maintains a registry of Century Game promo codes (db/giftCodes.yaml), scrapes new ones from public sources, and redeems them against every configured account on a schedule. The dashboard page is your single view of “which codes succeeded for which accounts.”
What it does
Section titled “What it does”- Scrapes new codes — the
Scrape nowbutton hits the public code sources, dedupes against the registry, and queues anything new. - Redeems across all accounts —
Redeem now(or the cron schedule) walks every account configured indb/state/state.dband submits each pending code. The matrix view shows the result per account, per code. - Tracks the lifecycle — once a code is
ALREADY_RECEIVEDfor an account, it never gets retried for that account.SUCCESSrows turn green and are dropped from the next pass. - Per-account columns — each configured player ID gets its own column. Status values:
SUCCESS— code redeemed, rewards in inboxALREADY_RECEIVED— this account already had it (no retry)FAILED— API rejected (expired, region-locked, hit a per-account limit, etc.)PENDING— queued but not yet attempted
- API errors surfaced — the
API ERRcolumn shows the upstream code (20000,40005, …) so you can tell “the code is bad” from “this one account is rate-limited.”
Counters at the top
Section titled “Counters at the top”- Active — codes that haven’t expired and could still pay out for someone.
- Needs run — active codes that have at least one account in
PENDINGstate. - Pending slots — total
account × codepairs waiting to be tried (this is what the next run will burn through). - Expired — codes the API has confirmed dead, kept around for history but skipped on redeem.
Why it’s a workhorse
Section titled “Why it’s a workhorse”Manual gift code redemption is the single biggest time sink for a Whiteout Survival multi-account player — every time the Century Game team or a content creator drops a new code, you’d otherwise have to switch accounts and re-type it N times. The bot does the whole sweep in one pass and logs which accounts came up empty so you can spot a stuck account quickly.
External accounts (Pro)
Section titled “External accounts (Pro)”Redeem for any user ID, not just your own accounts
Beyond the accounts the bot owns, the redeem loop can target any list of player IDs (FIDs) you paste in — alliance members, partner farms, secondary accounts on other servers, friends who don’t run the bot themselves. Same matrix view, same per-code/per-account status, same retries.
Bulk-paste accepts fid or fid label, one per line. Scope is per game — WOS and Kingshot have independent lists. License feature flag: gift_codes.external_accounts.
The External accounts panel on the Gift codes page is where you manage this list. Each external ID gets its own column in the matrix alongside your own accounts. Rows added before a Pro license expires stay visible as read-only history but are skipped on redeem until the feature is licensed again.
Where it runs
Section titled “Where it runs”The redeem loop is scenario gift_codes/scenarios/by_cron/redeem_gift_codes.yaml. The default cron pulls and redeems every few hours; you can also kick a one-off run from the dashboard’s Redeem now button or from the queue.