Last changes before full rewrite

This commit is contained in:
AlacrisDevs
2026-04-04 20:27:15 +03:00
parent fdb0e5eb5b
commit ae393f7c35
8 changed files with 11930 additions and 930 deletions

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@ pocketbase.exe
pocketbase
pb_data/
pb_migrations/
logs/

View File

@@ -11,8 +11,6 @@
| `sheets.py` | Google Sheets integration (member sync) |
| `member_sync.py` | Birthday/member sync background task |
| `config.py` | Environment variables (TOKEN, GUILD_ID, PB_URL, etc.) |
| `migrate_to_pb.py` | One-time utility: migrate `data/economy.json` → PocketBase |
| `add_stats_fields.py` | Schema migration: add new fields to `economy_users` PocketBase collection |
---
@@ -23,18 +21,19 @@ Checklist - do all of these, in order:
1. **`economy.py`** - add the `do_<cmd>` async function with cooldown check, logic, `_commit`, and `_txn` logging
2. **`economy.py`** - add the cooldown to `COOLDOWNS` dict if it has one
3. **`economy.py`** - add the EXP reward to `EXP_REWARDS` dict
3a. **PocketBase** - if the function stores new fields, add them as columns via `python scripts/add_stats_fields.py` (or manually in the PB admin UI at `http://127.0.0.1:8090/_/`). Fields not in the PB schema are silently dropped on PATCH.
4. **`strings.py` `CMD`** - add the slash command description
5. **`strings.py` `OPT`** - add any parameter descriptions
6. **`strings.py` `TITLE`** - add embed title(s) for success/fail states
7. **`strings.py` `ERR`** - add any error messages (banned, cooldown uses `CD_MSG`, jailed uses `CD_MSG["jailed"]`)
8. **`strings.py` `CD_MSG`** - add cooldown message if command has a cooldown
9. **`strings.py` `HELP_CATEGORIES["tipibot"]["fields"]`** - add the command to the help embed
10. **`bot.py`** - implement the `cmd_<name>` function, handle all `res["reason"]` cases
11. **`bot.py`** - call `_maybe_remind` if the command has a cooldown and reminders make sense
12. **`bot.py`** - call `_award_exp(interaction, economy.EXP_REWARDS["<cmd>"])` on success
13. **`strings.py` `REMINDER_OPTS`** - add a reminder option if the command needs one
14. **`bot.py` `_maybe_remind`** - if the command has an item-modified cooldown, add an `elif` branch
4. **PocketBase** - if the function stores new fields, add them manually in the PB admin UI at `http://127.0.0.1:8090/_/`. Fields not in the PB schema are silently dropped on PATCH.
5. **`strings.py` `CMD`** - add the slash command description
6. **`strings.py` `OPT`** - add any parameter descriptions
7. **`strings.py` `TITLE`** - add embed title(s) for success/fail states
8. **`strings.py` `ERR`** - add any error messages (banned, cooldown uses `CD_MSG`, jailed uses `CD_MSG["jailed"]`)
9. **`strings.py` `CD_MSG`** - add cooldown message if command has a cooldown
10. **`strings.py` `HELP_CATEGORIES["tipibot"]["fields"]`** - add the command to the help embed
11. **`bot.py`** - implement the `cmd_<name>` function, handle all `res["reason"]` cases
12. **`bot.py`** - call `_maybe_remind` if the command has a cooldown and reminders make sense
13. **`bot.py`** - call `_award_exp(interaction, economy.EXP_REWARDS["<cmd>"])` on success
14. **`strings.py` `REMINDER_OPTS`** - add a reminder option if the command needs one
15. **`bot.py` `_maybe_remind`** and **`_restore_reminders`** - if item-modified cooldown, add `elif` branch
16. **`bot.py` `_REMINDER_COOLDOWN_KEYS`** - add `"cmd": "last_cmd"` mapping if reminder-capable
---
@@ -50,6 +49,7 @@ Checklist:
6. If the item modifies a cooldown:
- **`economy.py`** - add the `if "item" in user["items"]` branch in the relevant `do_<cmd>` function
- **`bot.py` `_maybe_remind`** - add `elif cmd == "<cmd>" and "<item>" in items:` branch with the new delay
- **`bot.py` `_restore_reminders`** - add the same `elif` branch
- **`bot.py` `cmd_cooldowns`** - add the item annotation to the relevant status line
---
@@ -65,8 +65,11 @@ Checklist:
## Adding a New Admin Command
1. **`strings.py` `CMD`** - add `"[Admin] ..."` description
2. **`strings.py` `HELP_CATEGORIES["admin"]["fields"]`** - add the entry
3. **`bot.py`** - add `@app_commands.default_permissions(manage_guild=True)` and `@app_commands.guild_only()`
2. **`strings.py` `OPT`** - add parameter descriptions
3. **`strings.py` `ADMIN`** - add response and DM strings
4. **`strings.py` `HELP_CATEGORIES["admin"]["fields"]`** - add the entry
5. **`economy.py`** - add `do_admin_<name>` function
6. **`bot.py`** - add command with `@app_commands.default_permissions(manage_guild=True)` and `@app_commands.guild_only()`
---
@@ -80,16 +83,46 @@ All economy state is stored in **PocketBase** (`economy_users` collection). `pb_
| Command | Cooldown | Base Earn | Notes |
|---|---|---|---|
| `/daily` | 20h (18h w/ korvaklapid) | 150⬡ | ×streak multiplier, ×2 w/ lan_pass, +5% interest w/ gaming_laptop |
| `/work` | 1h (40min w/ monitor) | 15-75⬡ | ×1.5 w/ gaming_hiir, ×1.25 w/ reguleeritav_laud, ×3 30% chance w/ energiajook |
| `/daily` | 20h (18h w/ korvaklapid) | 150⬡ | ×streak multiplier, ×2 w/ lan_pass, +5% interest w/ gaming_laptop; prestige daily_plus adds +20% per level |
| `/work` | 1h (40min w/ monitor) | 15-75⬡ | ×1.5 w/ gaming_hiir, ×1.25 w/ reguleeritav_laud, ×3 30% chance w/ energiajook; prestige work_plus +20%/level |
| `/beg` | 5min (3min w/ hiirematt) | 10-40⬡ | ×2 w/ klaviatuur |
| `/crime` | 2h | 200-500⬡ win | 60% success (75% w/ cat6), +30% w/ mikrofon; fail = fine + jail |
| `/rob` | 2h | 1025% of target | 45% success (60% w/ jellyfin); fail = fine; cannot rob TipiBOT |
| `/rob` | 2h | 1025% of target | 45% success (60% w/ jellyfin); fail = fine; cannot rob TipiBOT directly |
| `/heist` | 4h personal + 1h global | 2055% of house / n players | solo allowed, max 8; 35%+5%/player success (cap 65%); fail = 3h jail + ~15% balance fine |
| `/slots` | - | varies | pair=+0.5× bet; triple tiered: heart×4, fire×5, troll×7, cry×10, skull×15, karikas×25 (jackpot); ×1.5 w/ monitor_360; miss=lose bet; house edge ~5% |
| `/fish` | 2min (90s w/ ussipurk) | varies by fish rarity | Interactive minigame; catches go to inventory; sell with `/fishsell` |
| `/slots` | - | varies | pair=+0.5× bet; triple tiered; karikas jackpot ×25; ×1.5 w/ monitor_360; miss=lose bet |
| `/roulette` | - | 2× red/black, 14× green | 1/37 green chance |
| `/blackjack` | - | 1:1 win, 3:2 BJ, 2:1 double | Dealer stands on 17+; double down on first action only |
### Fishing System
- `/fish` - interactive minigame: cast → wait 515s for bite → press button within 2s (3s w/ echolood) → keep or sell
- Fish stored in `fish_inventory` (list of `{fish_id, weight, value}` objects)
- `/fishbook` - paginated fish collection showing caught species and inventory counts
- `/fishsell` - sell all fish from inventory at once
- `fish_inventory` and `fish_book` **survive prestige resets**
- `kalavork` (T3, 5000⬡): bumps all caught fish up one rarity tier
- `ussipurk` (T2, 3500⬡): cooldown 2min → 90s
- `echolood` (T3, 8000⬡): bite window 2s → 3s
### Prestige System
- Requires level 30 (9000 EXP)
- Resets: balance, EXP, items, cooldowns, jail
- Preserves: fish_book, fish_inventory, lifetime stats, prestige_points, season_total_exp, prestige_upgrades
- Awards prestige_points = max(1, exp ÷ 1000) at time of prestige
- Each prestige increments `prestige_level` counter
- Prestige coin/exp multipliers apply to all earned values
**Prestige Shop** (`PRESTIGE_SHOP` in economy.py):
| Upgrade | Max Level | Cost/level | Effect |
|---|---|---|---|
| `coin_mult` | 5 | 5 PP | +8% coin multiplier per level |
| `exp_mult` | 5 | 5 PP | +8% EXP multiplier per level |
| `daily_plus` | 3 | 7 PP | +20% daily base reward per level |
| `work_plus` | 3 | 7 PP | +20% work earnings per level |
### "all" Keyword
Commands that accept a coin amount (`/give`, `/roulette`, `/rps`, `/slots`, `/blackjack`) accept `"all"` to mean the user's full current balance. Parsed by `_parse_amount(value, balance)` in `bot.py`.
@@ -102,13 +135,35 @@ Commands that accept a coin amount (`/give`, `/roulette`, `/rps`, `/slots`, `/bl
### Jail
- Normal duration: 30 minutes (`JAIL_DURATION`)
- Heist fail duration: 3 hours (`HEIST_JAIL`) + fine 15% of balance (min 150, max 1000)
- Heist fail duration: 3 hours (`HEIST_JAIL`) + fine 15% of balance (min 150, max 1000)
- `gaming_tool`: prevents jail on crime fail
- `/jailbreak`: 3 dice rolls, need doubles to escape free. On fail - bail = 20-30% of balance, min 350⬡. If balance < 350⬡, player stays jailed until timer.
- `/jailbreak`: 3 single-button dice rolls (both dice at once), need doubles to escape free. Animated reveal with TipiDICE emoji. On fail after 3 tries - bail = 20-30% of balance, min 350⬡. If balance < 350⬡, stay jailed until timer.
### EXP Rewards (from `EXP_REWARDS` in economy.py)
EXP is awarded on every successful command use. Level formula: `floor(sqrt(exp / 10))`, so Level 5 = 250 EXP, Level 10 = 1000, Level 20 = 4000, Level 30 = 9000.
Fish EXP is awarded per catch (varies by rarity, defined in `FISH_CATALOGUE`). Prestige `exp_mult` upgrade applies to fish EXP.
---
## Admin Commands Reference
| Command | What it does |
|---|---|
| `/pause` | Toggle maintenance mode - blocks all non-admin commands |
| `/admincoins @user <amount> <reason>` | Give/take coins (positive/negative). DMs user. |
| `/adminexp @user <amount> <reason>` | Give/take EXP (positive/negative). Auto-applies level roles on change. DMs user. |
| `/adminitem @user <item_id> <anna\|eemalda>` | Give or remove any shop item for free. DMs user. |
| `/adminjail @user <minutes> <reason>` | Manually jail a user. DMs user. |
| `/adminunjail @user` | Remove jail from a user. |
| `/adminban @user <reason>` | Ban from all economy commands. DMs user. |
| `/adminunban @user` | Lift economy ban. |
| `/adminreset @user <reason>` | Wipe balance, EXP, items, streak. DMs user. |
| `/adminview @user` | Full profile: balance, EXP/level, streak, prestige, fish stats, items, timestamps. |
| `/adminseason <top_n>` | End season: DM top N players, reset all EXP. |
All admin commands require **Manage Guild** permission and work in any channel (bypass pause and channel restrictions).
---
## Role Hierarchy (Discord)
@@ -130,6 +185,7 @@ Run `/economysetup` to auto-create all roles and set their positions. The comman
Role assignment:
- **ECONOMY** role: given automatically on first EXP award (i.e. first successful economy command)
- **Level roles**: given/swapped automatically on level-up; synced on `/rank`
- **`/adminexp`**: automatically re-applies level roles if level changes
---
@@ -138,8 +194,8 @@ Role assignment:
| Tier | Level Required | Items |
|---|---|---|
| T1 | 0 (any) | gaming_hiir, hiirematt, korvaklapid, lan_pass, anticheat, energiajook, gaming_laptop |
| T2 | 10 | reguleeritav_laud, jellyfin, mikrofon, klaviatuur, monitor, cat6 |
| T3 | 20 | monitor_360, karikas, gaming_tool |
| T2 | 10 | reguleeritav_laud, jellyfin, mikrofon, klaviatuur, monitor, cat6, **ussipurk** |
| T3 | 20 | monitor_360, karikas, gaming_tool, **kalavork**, **echolood** |
Shop display is sorted by cost (ascending) within each tier.
The `SHOP_LEVEL_REQ` dict in `economy.py` controls per-item lock thresholds.
@@ -162,6 +218,9 @@ The `SHOP_LEVEL_REQ` dict in `economy.py` controls per-item lock thresholds.
| Cooldown messages | `CD_MSG["cmd"].format(ts=_cd_ts(...))` | Cooldown responses |
| Shop UI | `SHOP_UI["key"]` | `_shop_embed` |
| Item descriptions | `ITEM_DESCRIPTIONS["item_key"]` | `economy.SHOP[key]["description"]` |
| Fish UI | `FISH_UI["key"]` | `/fish`, `/fishbook`, `/fishsell` |
| Fish names | `FISH_NAMES["fish_id"]` | Fish display name |
| Admin responses | `ADMIN["key"]` | Admin command success/DM messages |
---
@@ -177,6 +236,8 @@ The `SHOP_LEVEL_REQ` dict in `economy.py` controls per-item lock thresholds.
| `LEVEL_ROLES` | `economy.py` | `[(min_level, "RoleName"), ...]` highest first |
| `ECONOMY_ROLE` | `economy.py` | Name of the base economy participation role |
| `EXP_REWARDS` | `economy.py` | EXP per command |
| `FISH_CATALOGUE` | `economy.py` | All fish species (rarity, weight, coins, exp) |
| `PRESTIGE_SHOP` | `economy.py` | Prestige upgrade definitions |
| `HOUSE_ID` | `economy.py` | Bot's user ID (house account for /rob) |
| `MIN_BAIL` | `economy.py` | Minimum bail payment (350⬡) |
| `COIN` | `economy.py` | The coin emoji string |
@@ -193,3 +254,4 @@ The `SHOP_LEVEL_REQ` dict in `economy.py` controls per-item lock thresholds.
- `anticheat` is consumable (2 uses) - only item that can be re-bought
- `karikas` (T3) is the only item that preserves a daily streak across missed days
- `reguleeritav_laud` (T2) stacks with `gaming_hiir`: combined ×1.5 × ×1.25 = ×1.875
- **Fishing** is a steady passive income; `kalavork` (T3) dramatically increases fish value by bumping rarity

View File

@@ -154,16 +154,18 @@ Admins (bot lacks permission to modify them) are silently skipped and still mark
| `/sync` | Manage Guild | Re-registers slash commands with Discord |
| `/restart` | Manage Guild | Gracefully restarts the bot process; posts ✅ in the same channel when back up |
| `/shutdown` | Manage Guild | Shuts the bot down cleanly without restarting |
| `/pause` | Manage Guild | Toggles maintenance mode blocks all non-admin commands; calling again unpauses |
| `/pause` | Manage Guild | Toggles maintenance mode - blocks all non-admin commands; calling again unpauses |
| `/send #channel message` | Manage Guild | Sends a message to any channel as the bot |
| `/status` | Manage Guild | Bot uptime, RAM, CPU, latency, cache stats, economy user count |
| `/admincoins @user <kogus> <põhjus>` | Manage Guild | Give (positive) or take (negative) TipiCOINi. Balance floored at 0. User gets a DM with reason. |
| `/adminexp @user <kogus> <põhjus>` | Manage Guild | Give (positive) or take (negative) EXP. Level roles auto-updated. User gets a DM. |
| `/adminitem @user <ese> <anna\|eemalda>` | Manage Guild | Give or remove any shop item for free. `ese` is the internal item ID (e.g. `anticheat`). User gets a DM. |
| `/adminjail @user <minutid> <põhjus>` | Manage Guild | Manually jail a user for N minutes. User gets a DM. |
| `/adminunjail @user` | Manage Guild | Release a user from jail immediately. |
| `/adminban @user <põhjus>` | Manage Guild | Ban a user from all economy commands. User gets a DM. |
| `/adminunban @user` | Manage Guild | Lift an economy ban. |
| `/adminreset @user <põhjus>` | Manage Guild | Wipe a user's balance, items, and streak to zero. User gets a DM. |
| `/adminview @user` | Manage Guild | Inspect a user's full economy profile: balance, streak, items, jail status, ban status. |
| `/adminview @user` | Manage Guild | Full profile: balance, EXP/level, streak, prestige, fish stats, items, ban/jail, all timestamps. |
### `/check` output example
```
@@ -226,10 +228,11 @@ The house is listed at **#0** on the leaderboard. Players can attempt to rob it
| Command | Cooldown | Base payout | Notes |
|---|---|---|---|
| `/daily` | 20h | 150 ⬡ | Streak multiplier applied (see below). Kõrvaklapid reduces cooldown to 18h. LAN Pilet doubles the reward. Botikoobas adds 5% interest on your balance (capped at 500 ⬡/day). |
| `/work` | 1h | 1575 ⬡ | Random job flavour text. Mängurihiir +50%, Reguleeritav laud +25% (stacks). Red Bull: 30% chance of ×3. Ultralai monitor reduces cooldown to 40min. |
| `/daily` | 20h | 150 ⬡ | Streak multiplier applied (see below). Kõrvaklapid reduces cooldown to 18h. LAN Pilet doubles the reward. Botikoobas adds 5% interest on your balance (capped at 500 ⬡/day). Prestige daily_plus adds +20% base per upgrade level. |
| `/work` | 1h | 1575 ⬡ | Random job flavour text. Mängurihiir +50%, Reguleeritav laud +25% (stacks). Red Bull: 30% chance of ×3. Ultralai monitor reduces cooldown to 40min. Prestige work_plus adds +20% per upgrade level. |
| `/beg` | 5min | 1040 ⬡ | XL hiirematt reduces cooldown to 3min. Mehhaaniline klaviatuur multiplies earnings ×2. |
| `/crime` | 2h | 200500 ⬡ | 60% success rate (75% with CAT6). +30% earnings with Mikrofon on win. Fail = fine + 30min jail. Mänguritool skips jail on fail. |
| `/fish` | 2min | varies | Interactive minigame. Cast → wait for bite → press button within 2s → keep in inventory or sell immediately. Ussipurk reduces cooldown to 90s. |
### Daily streak
@@ -254,10 +257,12 @@ Every successful economy action awards EXP:
|---|---|
| `/daily` claimed | +50 |
| `/work` completed | +25 |
| `/heist` win | +25 |
| `/crime` success | +15 |
| `/rob` success | +15 |
| Gambling win (`/roulette`, `/slots`, `/blackjack`) | Scaled by bet: <10⬡ = 0, 1099⬡ = +5, 100999⬡ = +10, 1 0009 999⬡ = +15, 10 00099 999⬡ = +20, 100 000+⬡ = +25 |
| `/beg` completed | +5 |
| `/fish` catch | +3 to +15 (varies by rarity) |
**Level formula:** `level = floor(√(total_exp ÷ 10))`
@@ -314,10 +319,16 @@ The **ECONOMY** role is granted on your first EXP award (i.e. first successful e
| `/rank [@user]` | EXP total, current level, progress bar to next level, leaderboard rank. |
| `/stats [@user]` | Lifetime statistics: economy totals, work/beg counts, gambling records, crime/heist history, social totals, best streak. |
| `/cooldowns` | All cooldowns at a glance with live Discord timestamps. Shows jail timer if jailed. |
| `/leaderboard` | Paginated coin leaderboard (10/page). House pinned at #0. ◀/▶ to browse; 📍 **Mina** jumps to your page. Has a separate EXP/level tab. |
| `/leaderboard` | Paginated leaderboard with 6 tabs: 🪙 Coins, 📊 EXP, 🏆 Season EXP, 🔥 Prestige, 🎲 Wagered, 🎣 Fish caught. House pinned at #0 on coins tab. |
| `/shop` | Browse all items by tier. Shows owned status, Anticheat charges remaining, and level lock for T2/T3. |
| `/buy <item>` | Purchase an item by name (partial match accepted). |
| `/reminders` | Toggle per-command DM notifications. **All reminders are on by default.** Bot DMs you the moment each cooldown expires. |
| `/reminders` | Toggle per-command DM notifications. Bot DMs you the moment each cooldown expires. |
| `/fish` | Interactive fishing minigame. Cast, wait for bite, pull, then keep or sell. 2min cooldown (90s with Ussipurk). |
| `/fishbook` | View your fish collection - all caught species, rarity, count, and current inventory amounts. |
| `/fishsell` | Sell all fish currently in your inventory at once. |
| `/prestige` | Reset your balance/EXP/items at level 30 in exchange for Prestige Points. Fishing collection preserved. |
| `/prestigeshop` | View available prestige upgrades and their current levels. |
| `/prestigebuy <upgrade>` | Purchase a prestige upgrade using Prestige Points. |
---
@@ -326,7 +337,7 @@ The **ECONOMY** role is granted on your first EXP award (i.e. first successful e
`/crime` fail (without Mänguritool) jails you for **30 minutes**. While jailed, `/work`, `/beg`, `/crime`, `/rob`, and `/give` are blocked.
#### `/jailbreak`
Roll two dice - matching values (doubles) free you instantly. **3 attempts** per jail sentence. If all 3 fail you pay bail:
Press the roll button - both dice are rolled simultaneously with an animated reveal. **3 attempts** per sentence. Matching values (doubles) = free instantly. If all 3 fail you pay bail:
- **2030% of your current balance** (scales with wealth)
- **Minimum 350 ⬡** - if your balance is below this you stay jailed until the timer runs out
@@ -335,6 +346,41 @@ Cooldowns and jail release times display as live Discord relative timestamps.
---
### Prestige
Once you reach **level 30** (9 000 EXP), you can `/prestige`. This resets your balance, EXP, and items in exchange for **Prestige Points** (PP = floor(exp ÷ 1000), min 1).
**What survives a prestige reset:** fish book, fish inventory, lifetime economy stats, prestige upgrades, season EXP.
Spend PP in `/prestigeshop`:
| Upgrade | Max Level | Cost/level | Effect |
|---|---|---|---|
| Coin multiplier | 5 | 5 PP | +8% to all coin earnings per level |
| EXP multiplier | 5 | 5 PP | +8% to all EXP per level |
| Daily bonus | 3 | 7 PP | +20% to daily base payout per level |
| Work bonus | 3 | 7 PP | +20% to work earnings per level |
---
### Fishing
`/fish` is an interactive minigame with a **2-minute cooldown** (90s with Ussipurk):
1. Cast the line - a button appears
2. Wait 515 seconds for the bite
3. Press **TÕMBA!** within the 2s window (3s with Echolood)
4. Choose: **sell immediately** or **keep in inventory**
Caught fish go to your `fish_inventory` and persist through prestige resets.
| Command | Notes |
|---|---|
| `/fishbook` | View your fish collection: caught species, rarity, count, how many in inventory. |
| `/fishsell` | Sell all fish in your inventory at once. |
---
### Shop items
All items are **permanent** once purchased **except Anticheat**, which expires after 2 uses and can be repurchased.
@@ -362,6 +408,12 @@ All items are **permanent** once purchased **except Anticheat**, which expires a
| CAT6 netikaabel | 3 500 ⬡ | `/crime` success rate 60% → 75% |
| Jellyfin server | 4 000 ⬡ | `/rob` success rate 45% → 60% |
#### Tier 2 - level 10 required (TipiHUSTLER+) - continued
| Item | Cost | Effect |
|---|---|---|
| Ussipurk | 3 500 ⬡ | `/fish` cooldown 2min → 90s |
#### Tier 3 - level 20 required (TipiCHAD+)
| Item | Cost | Effect |
@@ -369,6 +421,8 @@ All items are **permanent** once purchased **except Anticheat**, which expires a
| TipiLAN trofee | 6 000 ⬡ | Daily streak survives missed days |
| 360hz monitor | 7 500 ⬡ | Slots jackpot 10× → 15×, triple 4× → 6× |
| Mänguritool | 9 000 ⬡ | `/crime` fail never sends you to jail |
| Kalavõrk | 5 000 ⬡ | All fish caught are bumped up one rarity tier |
| Echolood | 8 000 ⬡ | Fishing bite window 2s → 3s |
---

1211
bot.py

File diff suppressed because it is too large Load Diff

View File

@@ -30,7 +30,10 @@ def _txn(event: str, **fields) -> None:
# To use your custom Discord emoji replace COIN with the full tag, e.g.:
# COIN = "<:tipicoin:1234567890123456789>"
# ---------------------------------------------------------------------------
COIN = "<:TipiCOIN:1483000209188589628>"
COIN = "<:TipiCOIN:1483000209188589628>"
PP_EMOJI = "<:TipiFIRE:1483431381668335687>"
PRESTIGE_ROLE = "TipiPRESTIGE"
PRESTIGE_MIN_LEVEL = 30 # minimum level required to prestige
# ---------------------------------------------------------------------------
# Shop catalogue
@@ -141,13 +144,32 @@ SHOP: dict[str, ShopItem] = {
"cost": 9000,
"description": strings.ITEM_DESCRIPTIONS["gaming_tool"],
},
# ----- Fishing items -----
"ussipurk": {
"name": "Ussipurk",
"emoji": "🪣",
"cost": 3500,
"description": strings.ITEM_DESCRIPTIONS["ussipurk"],
},
"kalavork": {
"name": "Kalavõrk",
"emoji": "🪝",
"cost": 5000,
"description": strings.ITEM_DESCRIPTIONS["kalavork"],
},
"echolood": {
"name": "Echolood",
"emoji": "📡",
"cost": 8000,
"description": strings.ITEM_DESCRIPTIONS["echolood"],
},
}
# Tier grouping (used by /shop pagination)
SHOP_TIERS: dict[int, list[str]] = {
1: ["gaming_hiir", "hiirematt", "korvaklapid", "lan_pass", "energiajook", "anticheat", "gaming_laptop"],
2: ["reguleeritav_laud", "jellyfin", "mikrofon", "klaviatuur", "monitor", "cat6"],
3: ["monitor_360", "karikas", "gaming_tool"],
2: ["reguleeritav_laud", "jellyfin", "mikrofon", "klaviatuur", "monitor", "cat6", "ussipurk"],
3: ["monitor_360", "karikas", "gaming_tool", "kalavork", "echolood"],
}
# Minimum level required to purchase Tier 2 / Tier 3 shop items
@@ -158,11 +180,104 @@ SHOP_LEVEL_REQ: dict[str, int] = {
"klaviatuur": 10,
"monitor": 10,
"cat6": 10,
"ussipurk": 10,
"monitor_360": 20,
"karikas": 20,
"gaming_tool": 20,
"kalavork": 20,
"echolood": 20,
}
# ---------------------------------------------------------------------------
# Prestige shop catalogue
# ---------------------------------------------------------------------------
class PrestigeItem(TypedDict):
emoji: str
max_level: int
pp_cost: int
effect: float
PRESTIGE_SHOP: dict[str, PrestigeItem] = {
"coin_mult": {
"emoji": "<:TipiCOIN:1483000209188589628>",
"max_level": 5,
"pp_cost": 5,
"effect": 0.08,
},
"exp_mult": {
"emoji": "",
"max_level": 5,
"pp_cost": 5,
"effect": 0.08,
},
"daily_plus": {
"emoji": "📅",
"max_level": 3,
"pp_cost": 7,
"effect": 0.20,
},
"work_plus": {
"emoji": "💼",
"max_level": 3,
"pp_cost": 7,
"effect": 0.20,
},
}
# ---------------------------------------------------------------------------
# Fish catalogue
# ---------------------------------------------------------------------------
FISH_CATALOGUE: dict[str, dict] = {
# id: { rarity, weight=(min_g, max_g), coins=(min, max), exp }
"sarj": {"rarity": "common", "weight": (50, 500), "coins": (3, 18), "exp": 3},
"ahven": {"rarity": "common", "weight": (80, 700), "coins": (5, 22), "exp": 3},
"koger": {"rarity": "common", "weight": (100, 800), "coins": (5, 20), "exp": 3},
"viidikas": {"rarity": "common", "weight": (10, 120), "coins": (2, 8), "exp": 2},
"latikas": {"rarity": "uncommon", "weight": (300, 2500), "coins": (20, 70), "exp": 6},
"karpkala": {"rarity": "uncommon", "weight": (500, 4000), "coins": (25, 80), "exp": 7},
"linask": {"rarity": "uncommon", "weight": (200, 2000), "coins": (18, 60), "exp": 6},
"haug": {"rarity": "rare", "weight": (500, 6000), "coins": (50, 180), "exp": 10},
"angerjas": {"rarity": "rare", "weight": (200, 1800), "coins": (40, 120), "exp": 10},
"siig": {"rarity": "rare", "weight": (200, 2000), "coins": (45, 130), "exp": 10},
"forell": {"rarity": "epic", "weight": (400, 4500), "coins": (100, 280), "exp": 15},
"koha": {"rarity": "epic", "weight": (600, 7000), "coins": (120, 300), "exp": 15},
"tougjas": {"rarity": "epic", "weight": (400, 4000), "coins": (90, 250), "exp": 14},
"lohe": {"rarity": "legendary","weight": (1500, 12000), "coins": (250, 700), "exp": 25},
"vimb": {"rarity": "legendary","weight": (200, 1200), "coins": (200, 600), "exp": 25},
}
FISH_RARITY_WEIGHTS: dict[str, int] = {
"junk": 15,
"common": 45,
"uncommon": 22,
"rare": 12,
"epic": 5,
"legendary": 1,
}
def roll_fish(rarity_bump: bool = False) -> tuple[str, int]:
"""Roll a random fish. Returns (fish_id, weight_grams) or ('junk', 0).
rarity_bump=True (kalavork item) shifts each catch one tier up.
"""
rarity_pool = list(FISH_RARITY_WEIGHTS.keys())
weights = list(FISH_RARITY_WEIGHTS.values())
chosen_rarity = random.choices(rarity_pool, weights=weights)[0]
if chosen_rarity == "junk":
return ("junk", 0)
if rarity_bump:
order = ["common", "uncommon", "rare", "epic", "legendary"]
idx = order.index(chosen_rarity) if chosen_rarity in order else 0
chosen_rarity = order[min(idx + 1, len(order) - 1)]
fish_of_rarity = [k for k, v in FISH_CATALOGUE.items() if v["rarity"] == chosen_rarity]
if not fish_of_rarity:
return ("junk", 0)
fish_id = random.choice(fish_of_rarity)
fish = FISH_CATALOGUE[fish_id]
weight = random.randint(fish["weight"][0], fish["weight"][1])
return (fish_id, weight)
# ---------------------------------------------------------------------------
# EXP / Level system
# ---------------------------------------------------------------------------
@@ -227,6 +342,7 @@ COOLDOWNS: dict[str, timedelta] = {
"beg": timedelta(minutes=5),
"crime": timedelta(hours=2),
"rob": timedelta(hours=2),
"fish": timedelta(minutes=2),
}
JAIL_DURATION = timedelta(minutes=30)
@@ -272,6 +388,16 @@ class UserData(TypedDict, total=False):
total_received: int
best_daily_streak: int
heist_global_cd_until: float
# Prestige system
prestige_level: int
prestige_points: int
season_total_exp: int # cumulative EXP this season (survives prestige resets)
prestige_upgrades: dict # {upgrade_id: level}
# Fishing system
last_fish: str | None
fish_book: dict # {fish_id: times_caught}
total_fish_caught: int
fish_inventory: list # [{fish_id, weight, value}] - survives prestige
def _default_user() -> UserData:
@@ -312,6 +438,16 @@ def _default_user() -> UserData:
"total_received": 0,
"best_daily_streak": 0,
"heist_global_cd_until": 0.0,
# ── Prestige ─────────────────────────────────────────────────────────
"prestige_level": 0,
"prestige_points": 0,
"season_total_exp": 0,
"prestige_upgrades": {},
# ── Fishing ──────────────────────────────────────────────────────────
"last_fish": None,
"fish_book": {},
"total_fish_caught": 0,
"fish_inventory": [],
}
@@ -388,33 +524,6 @@ async def get_all_users_raw() -> dict[str, "UserData"]:
return result
async def migrate_anticheat_uses() -> int:
"""One-time migration: users who own anticheat but have no item_uses entry get 2 uses."""
records = await pb_client.list_all_records()
changed = 0
for record in records:
items = record.get("items") or []
item_uses = record.get("item_uses") or {}
if "anticheat" in items and "anticheat" not in item_uses:
item_uses["anticheat"] = 2
await pb_client.update_record(record["id"], {"item_uses": item_uses})
changed += 1
return changed
async def migrate_reminders_default() -> int:
"""One-time migration: enable all reminders for users who have an empty list."""
_ALL_REMINDERS = ["daily", "work", "beg", "crime", "rob"]
records = await pb_client.list_all_records()
changed = 0
for record in records:
reminders = record.get("reminders")
if not reminders:
await pb_client.update_record(record["id"], {"reminders": _ALL_REMINDERS})
changed += 1
return changed
# ---------------------------------------------------------------------------
# Internal helpers
# ---------------------------------------------------------------------------
@@ -498,6 +607,17 @@ async def get_leaderboard(top_n: int | None = 10) -> list[tuple[str, int]]:
return result if top_n is None else result[:top_n]
def _prestige_mult(user: UserData) -> tuple[float, float]:
"""Return (coin_mult, exp_mult) based on prestige upgrades. Both ≥1.0."""
upgrades: dict = user.get("prestige_upgrades") or {} # type: ignore[assignment]
coin_level = upgrades.get("coin_mult", 0)
exp_level = upgrades.get("exp_mult", 0)
return (
1.0 + coin_level * PRESTIGE_SHOP["coin_mult"]["effect"],
1.0 + exp_level * PRESTIGE_SHOP["exp_mult"]["effect"],
)
async def get_leaderboard_exp(top_n: int | None = 10) -> list[tuple[str, int, int]]:
"""Return top_n (user_id_str, exp, level) sorted by EXP descending."""
records = await pb_client.list_all_records()
@@ -511,15 +631,18 @@ async def get_leaderboard_exp(top_n: int | None = 10) -> list[tuple[str, int, in
async def award_exp(user_id: int, amount: int) -> dict:
"""Add EXP to a user. Returns old_level, new_level, total exp."""
"""Add EXP to a user. Applies prestige exp_mult. Returns old_level, new_level, total exp."""
user = await get_user(user_id)
_, exp_mult = _prestige_mult(user)
gained = max(1, int(amount * exp_mult))
old_exp = user.get("exp", 0)
new_exp = old_exp + amount
new_exp = old_exp + gained
old_level = get_level(old_exp)
new_level = get_level(new_exp)
user["exp"] = new_exp
user["season_total_exp"] = user.get("season_total_exp", 0) + gained
await _commit(user_id, user)
return {"old_level": old_level, "new_level": new_level, "exp": new_exp}
return {"old_level": old_level, "new_level": new_level, "exp": new_exp, "gained": gained}
async def do_season_reset(top_n: int = 10) -> list[tuple[str, int, int]]:
@@ -541,8 +664,10 @@ async def do_season_reset(top_n: int = 10) -> list[tuple[str, int, int]]:
"last_beg": None,
"last_crime": None,
"last_rob": None,
"last_fish": None,
"daily_streak": 0,
"last_streak_date": None,
"season_total_exp": 0,
}
for record in records:
await pb_client.update_record(record["id"], reset_fields)
@@ -605,8 +730,13 @@ async def do_daily(user_id: int) -> dict:
vip = "lan_pass" in user["items"]
vip_mult = 2.0 if vip else 1.0
base = 150
daily_plus_level = (user.get("prestige_upgrades") or {}).get("daily_plus", 0)
base = int(150 * (1.0 + daily_plus_level * PRESTIGE_SHOP["daily_plus"]["effect"]))
earned = int(base * streak_mult * vip_mult)
if "korvaklapid" in user["items"]:
earned += 25
coin_mult, _ = _prestige_mult(user)
earned = int(earned * coin_mult)
# Investor interest (capped at 500/day to prevent runaway wealth)
interest = 0
@@ -661,7 +791,10 @@ async def do_work(user_id: int) -> dict:
if "energiajook" in user["items"] and random.random() < 0.30:
lucky = True
earned = int(base * job_mult * worker_mult * desk_mult * (3.0 if lucky else 1.0))
work_plus_level = (user.get("prestige_upgrades") or {}).get("work_plus", 0)
work_plus_mult = 1.0 + work_plus_level * PRESTIGE_SHOP["work_plus"]["effect"]
coin_mult, _ = _prestige_mult(user)
earned = int(base * job_mult * worker_mult * desk_mult * (3.0 if lucky else 1.0) * work_plus_mult * coin_mult)
user["balance"] += earned
user["last_work"] = _now().isoformat()
user["work_count"] = user.get("work_count", 0) + 1
@@ -699,7 +832,8 @@ async def do_beg(user_id: int) -> dict:
jailed = bool(_is_jailed(user))
beg_mult = 2 if "klaviatuur" in user["items"] else 1
earned = random.randint(10, 40) * beg_mult
coin_mult, _ = _prestige_mult(user)
earned = int(random.randint(10, 40) * beg_mult * coin_mult)
user["balance"] += earned
user["last_beg"] = _now().isoformat()
user["beg_count"] = user.get("beg_count", 0) + 1
@@ -718,6 +852,262 @@ async def do_beg(user_id: int) -> dict:
}
# ---------------------------------------------------------------------------
# /fish
# ---------------------------------------------------------------------------
async def do_fish_start(user_id: int) -> dict:
"""Check cooldown + jail, set cooldown. Call before starting the fishing minigame."""
user = await get_user(user_id)
if user.get("eco_banned"):
return {"ok": False, "reason": "banned"}
if jail := _is_jailed(user):
return {"ok": False, "reason": "jailed", "remaining": jail}
fish_cd = timedelta(seconds=90) if "ussipurk" in user["items"] else COOLDOWNS["fish"]
if cd := _cooldown_remaining(user, "fish", override_cd=fish_cd):
return {"ok": False, "reason": "cooldown", "remaining": cd}
user["last_fish"] = _now().isoformat()
await _commit(user_id, user)
return {"ok": True}
async def do_fish_resolve(user_id: int, fish_id: str, weight: int) -> dict:
"""Add catch to inventory + update fish_book. Returns catch info incl. pre-calculated value."""
user = await get_user(user_id)
if fish_id == "junk":
_txn("FISH_JUNK", user=user_id)
return {"ok": True, "type": "junk", "coins": 0, "exp": 0}
if fish_id not in FISH_CATALOGUE:
return {"ok": False, "reason": "invalid_fish"}
fish = FISH_CATALOGUE[fish_id]
min_c, max_c = fish["coins"]
w_min, w_max = fish["weight"]
weight_ratio = (weight - w_min) / max(1, w_max - w_min)
base_coins = int(min_c + weight_ratio * (max_c - min_c))
coin_mult, _ = _prestige_mult(user)
value = int(base_coins * coin_mult)
exp = fish["exp"]
book: dict = user.get("fish_book") or {}
prev_count = book.get(fish_id, 0)
book[fish_id] = prev_count + 1
user["fish_book"] = book
user["total_fish_caught"] = user.get("total_fish_caught", 0) + 1
inv: list = list(user.get("fish_inventory") or [])
inv.append({"fish_id": fish_id, "weight": weight, "value": value})
user["fish_inventory"] = inv
await _commit(user_id, user)
_txn("FISH", user=user_id, fish=fish_id, weight=weight, value=value)
return {
"ok": True,
"type": "fish",
"fish_id": fish_id,
"weight": weight,
"value": value,
"exp": exp,
"is_new": prev_count == 0,
"total_caught": book[fish_id],
}
async def do_fish_sell(user_id: int, indices: list[int] | None = None) -> dict:
"""Sell fish from inventory. indices=None sells all. Returns coins earned."""
user = await get_user(user_id)
inv: list = list(user.get("fish_inventory") or [])
if not inv:
return {"ok": False, "reason": "empty"}
if indices is None:
to_sell = inv
remaining = []
else:
to_sell = [inv[i] for i in sorted(set(indices)) if 0 <= i < len(inv)]
keep_idx = set(range(len(inv))) - set(indices)
remaining = [inv[i] for i in sorted(keep_idx)]
if not to_sell:
return {"ok": False, "reason": "empty"}
total_coins = sum(entry["value"] for entry in to_sell)
user["fish_inventory"] = remaining
user["balance"] = user.get("balance", 0) + total_coins
user["lifetime_earned"] = user.get("lifetime_earned", 0) + total_coins
user["peak_balance"] = max(user.get("peak_balance", 0), user["balance"])
await _commit(user_id, user)
_txn("FISH_SELL", user=user_id, count=len(to_sell), coins=f"+{total_coins}", bal=user["balance"])
return {
"ok": True,
"coins": total_coins,
"count": len(to_sell),
"balance": user["balance"],
}
async def do_fishbook(user_id: int) -> dict:
"""Return the user's fish book data including per-species inventory counts."""
user = await get_user(user_id)
book: dict = user.get("fish_book") or {}
inv: list = user.get("fish_inventory") or []
inv_counts: dict[str, int] = {}
for entry in inv:
fid = entry.get("fish_id", "")
inv_counts[fid] = inv_counts.get(fid, 0) + 1
return {
"ok": True,
"book": book,
"inv_counts": inv_counts,
"total_fish_caught": user.get("total_fish_caught", 0),
"unique_caught": len(book),
"total_species": len(FISH_CATALOGUE),
}
# ---------------------------------------------------------------------------
# /prestige
# ---------------------------------------------------------------------------
async def do_prestige(user_id: int) -> dict:
"""Prestige: requires level 30, earns PP, resets balance/exp/items/cooldowns."""
user = await get_user(user_id)
if user.get("eco_banned"):
return {"ok": False, "reason": "banned"}
exp = user.get("exp", 0)
level = get_level(exp)
if level < PRESTIGE_MIN_LEVEL:
return {"ok": False, "reason": "level_too_low", "level": level, "required": PRESTIGE_MIN_LEVEL}
pp_earned = max(1, exp // 1000)
new_prestige_level = user.get("prestige_level", 0) + 1
# Preserve: fish_book, fish_inventory, lifetime stats, prestige_points, season_total_exp, prestige_upgrades
user["balance"] = 0
user["exp"] = 0
user["items"] = []
user["item_uses"] = {}
user["last_daily"] = None
user["last_work"] = None
user["last_beg"] = None
user["last_crime"] = None
user["last_rob"] = None
user["last_fish"] = None
user["last_heist"] = None
user["daily_streak"] = 0
user["last_streak_date"] = None
user["jailed_until"] = None
user["jailbreak_used"] = False
user["prestige_level"] = new_prestige_level
user["prestige_points"] = user.get("prestige_points", 0) + pp_earned
await _commit(user_id, user)
_txn("PRESTIGE", user=user_id, pp_earned=pp_earned, prestige=new_prestige_level, old_exp=exp)
return {
"ok": True,
"pp_earned": pp_earned,
"prestige_level": new_prestige_level,
"prestige_points": user["prestige_points"],
"old_exp": exp,
}
async def do_prestige_buy(user_id: int, upgrade_id: str) -> dict:
"""Spend PP to buy a prestige upgrade level."""
if upgrade_id not in PRESTIGE_SHOP:
return {"ok": False, "reason": "not_found"}
user = await get_user(user_id)
if user.get("eco_banned"):
return {"ok": False, "reason": "banned"}
upgrade = PRESTIGE_SHOP[upgrade_id]
upgrades: dict = user.get("prestige_upgrades") or {}
current_level = upgrades.get(upgrade_id, 0)
if current_level >= upgrade["max_level"]:
return {"ok": False, "reason": "maxed", "max": upgrade["max_level"]}
pp = user.get("prestige_points", 0)
cost = upgrade["pp_cost"]
if pp < cost:
return {"ok": False, "reason": "insufficient_pp", "have": pp, "need": cost}
upgrades[upgrade_id] = current_level + 1
user["prestige_upgrades"] = upgrades
user["prestige_points"] = pp - cost
await _commit(user_id, user)
_txn("PRESTIGE_BUY", user=user_id, upgrade=upgrade_id,
new_level=upgrades[upgrade_id], pp_left=user["prestige_points"])
return {
"ok": True,
"upgrade_id": upgrade_id,
"new_level": upgrades[upgrade_id],
"max_level": upgrade["max_level"],
"pp_remaining": user["prestige_points"],
}
# ---------------------------------------------------------------------------
# Extended leaderboards
# ---------------------------------------------------------------------------
async def get_leaderboard_season_exp(top_n: int | None = 10) -> list[tuple[str, int, int]]:
"""Return (user_id, season_total_exp, prestige_level) sorted by season EXP."""
records = await pb_client.list_all_records()
result = sorted(
(
(r["user_id"], r.get("season_total_exp", 0), r.get("prestige_level", 0))
for r in records if r.get("user_id")
),
key=lambda x: x[1],
reverse=True,
)
return result if top_n is None else result[:top_n]
async def get_leaderboard_prestige(top_n: int | None = 10) -> list[tuple[str, int, int]]:
"""Return (user_id, prestige_level, prestige_points) sorted by prestige_level then PP."""
records = await pb_client.list_all_records()
result = sorted(
(
(r["user_id"], r.get("prestige_level", 0), r.get("prestige_points", 0))
for r in records if r.get("user_id")
),
key=lambda x: (x[1], x[2]),
reverse=True,
)
return result if top_n is None else result[:top_n]
async def get_leaderboard_wagered(top_n: int | None = 10) -> list[tuple[str, int]]:
"""Return (user_id, total_wagered) sorted descending."""
records = await pb_client.list_all_records()
result = sorted(
((r["user_id"], r.get("total_wagered", 0)) for r in records if r.get("user_id")),
key=lambda x: x[1],
reverse=True,
)
return result if top_n is None else result[:top_n]
async def get_leaderboard_fish(top_n: int | None = 10) -> list[tuple[str, int]]:
"""Return (user_id, total_fish_caught) sorted descending."""
records = await pb_client.list_all_records()
result = sorted(
((r["user_id"], r.get("total_fish_caught", 0)) for r in records if r.get("user_id")),
key=lambda x: x[1],
reverse=True,
)
return result if top_n is None else result[:top_n]
# ---------------------------------------------------------------------------
# /crime
# ---------------------------------------------------------------------------
@@ -1171,6 +1561,57 @@ async def do_admin_inspect(target_id: int) -> dict:
return {"ok": True, "data": dict(user)}
async def do_admin_exp(target_id: int, amount: int, admin_id: int, reason: str) -> dict:
"""Give (positive) or take (negative) EXP from a user. EXP is floored at 0."""
user = await get_user(target_id)
old_exp = user.get("exp", 0)
old_level = get_level(old_exp)
user["exp"] = max(0, old_exp + amount)
user["season_total_exp"] = max(0, user.get("season_total_exp", 0) + amount)
new_level = get_level(user["exp"])
await _commit(target_id, user)
verb = f"+{amount}" if amount >= 0 else str(amount)
_txn("ADMIN_EXP", admin=admin_id, target=target_id, amount=verb, reason=reason, exp=user["exp"])
return {
"ok": True,
"exp": user["exp"],
"change": amount,
"old_level": old_level,
"new_level": new_level,
"level_changed": new_level != old_level,
}
async def do_admin_item(target_id: int, item_id: str, action: str, admin_id: int) -> dict:
"""Give or remove an item. action='give'|'remove'. Returns ok/reason."""
if item_id not in SHOP:
return {"ok": False, "reason": "invalid_item"}
user = await get_user(target_id)
items: list = list(user.get("items") or [])
item_uses: dict = dict(user.get("item_uses") or {})
if action == "give":
if item_id not in items:
items.append(item_id)
if item_id == "anticheat":
item_uses["anticheat"] = 2
user["items"] = items
user["item_uses"] = item_uses
await _commit(target_id, user)
_txn("ADMIN_ITEM_GIVE", admin=admin_id, target=target_id, item=item_id)
return {"ok": True, "action": "given", "item_id": item_id}
elif action == "remove":
if item_id not in items:
return {"ok": False, "reason": "not_owned"}
items.remove(item_id)
item_uses.pop(item_id, None)
user["items"] = items
user["item_uses"] = item_uses
await _commit(target_id, user)
_txn("ADMIN_ITEM_REMOVE", admin=admin_id, target=target_id, item=item_id)
return {"ok": True, "action": "removed", "item_id": item_id}
return {"ok": False, "reason": "invalid_action"}
# ---------------------------------------------------------------------------
# /reminders
# ---------------------------------------------------------------------------

File diff suppressed because it is too large Load Diff

View File

@@ -1,714 +1,108 @@
2026-03-20 01:34:58 | WORK user=340451525799182357 earned=+123 lucky=False bal=27988
2026-03-20 01:35:02 | BEG user=340451525799182357 earned=+24 jailed=False bal=28012
2026-03-20 01:35:39 | ROB_FAIL robber=340451525799182357 victim=218972931701735424 fine=-120 robber_bal=27892
2026-03-20 01:35:56 | SLOTS_MISS user=340451525799182357 bet=100 change=-100 bal=27792
2026-03-20 01:36:04 | SLOTS_PAIR user=340451525799182357 bet=100 change=50 bal=27842
2026-03-20 01:36:11 | SLOTS_MISS user=340451525799182357 bet=100 change=-100 bal=27742
2026-03-20 01:36:19 | SLOTS_PAIR user=340451525799182357 bet=100 change=50 bal=27792
2026-03-20 01:37:38 | BLACKJACK user=340451525799182357 payout=+400 net=+200 bal=27992
2026-03-20 01:38:07 | BEG user=340451525799182357 earned=+30 jailed=False bal=28022
2026-03-20 01:38:23 | BLACKJACK user=340451525799182357 payout=+0 net=-100 bal=27922
2026-03-20 01:38:43 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=26922
2026-03-20 01:39:15 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=27922
2026-03-20 01:39:36 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=29922
2026-03-20 01:39:49 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=30922
2026-03-20 01:40:02 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=31922
2026-03-20 01:40:12 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=30922
2026-03-20 01:40:26 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=29922
2026-03-20 01:40:40 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=30922
2026-03-20 01:40:54 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=31922
2026-03-20 01:41:05 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=30922
2026-03-20 01:41:26 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=29922
2026-03-20 01:41:35 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=31422
2026-03-20 01:42:32 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=32422
2026-03-20 01:42:46 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=31422
2026-03-20 01:43:34 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=30422
2026-03-20 01:43:48 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=32422
2026-03-20 01:44:00 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=31422
2026-03-20 01:44:11 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=32422
2026-03-20 01:44:22 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=33422
2026-03-20 01:44:47 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=35422
2026-03-20 01:45:02 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=36422
2026-03-20 01:45:17 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=35422
2026-03-20 01:45:28 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=36422
2026-03-20 01:45:42 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=37422
2026-03-20 01:45:55 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=38422
2026-03-20 01:46:15 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=39422
2026-03-20 01:46:27 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=38422
2026-03-20 01:46:38 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=37422
2026-03-20 01:46:54 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=38422
2026-03-20 01:47:05 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=37422
2026-03-20 01:47:15 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=36422
2026-03-20 01:47:46 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=38422
2026-03-20 01:47:59 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=40422
2026-03-20 01:48:11 | BLACKJACK user=340451525799182357 payout=+2000 net=+0 bal=40422
2026-03-20 01:48:23 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=41422
2026-03-20 01:48:39 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=40422
2026-03-20 01:48:54 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=41422
2026-03-20 01:49:12 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=42422
2026-03-20 01:49:25 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=43422
2026-03-20 01:49:36 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=43422
2026-03-20 01:49:51 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=44422
2026-03-20 01:50:06 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=45422
2026-03-20 01:50:16 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=45422
2026-03-20 01:50:28 | BLACKJACK user=340451525799182357 payout=+0 net=-2000 bal=43422
2026-03-20 01:50:38 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=42422
2026-03-20 01:50:53 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=41422
2026-03-20 01:51:04 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=40422
2026-03-20 01:51:20 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=39422
2026-03-20 01:51:31 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=40422
2026-03-20 01:51:44 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=40422
2026-03-20 01:51:54 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=39422
2026-03-20 01:52:07 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=38422
2026-03-20 01:52:20 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=39422
2026-03-20 01:52:33 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=38422
2026-03-20 01:52:43 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=39422
2026-03-20 01:52:58 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=40422
2026-03-20 01:54:04 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=41422
2026-03-20 01:54:20 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=42422
2026-03-20 01:55:01 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=41422
2026-03-20 01:55:12 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=41422
2026-03-20 01:55:20 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=42922
2026-03-20 01:55:42 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=43922
2026-03-20 01:55:54 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=44922
2026-03-20 01:56:02 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=46422
2026-03-20 01:56:16 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=45422
2026-03-20 01:56:27 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=44422
2026-03-20 01:56:39 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=45422
2026-03-20 01:56:49 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=45422
2026-03-20 01:57:01 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=45422
2026-03-20 01:58:03 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=44422
2026-03-20 01:58:19 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43422
2026-03-20 01:59:08 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=42422
2026-03-20 01:59:22 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=43422
2026-03-20 01:59:37 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=44922
2026-03-20 01:59:56 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43922
2026-03-20 02:00:14 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=42922
2026-03-20 02:00:37 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=44422
2026-03-20 02:00:57 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=45422
2026-03-20 02:01:08 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=44422
2026-03-20 02:01:38 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43422
2026-03-20 02:01:56 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=42422
2026-03-20 02:02:15 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=43422
2026-03-20 02:02:30 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=44422
2026-03-20 02:02:43 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=45422
2026-03-20 02:02:55 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=44422
2026-03-20 02:03:07 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43422
2026-03-20 02:03:32 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=44422
2026-03-20 02:03:48 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=45422
2026-03-20 02:04:01 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=44422
2026-03-20 02:04:20 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43422
2026-03-20 02:04:32 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=44422
2026-03-20 02:04:45 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=43422
2026-03-20 02:04:57 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=45422
2026-03-20 02:05:17 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=46422
2026-03-20 02:09:33 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=47422
2026-03-20 02:09:46 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=48422
2026-03-20 02:10:00 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=49422
2026-03-20 02:10:17 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=48422
2026-03-20 02:10:27 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=47422
2026-03-20 02:10:41 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=48422
2026-03-20 02:11:43 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=49422
2026-03-20 02:20:03 | ROB_BLOCKED robber=178852380018868224 victim=340451525799182357 fine=-198 robber_bal=237 ac_uses_left=1
2026-03-20 02:50:48 | BEG user=178852380018868224 earned=+64 jailed=False bal=301
2026-03-20 02:50:50 | WORK user=178852380018868224 earned=+92 lucky=False bal=393
2026-03-20 02:50:53 | CRIME_WIN user=178852380018868224 earned=+414 bal=807
2026-03-20 03:11:24 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=48422
2026-03-20 04:25:19 | HEIST_HOUSE change=-79803 house_bal=123830
2026-03-20 04:25:19 | HEIST_WIN user=340451525799182357 change=+39901 bal=88323
2026-03-20 04:25:19 | HEIST_WIN user=178852380018868224 change=+39901 bal=40708
2026-03-20 04:26:00 | DAILY user=178852380018868224 earned=+950 streak=5 bal=41658
2026-03-20 04:28:21 | WORK user=340451525799182357 earned=+114 lucky=False bal=88437
2026-03-20 04:28:26 | BEG user=340451525799182357 earned=+72 jailed=False bal=88509
2026-03-20 04:29:11 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=89509
2026-03-20 04:30:44 | BLACKJACK user=340451525799182357 payout=+2500 net=+1500 bal=91009
2026-03-20 04:31:09 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=90009
2026-03-20 04:31:28 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=91009
2026-03-20 04:31:45 | BLACKJACK user=340451525799182357 payout=+2000 net=+1000 bal=92009
2026-03-20 04:32:10 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=92009
2026-03-20 04:32:30 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=91009
2026-03-20 04:32:52 | BLACKJACK user=340451525799182357 payout=+4000 net=+2000 bal=93009
2026-03-20 04:33:11 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=92009
2026-03-20 04:33:32 | BLACKJACK user=340451525799182357 payout=+1000 net=+0 bal=92009
2026-03-20 04:33:48 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=91009
2026-03-20 04:34:07 | BLACKJACK user=340451525799182357 payout=+0 net=-1000 bal=90009
2026-03-20 04:34:26 | BLACKJACK user=340451525799182357 payout=+0 net=-3000 bal=87009
2026-03-20 04:34:51 | BLACKJACK user=340451525799182357 payout=+0 net=-10000 bal=77009
2026-03-20 04:35:14 | BLACKJACK user=340451525799182357 payout=+0 net=-20000 bal=57009
2026-03-20 04:35:33 | BLACKJACK user=340451525799182357 payout=+0 net=-57009 bal=0
2026-03-20 06:12:01 | DAILY user=272518654715887618 earned=+225 streak=5 bal=930
2026-03-20 06:43:11 | BEG user=338622999127261185 earned=+78 jailed=False bal=751
2026-03-20 06:43:13 | WORK user=338622999127261185 earned=+102 lucky=False bal=853
2026-03-20 06:43:17 | CRIME_WIN user=338622999127261185 earned=+331 bal=1184
2026-03-20 06:44:17 | ROB_FAIL robber=338622999127261185 victim=218972931701735424 fine=-111 robber_bal=1073
2026-03-20 06:46:27 | BEG user=338622999127261185 earned=+30 jailed=False bal=1103
2026-03-20 07:00:53 | DAILY user=824516445382901800 earned=+491 streak=5 bal=1328
2026-03-20 07:03:25 | BEG user=338622999127261185 earned=+24 jailed=False bal=1127
2026-03-20 07:03:29 | DAILY user=338622999127261185 earned=+450 streak=5 bal=1577
2026-03-20 07:03:37 | ROULETTE_LOSE user=338622999127261185 bet=1577 colour=punane result=roheline mult=1 bal=0
2026-03-20 07:06:42 | BEG user=338622999127261185 earned=+58 jailed=False bal=58
2026-03-20 07:17:30 | CRIME_WIN user=401373976431165449 earned=+461 bal=10256
2026-03-20 07:17:46 | ROB_WIN robber=401373976431165449 victim=218972931701735424 stolen=+703 jackpot=False robber_bal=10959 victim_bal=2816
2026-03-20 07:17:52 | WORK user=401373976431165449 earned=+174 lucky=True bal=11133
2026-03-20 07:17:54 | BEG user=401373976431165449 earned=+58 jailed=False bal=11191
2026-03-20 07:18:00 | DAILY user=401373976431165449 earned=+950 streak=5 bal=12141
2026-03-20 07:25:09 | WORK user=338622999127261185 earned=+36 lucky=False bal=94
2026-03-20 07:25:11 | BEG user=338622999127261185 earned=+38 jailed=False bal=132
2026-03-20 07:28:30 | BEG user=401373976431165449 earned=+32 jailed=False bal=12173
2026-03-20 07:41:15 | BEG user=401373976431165449 earned=+38 jailed=False bal=12211
2026-03-20 07:51:21 | DAILY user=344531774518591498 earned=+500 streak=5 bal=1518
2026-03-20 07:51:27 | WORK user=344531774518591498 earned=+275 lucky=True bal=1793
2026-03-20 07:51:29 | BEG user=344531774518591498 earned=+42 jailed=False bal=1835
2026-03-20 07:51:39 | ROB_BLOCKED robber=344531774518591498 victim=178852380018868224 fine=-130 robber_bal=1705 ac_uses_left=0
2026-03-20 07:51:47 | CRIME_WIN user=344531774518591498 earned=+456 bal=2161
2026-03-20 07:55:18 | BLACKJACK user=344531774518591498 payout=+2000 net=+1000 bal=3161
2026-03-20 07:55:34 | BLACKJACK user=344531774518591498 payout=+0 net=-1000 bal=2161
2026-03-20 07:55:48 | BLACKJACK user=344531774518591498 payout=+0 net=-1000 bal=1161
2026-03-20 07:56:02 | BLACKJACK user=344531774518591498 payout=+1161 net=+0 bal=1161
2026-03-20 07:56:15 | BLACKJACK user=344531774518591498 payout=+0 net=-1161 bal=0
2026-03-20 08:08:09 | BEG user=401373976431165449 earned=+26 jailed=False bal=12237
2026-03-20 08:08:19 | WORK user=401373976431165449 earned=+205 lucky=False bal=12442
2026-03-20 08:25:18 | BEG user=401373976431165449 earned=+44 jailed=False bal=12486
2026-03-20 08:30:56 | HEIST_FAIL user=401373976431165449 fine=-1000 jailed_until=2026-03-20T08:00:56.238832+00:00 bal=11486
2026-03-20 08:30:56 | HEIST_FAIL user=824516445382901800 fine=-199 jailed_until=2026-03-20T08:00:56.238832+00:00 bal=1129
2026-03-20 08:31:23 | JAIL_FREE user=824516445382901800 method=doubles
2026-03-20 08:31:46 | JAIL_FREE user=401373976431165449 method=doubles
2026-03-20 08:32:25 | BEG user=401373976431165449 earned=+64 jailed=False bal=11550
2026-03-20 08:32:31 | BEG user=338622999127261185 earned=+52 jailed=False bal=184
2026-03-20 08:34:19 | WORK user=344531774518591498 earned=+258 lucky=True bal=258
2026-03-20 08:35:58 | BEG user=401373976431165449 earned=+72 jailed=False bal=11622
2026-03-20 08:46:55 | BEG user=401373976431165449 earned=+42 jailed=False bal=11664
2026-03-20 09:04:17 | WORK user=272518654715887618 earned=+83 lucky=False bal=1013
2026-03-20 09:06:05 | BEG user=401373976431165449 earned=+72 jailed=False bal=11736
2026-03-20 09:06:07 | WORK user=401373976431165449 earned=+54 lucky=False bal=11790
2026-03-20 09:17:49 | BEG user=401373976431165449 earned=+64 jailed=False bal=11854
2026-03-20 09:17:50 | CRIME_WIN user=401373976431165449 earned=+456 bal=12310
2026-03-20 09:18:22 | ROB_WIN robber=401373976431165449 victim=272518654715887618 stolen=+214 jackpot=False robber_bal=12524 victim_bal=799
2026-03-20 09:18:25 | WORK user=344531774518591498 earned=+61 lucky=False bal=319
2026-03-20 09:18:27 | BEG user=344531774518591498 earned=+28 jailed=False bal=347
2026-03-20 09:21:07 | BUY user=178852380018868224 item=anticheat cost=-1000 bal=40658
2026-03-20 09:28:45 | BEG user=401373976431165449 earned=+56 jailed=False bal=12580
2026-03-20 09:31:49 | BEG user=824516445382901800 earned=+80 jailed=False bal=1209
2026-03-20 09:32:13 | WORK user=824516445382901800 earned=+116 lucky=False bal=1325
2026-03-20 09:32:17 | CRIME_WIN user=824516445382901800 earned=+412 bal=1737
2026-03-20 09:32:24 | ROB_BLOCKED robber=824516445382901800 victim=323906492073771019 fine=-200 robber_bal=1537 ac_uses_left=1
2026-03-20 09:49:18 | BEG user=401373976431165449 earned=+68 jailed=False bal=12648
2026-03-20 09:49:23 | WORK user=401373976431165449 earned=+123 lucky=True bal=12771
2026-03-20 10:00:53 | BEG user=344531774518591498 earned=+54 jailed=False bal=401
2026-03-20 10:01:11 | CRIME_WIN user=344531774518591498 earned=+492 bal=893
2026-03-20 10:01:31 | ROB_BLOCKED robber=344531774518591498 victim=323906492073771019 fine=-110 robber_bal=783 ac_uses_left=0
2026-03-20 10:01:44 | WORK user=344531774518591498 earned=+168 lucky=False bal=951
2026-03-20 10:05:58 | BEG user=344531774518591498 earned=+54 jailed=False bal=1005
2026-03-20 10:10:28 | BEG user=344531774518591498 earned=+42 jailed=False bal=1047
2026-03-20 10:12:31 | BUY user=323906492073771019 item=anticheat cost=-1000 bal=42624
2026-03-20 10:14:15 | BEG user=323906492073771019 earned=+36 jailed=False bal=42660
2026-03-20 10:14:23 | WORK user=323906492073771019 earned=+101 lucky=False bal=42761
2026-03-20 10:17:56 | BEG user=338622999127261185 earned=+78 jailed=False bal=262
2026-03-20 10:17:58 | WORK user=338622999127261185 earned=+83 lucky=False bal=345
2026-03-20 10:18:01 | CRIME_WIN user=338622999127261185 earned=+290 bal=635
2026-03-20 10:18:44 | ROB_FAIL robber=338622999127261185 victim=209554152584380420 fine=-136 robber_bal=499
2026-03-20 10:24:36 | BEG user=344531774518591498 earned=+58 jailed=False bal=1105
2026-03-20 10:27:33 | BEG user=401373976431165449 earned=+32 jailed=False bal=12803
2026-03-20 10:28:15 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=12703
2026-03-20 10:28:27 | BEG user=344531774518591498 earned=+78 jailed=False bal=1183
2026-03-20 10:28:38 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=12803
2026-03-20 10:28:56 | GIVE from_=401373976431165449 to=344531774518591498 amount=500 from_bal=12203 to_bal=1683
2026-03-20 10:29:04 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=12403
2026-03-20 10:29:15 | BLACKJACK user=401373976431165449 payout=+250 net=+150 bal=12553
2026-03-20 10:29:36 | BLACKJACK user=401373976431165449 payout=+400 net=+200 bal=12753
2026-03-20 10:29:58 | BLACKJACK user=401373976431165449 payout=+100 net=+0 bal=12753
2026-03-20 10:30:11 | BLACKJACK user=401373976431165449 payout=+1250 net=+750 bal=13503
2026-03-20 10:30:28 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13403
2026-03-20 10:30:37 | WORK user=401373976431165449 earned=+371 lucky=True bal=13674
2026-03-20 10:31:05 | BLACKJACK user=401373976431165449 payout=+0 net=-200 bal=13574
2026-03-20 10:31:20 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13474
2026-03-20 10:31:35 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=13574
2026-03-20 10:31:47 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=13674
2026-03-20 10:32:03 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13574
2026-03-20 10:32:13 | BLACKJACK user=401373976431165449 payout=+250 net=+150 bal=13724
2026-03-20 10:38:41 | BEG user=401373976431165449 earned=+28 jailed=False bal=13752
2026-03-20 10:39:06 | BEG user=344531774518591498 earned=+28 jailed=False bal=1711
2026-03-20 10:39:57 | BLACKJACK user=401373976431165449 payout=+400 net=+200 bal=13952
2026-03-20 10:40:24 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=14052
2026-03-20 10:40:41 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13952
2026-03-20 10:40:52 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13852
2026-03-20 10:41:06 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=13952
2026-03-20 10:41:21 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13852
2026-03-20 10:41:36 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13752
2026-03-20 10:41:49 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=13852
2026-03-20 10:41:50 | BEG user=401373976431165449 earned=+62 jailed=False bal=13914
2026-03-20 10:41:58 | SLOTS_MISS user=401373976431165449 bet=100 change=-100 bal=13814
2026-03-20 10:42:22 | SLOTS_MISS user=401373976431165449 bet=100 change=-100 bal=13714
2026-03-20 10:43:45 | BLACKJACK user=401373976431165449 payout=+400 net=+200 bal=13914
2026-03-20 10:44:21 | BEG user=344531774518591498 earned=+36 jailed=False bal=1747
2026-03-20 10:44:22 | WORK user=344531774518591498 earned=+84 lucky=False bal=1831
2026-03-20 10:44:34 | BLACKJACK user=344531774518591498 payout=+3662 net=+1831 bal=3662
2026-03-20 10:44:46 | BLACKJACK user=344531774518591498 payout=+0 net=-3662 bal=0
2026-03-20 10:45:43 | BEG user=401373976431165449 earned=+56 jailed=False bal=13970
2026-03-20 10:47:55 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=14070
2026-03-20 10:48:06 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=13970
2026-03-20 10:48:14 | BLACKJACK user=401373976431165449 payout=+250 net=+150 bal=14120
2026-03-20 10:48:25 | BLACKJACK user=401373976431165449 payout=+0 net=-100 bal=14020
2026-03-20 10:48:49 | BEG user=401373976431165449 earned=+22 jailed=False bal=14042
2026-03-20 10:56:47 | BEG user=272518654715887618 earned=+13 jailed=False bal=812
2026-03-20 10:56:49 | WORK user=272518654715887618 earned=+105 lucky=False bal=917
2026-03-20 10:56:59 | CRIME_WIN user=272518654715887618 earned=+237 bal=1154
2026-03-20 10:57:12 | BEG user=344531774518591498 earned=+36 jailed=False bal=36
2026-03-20 10:58:57 | WORK user=338622999127261185 earned=+117 lucky=True bal=616
2026-03-20 10:59:29 | BEG user=401373976431165449 earned=+58 jailed=False bal=14100
2026-03-20 11:02:04 | BLACKJACK user=401373976431165449 payout=+0 net=-1000 bal=13100
2026-03-20 11:02:27 | BLACKJACK user=401373976431165449 payout=+200 net=+100 bal=13200
2026-03-20 11:02:43 | BEG user=344531774518591498 earned=+36 jailed=False bal=72
2026-03-20 11:05:34 | BEG user=401373976431165449 earned=+52 jailed=False bal=13252
2026-03-20 11:12:14 | WORK user=401373976431165449 earned=+230 lucky=True bal=13482
2026-03-20 11:12:25 | BEG user=401373976431165449 earned=+62 jailed=False bal=13544
2026-03-20 11:16:03 | BEG user=401373976431165449 earned=+48 jailed=False bal=13592
2026-03-20 11:16:45 | BEG user=824516445382901800 earned=+72 jailed=False bal=1609
2026-03-20 11:16:49 | WORK user=824516445382901800 earned=+71 lucky=False bal=1680
2026-03-20 11:17:03 | ROULETTE_LOSE user=824516445382901800 bet=1680 colour=punane result=must mult=1 bal=0
2026-03-20 11:20:45 | GIVE from_=401373976431165449 to=824516445382901800 amount=1000 from_bal=12592 to_bal=1000
2026-03-20 11:20:50 | BEG user=344531774518591498 earned=+80 jailed=False bal=152
2026-03-20 11:21:33 | ROULETTE_LOSE user=824516445382901800 bet=1000 colour=punane result=must mult=1 bal=0
2026-03-20 11:22:53 | BLACKJACK user=344531774518591498 payout=+304 net=+152 bal=304
2026-03-20 11:23:06 | BLACKJACK user=344531774518591498 payout=+0 net=-304 bal=0
2026-03-20 11:23:18 | BEG user=401373976431165449 earned=+38 jailed=False bal=12630
2026-03-20 11:23:28 | CRIME_WIN user=401373976431165449 earned=+347 bal=12977
2026-03-20 11:23:42 | ROB_FAIL robber=401373976431165449 victim=218972931701735424 fine=-205 robber_bal=12772
2026-03-20 11:24:13 | BEG user=344531774518591498 earned=+70 jailed=False bal=70
2026-03-20 11:24:43 | WORK user=344531774518591498 earned=+118 lucky=False bal=188
2026-03-20 11:24:57 | BLACKJACK user=344531774518591498 payout=+0 net=-188 bal=0
2026-03-20 11:38:51 | BEG user=272518654715887618 earned=+40 jailed=False bal=1194
2026-03-20 11:38:58 | BEG user=344531774518591498 earned=+80 jailed=False bal=80
2026-03-20 11:42:01 | WORK user=338622999127261185 earned=+27 lucky=False bal=643
2026-03-20 11:42:38 | BEG user=272518654715887618 earned=+21 jailed=False bal=1215
2026-03-20 11:42:41 | BEG user=344531774518591498 earned=+24 jailed=False bal=104
2026-03-20 11:47:54 | BEG user=338622999127261185 earned=+44 jailed=False bal=687
2026-03-20 11:50:32 | BEG user=272518654715887618 earned=+23 jailed=False bal=1238
2026-03-20 11:54:20 | WORK user=401373976431165449 earned=+56 lucky=False bal=12828
2026-03-20 11:54:26 | BEG user=401373976431165449 earned=+40 jailed=False bal=12868
2026-03-20 12:01:29 | BEG user=401373976431165449 earned=+56 jailed=False bal=12924
2026-03-20 12:04:36 | BEG user=401373976431165449 earned=+50 jailed=False bal=12974
2026-03-20 12:07:25 | ROB_BLOCKED robber=344531774518591498 victim=401373976431165449 fine=-169 robber_bal=0 ac_uses_left=1
2026-03-20 12:07:28 | BEG user=344531774518591498 earned=+34 jailed=False bal=34
2026-03-20 12:07:31 | CRIME_WIN user=344531774518591498 earned=+399 bal=433
2026-03-20 12:07:33 | WORK user=344531774518591498 earned=+90 lucky=True bal=523
2026-03-20 12:08:33 | BEG user=401373976431165449 earned=+34 jailed=False bal=13008
2026-03-20 12:11:44 | BEG user=401373976431165449 earned=+28 jailed=False bal=13036
2026-03-20 12:16:46 | BEG user=401373976431165449 earned=+66 jailed=False bal=13102
2026-03-20 12:17:10 | WORK user=824516445382901800 earned=+84 lucky=False bal=84
2026-03-20 12:17:11 | BEG user=824516445382901800 earned=+32 jailed=False bal=116
2026-03-20 12:17:13 | CRIME_WIN user=824516445382901800 earned=+501 bal=617
2026-03-20 12:17:22 | ROB_BLOCKED robber=824516445382901800 victim=344531774518591498 fine=-170 robber_bal=447 ac_uses_left=1
2026-03-20 12:17:37 | BEG user=344531774518591498 earned=+26 jailed=False bal=549
2026-03-20 12:19:11 | WORK user=178852380018868224 earned=+41 lucky=False bal=40699
2026-03-20 12:19:15 | BEG user=178852380018868224 earned=+32 jailed=False bal=40731
2026-03-20 12:19:18 | CRIME_WIN user=178852380018868224 earned=+460 bal=41191
2026-03-20 12:19:37 | ROULETTE_LOSE user=824516445382901800 bet=447 colour=punane result=must mult=1 bal=0
2026-03-20 12:23:18 | SLOTS_PAIR user=178852380018868224 bet=10000 change=5000 bal=46191
2026-03-20 12:23:28 | SLOTS_MISS user=178852380018868224 bet=10000 change=-10000 bal=36191
2026-03-20 12:26:00 | BEG user=344531774518591498 earned=+40 jailed=False bal=589
2026-03-20 12:34:38 | BEG user=401373976431165449 earned=+74 jailed=False bal=13176
2026-03-20 12:34:41 | WORK user=401373976431165449 earned=+105 lucky=False bal=13281
2026-03-20 12:35:44 | HEIST_HOUSE change=-479646 house_bal=529905
2026-03-20 12:35:44 | HEIST_WIN user=824516445382901800 change=+59955 bal=59955
2026-03-20 12:35:44 | HEIST_WIN user=401373976431165449 change=+59955 bal=73236
2026-03-20 12:35:44 | HEIST_WIN user=178852380018868224 change=+59955 bal=96146
2026-03-20 12:35:44 | HEIST_WIN user=338622999127261185 change=+59955 bal=60642
2026-03-20 12:35:44 | HEIST_WIN user=340451525799182357 change=+59955 bal=59955
2026-03-20 12:35:44 | HEIST_WIN user=218972931701735424 change=+59955 bal=62771
2026-03-20 12:35:44 | HEIST_WIN user=344531774518591498 change=+59955 bal=60544
2026-03-20 12:35:44 | HEIST_WIN user=272518654715887618 change=+59955 bal=61193
2026-03-20 12:36:08 | ROULETTE_WIN user=178852380018868224 bet=96146 colour=punane result=punane mult=1 bal=192292
2026-03-20 12:36:25 | ROULETTE_WIN user=178852380018868224 bet=192292 colour=punane result=punane mult=1 bal=384584
2026-03-20 12:36:26 | ROULETTE_WIN user=824516445382901800 bet=59955 colour=punane result=punane mult=1 bal=119910
2026-03-20 12:36:33 | BUY user=344531774518591498 item=karikas cost=-6000 bal=54544
2026-03-20 12:36:37 | BUY user=344531774518591498 item=monitor_360 cost=-7500 bal=47044
2026-03-20 12:36:50 | BLACKJACK user=344531774518591498 payout=+0 net=-47044 bal=0
2026-03-20 12:37:18 | ROULETTE_WIN user=178852380018868224 bet=384584 colour=punane result=punane mult=1 bal=769168
2026-03-20 12:37:48 | ROULETTE_WIN user=178852380018868224 bet=769168 colour=punane result=punane mult=1 bal=1538336
2026-03-20 12:37:52 | ROULETTE_LOSE user=824516445382901800 bet=119910 colour=punane result=must mult=1 bal=0
2026-03-20 12:39:40 | BUY user=272518654715887618 item=gaming_laptop cost=-1500 bal=59693
2026-03-20 12:39:51 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-167 robber_bal=0 ac_uses_left=1
2026-03-20 12:39:51 | BUY user=272518654715887618 item=cat6 cost=-3500 bal=56193
2026-03-20 12:39:55 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-100 robber_bal=0 ac_uses_left=0
2026-03-20 12:40:01 | ROB_WIN robber=401373976431165449 victim=178852380018868224 stolen=+162541 jackpot=False robber_bal=235777 victim_bal=1375795
2026-03-20 12:40:02 | ROB_WIN robber=824516445382901800 victim=178852380018868224 stolen=+340819 jackpot=False robber_bal=340819 victim_bal=1034976
2026-03-20 12:40:03 | BUY user=178852380018868224 item=anticheat cost=-1000 bal=1033976
2026-03-20 12:40:07 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-109 robber_bal=340710 ac_uses_left=1
2026-03-20 12:40:09 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-128 robber_bal=340582 ac_uses_left=0
2026-03-20 12:40:11 | ROB_FAIL robber=824516445382901800 victim=178852380018868224 fine=-188 robber_bal=340394
2026-03-20 12:40:12 | ROB_FAIL robber=824516445382901800 victim=178852380018868224 fine=-232 robber_bal=340162
2026-03-20 12:40:12 | BUY user=178852380018868224 item=anticheat cost=-1000 bal=1032976
2026-03-20 12:40:15 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-103 robber_bal=340059 ac_uses_left=1
2026-03-20 12:40:17 | BUY user=272518654715887618 item=lan_pass cost=-1200 bal=54993
2026-03-20 12:40:18 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-199 robber_bal=339860 ac_uses_left=0
2026-03-20 12:40:19 | BUY user=178852380018868224 item=anticheat cost=-1000 bal=1031976
2026-03-20 12:40:20 | ROB_BLOCKED robber=824516445382901800 victim=178852380018868224 fine=-100 robber_bal=339760 ac_uses_left=1
2026-03-20 12:40:23 | ROULETTE_LOSE user=178852380018868224 bet=1031976 colour=punane result=must mult=1 bal=0
2026-03-20 12:40:27 | BUY user=272518654715887618 item=anticheat cost=-1000 bal=53993
2026-03-20 12:40:34 | BUY user=272518654715887618 item=reguleeritav_laud cost=-3500 bal=50493
2026-03-20 12:40:42 | BUY user=272518654715887618 item=jellyfin cost=-4000 bal=46493
2026-03-20 12:40:55 | BUY user=272518654715887618 item=monitor cost=-2500 bal=43993
2026-03-20 12:41:00 | ROB_BLOCKED robber=824516445382901800 victim=401373976431165449 fine=-139 robber_bal=339621 ac_uses_left=0
2026-03-20 12:41:02 | ROB_FAIL robber=824516445382901800 victim=401373976431165449 fine=-131 robber_bal=339490
2026-03-20 12:41:02 | WORK user=272518654715887618 earned=+97 lucky=False bal=44090
2026-03-20 12:41:04 | ROB_WIN robber=824516445382901800 victim=401373976431165449 stolen=+51444 jackpot=False robber_bal=390934 victim_bal=184333
2026-03-20 12:41:05 | ROB_BLOCKED robber=178852380018868224 victim=824516445382901800 fine=-179 robber_bal=0 ac_uses_left=0
2026-03-20 12:41:05 | ROB_WIN robber=824516445382901800 victim=401373976431165449 stolen=+41097 jackpot=False robber_bal=432031 victim_bal=143236
2026-03-20 12:41:05 | ROB_WIN robber=401373976431165449 victim=824516445382901800 stolen=+67489 jackpot=False robber_bal=210725 victim_bal=364542
2026-03-20 12:41:07 | ROB_WIN robber=178852380018868224 victim=824516445382901800 stolen=+76500 jackpot=False robber_bal=76500 victim_bal=288042
2026-03-20 12:41:08 | ROB_FAIL robber=178852380018868224 victim=824516445382901800 fine=-136 robber_bal=76364
2026-03-20 12:41:08 | ROB_WIN robber=824516445382901800 victim=401373976431165449 stolen=+50641 jackpot=False robber_bal=338683 victim_bal=160084
2026-03-20 12:41:10 | BUY user=401373976431165449 item=anticheat cost=-1000 bal=159084
2026-03-20 12:41:11 | ROB_WIN robber=178852380018868224 victim=824516445382901800 stolen=+41788 jackpot=False robber_bal=118152 victim_bal=296895
2026-03-20 12:41:11 | ROB_BLOCKED robber=824516445382901800 victim=401373976431165449 fine=-103 robber_bal=296792 ac_uses_left=1
2026-03-20 12:41:13 | ROULETTE_WIN user=178852380018868224 bet=118152 colour=punane result=punane mult=1 bal=236304
2026-03-20 12:41:13 | ROB_BLOCKED robber=824516445382901800 victim=401373976431165449 fine=-125 robber_bal=296667 ac_uses_left=0
2026-03-20 12:41:24 | BUY user=401373976431165449 item=anticheat cost=-1000 bal=158084
2026-03-20 12:41:24 | BEG user=272518654715887618 earned=+38 jailed=False bal=44128
2026-03-20 12:41:35 | BEG user=401373976431165449 earned=+74 jailed=False bal=158158
2026-03-20 12:41:54 | ROULETTE_WIN user=178852380018868224 bet=236304 colour=punane result=punane mult=1 bal=472608
2026-03-20 12:41:59 | BLACKJACK user=272518654715887618 payout=+40000 net=+20000 bal=64128
2026-03-20 12:42:01 | SLOTS_PAIR user=824516445382901800 bet=296667 change=148333 bal=445000
2026-03-20 12:42:43 | ROULETTE_LOSE user=178852380018868224 bet=472608 colour=punane result=must mult=1 bal=0
2026-03-20 12:43:11 | SLOTS_PAIR user=338622999127261185 bet=60642 change=30321 bal=90963
2026-03-20 12:43:21 | BUY user=824516445382901800 item=anticheat cost=-1000 bal=444000
2026-03-20 12:43:28 | ROULETTE_WIN user=338622999127261185 bet=90963 colour=must result=must mult=1 bal=181926
2026-03-20 12:43:43 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=449000
2026-03-20 12:43:49 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=439000
2026-03-20 12:43:53 | WORK user=338622999127261185 earned=+61 lucky=False bal=181987
2026-03-20 12:43:54 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=444000
2026-03-20 12:43:55 | CRIME_FAIL user=338622999127261185 fine=-111 jailed=True bal=181876
2026-03-20 12:43:59 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=434000
2026-03-20 12:44:05 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=30000 bal=464000
2026-03-20 12:44:10 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=469000
2026-03-20 12:44:17 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=459000
2026-03-20 12:44:17 | BAIL_PAID user=338622999127261185 fine=-46087 pct=25% bal=135789
2026-03-20 12:44:22 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=449000
2026-03-20 12:44:25 | SLOTS_MISS user=338622999127261185 bet=135789 change=-135789 bal=0
2026-03-20 12:44:27 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=454000
2026-03-20 12:44:33 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=444000
2026-03-20 12:44:49 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=434000
2026-03-20 12:44:55 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=424000
2026-03-20 12:44:56 | BEG user=401373976431165449 earned=+20 jailed=False bal=158178
2026-03-20 12:45:02 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=30000 bal=454000
2026-03-20 12:45:08 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=60000 bal=514000
2026-03-20 12:45:13 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=519000
2026-03-20 12:45:20 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=509000
2026-03-20 12:45:25 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=30000 bal=539000
2026-03-20 12:45:30 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=544000
2026-03-20 12:45:35 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=534000
2026-03-20 12:45:42 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=524000
2026-03-20 12:45:47 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=514000
2026-03-20 12:45:57 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=504000
2026-03-20 12:46:02 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=494000
2026-03-20 12:46:07 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=499000
2026-03-20 12:46:12 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=504000
2026-03-20 12:46:18 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=509000
2026-03-20 12:46:22 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=499000
2026-03-20 12:46:28 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=489000
2026-03-20 12:46:33 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=494000
2026-03-20 12:46:40 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=484000
2026-03-20 12:46:45 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=489000
2026-03-20 12:46:50 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=30000 bal=519000
2026-03-20 12:46:56 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=509000
2026-03-20 12:47:02 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=514000
2026-03-20 12:47:07 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=519000
2026-03-20 12:47:13 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=509000
2026-03-20 12:47:21 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=514000
2026-03-20 12:47:27 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=504000
2026-03-20 12:47:33 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=494000
2026-03-20 12:47:38 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=90000 bal=584000
2026-03-20 12:47:43 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=589000
2026-03-20 12:47:48 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=594000
2026-03-20 12:47:55 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=584000
2026-03-20 12:48:00 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=40000 bal=624000
2026-03-20 12:48:06 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=614000
2026-03-20 12:48:12 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=619000
2026-03-20 12:48:18 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=40000 bal=659000
2026-03-20 12:48:20 | BEG user=401373976431165449 earned=+68 jailed=False bal=158246
2026-03-20 12:48:25 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=664000
2026-03-20 12:48:30 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=669000
2026-03-20 12:48:36 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=674000
2026-03-20 12:48:42 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=679000
2026-03-20 12:48:48 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=669000
2026-03-20 12:49:37 | ADMIN_JAIL admin=272518654715887618 target=401373976431165449 minutes=100 reason=Omavoliliselt
2026-03-20 12:51:31 | ADMIN_UNJAIL admin=272518654715887618 target=401373976431165449
2026-03-20 13:01:40 | BEG user=272518654715887618 earned=+10 jailed=False bal=64138
2026-03-20 13:02:01 | BLACKJACK user=272518654715887618 payout=+40000 net=+20000 bal=84138
2026-03-20 13:03:15 | BEG user=344531774518591498 earned=+78 jailed=False bal=78
2026-03-20 13:03:16 | WORK user=344531774518591498 earned=+120 lucky=False bal=198
2026-03-20 13:14:55 | BEG user=401373976431165449 earned=+70 jailed=False bal=158316
2026-03-20 13:14:58 | WORK user=401373976431165449 earned=+56 lucky=False bal=158372
2026-03-20 13:24:03 | BEG user=272518654715887618 earned=+40 jailed=False bal=84178
2026-03-20 13:24:12 | WORK user=272518654715887618 earned=+121 lucky=False bal=84299
2026-03-20 13:24:24 | BUY user=272518654715887618 item=energiajook cost=-800 bal=83499
2026-03-20 13:24:46 | BUY user=272518654715887618 item=mikrofon cost=-2800 bal=80699
2026-03-20 13:24:56 | BUY user=272518654715887618 item=klaviatuur cost=-1800 bal=78899
2026-03-20 13:25:12 | CRIME_FAIL user=272518654715887618 fine=-101 jailed=True bal=78798
2026-03-20 13:30:43 | BEG user=338622999127261185 earned=+70 jailed=False bal=70
2026-03-20 13:30:45 | WORK user=338622999127261185 earned=+109 lucky=False bal=179
2026-03-20 13:42:46 | CRIME_WIN user=401373976431165449 earned=+453 bal=158825
2026-03-20 13:44:12 | WORK user=344531774518591498 earned=+33 lucky=False bal=231
2026-03-20 13:44:14 | BEG user=344531774518591498 earned=+26 jailed=False bal=257
2026-03-20 14:45:12 | ROB_WIN robber=401373976431165449 victim=218972931701735424 stolen=+14535 jackpot=False robber_bal=173360 victim_bal=48236
2026-03-20 14:45:19 | WORK user=344531774518591498 earned=+88 lucky=False bal=345
2026-03-20 14:46:36 | ROB_BLOCKED robber=178852380018868224 victim=824516445382901800 fine=-142 robber_bal=0 ac_uses_left=1
2026-03-20 14:52:26 | WORK user=272518654715887618 earned=+88 lucky=False bal=78886
2026-03-20 14:52:30 | BEG user=272518654715887618 earned=+52 jailed=False bal=78938
2026-03-20 14:57:12 | BEG user=272518654715887618 earned=+80 jailed=False bal=79018
2026-03-20 15:17:52 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=679000
2026-03-20 15:17:58 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=659000
2026-03-20 15:18:05 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=639000
2026-03-20 15:18:10 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=649000
2026-03-20 15:18:15 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:18:21 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=639000
2026-03-20 15:18:27 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=649000
2026-03-20 15:18:33 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:18:38 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:18:45 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:18:50 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:18:55 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:19:03 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:19:08 | SLOTS_TRIPLE user=824516445382901800 bet=20000 change=60000 bal=709000
2026-03-20 15:19:13 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=689000
2026-03-20 15:19:18 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=669000
2026-03-20 15:19:23 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=679000
2026-03-20 15:19:30 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=689000
2026-03-20 15:19:47 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=669000
2026-03-20 15:19:53 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:19:58 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=629000
2026-03-20 15:20:03 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=639000
2026-03-20 15:20:08 | SLOTS_TRIPLE user=824516445382901800 bet=20000 change=80000 bal=719000
2026-03-20 15:20:13 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=699000
2026-03-20 15:20:20 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=679000
2026-03-20 15:20:25 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=659000
2026-03-20 15:20:30 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:20:35 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:20:40 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:20:47 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:20:53 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=679000
2026-03-20 15:20:58 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=689000
2026-03-20 15:21:03 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=669000
2026-03-20 15:21:10 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:21:16 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:21:23 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:21:32 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=679000
2026-03-20 15:21:37 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=689000
2026-03-20 15:21:43 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=669000
2026-03-20 15:21:48 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:21:53 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=659000
2026-03-20 15:22:00 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=669000
2026-03-20 15:22:05 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=649000
2026-03-20 15:22:10 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=629000
2026-03-20 15:22:15 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=609000
2026-03-20 15:22:20 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=589000
2026-03-20 15:22:25 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=569000
2026-03-20 15:22:31 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=549000
2026-03-20 15:22:36 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=559000
2026-03-20 15:22:41 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=539000
2026-03-20 15:23:15 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=529000
2026-03-20 15:23:20 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=519000
2026-03-20 15:23:26 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=524000
2026-03-20 15:23:31 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=514000
2026-03-20 15:23:36 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=519000
2026-03-20 15:23:41 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=509000
2026-03-20 15:23:48 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=514000
2026-03-20 15:23:53 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=519000
2026-03-20 15:23:58 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=524000
2026-03-20 15:24:03 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=514000
2026-03-20 15:24:10 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=504000
2026-03-20 15:24:18 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=494000
2026-03-20 15:24:23 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=484000
2026-03-20 15:24:30 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=489000
2026-03-20 15:24:35 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=479000
2026-03-20 15:24:40 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=469000
2026-03-20 15:24:46 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=459000
2026-03-20 15:24:51 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=464000
2026-03-20 15:24:56 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=454000
2026-03-20 15:25:03 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=444000
2026-03-20 15:25:09 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=434000
2026-03-20 15:25:16 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=424000
2026-03-20 15:25:21 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=414000
2026-03-20 15:25:28 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=419000
2026-03-20 15:25:35 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=409000
2026-03-20 15:25:40 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=414000
2026-03-20 15:25:46 | SLOTS_JACKPOT user=824516445382901800 bet=10000 change=240000 bal=654000
2026-03-20 15:25:53 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=659000
2026-03-20 15:25:58 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=664000
2026-03-20 15:26:03 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=140000 bal=804000
2026-03-20 15:28:09 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=809000
2026-03-20 15:28:14 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=799000
2026-03-20 15:28:19 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=804000
2026-03-20 15:28:25 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=794000
2026-03-20 15:28:32 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=799000
2026-03-20 15:29:08 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=804000
2026-03-20 15:29:14 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=794000
2026-03-20 15:29:21 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=799000
2026-03-20 15:29:26 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=789000
2026-03-20 15:29:31 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=40000 bal=829000
2026-03-20 15:29:36 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=819000
2026-03-20 15:29:41 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=824000
2026-03-20 15:29:47 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=829000
2026-03-20 15:29:56 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=834000
2026-03-20 15:30:02 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=839000
2026-03-20 15:30:07 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=844000
2026-03-20 15:30:15 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=834000
2026-03-20 15:30:32 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=839000
2026-03-20 15:30:38 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=829000
2026-03-20 15:30:43 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=834000
2026-03-20 15:31:35 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=839000
2026-03-20 15:31:40 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=844000
2026-03-20 15:31:46 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=849000
2026-03-20 15:31:53 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=839000
2026-03-20 15:31:58 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=844000
2026-03-20 15:32:03 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=834000
2026-03-20 15:32:09 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=824000
2026-03-20 15:32:14 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=814000
2026-03-20 15:32:20 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=804000
2026-03-20 15:32:26 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=794000
2026-03-20 15:32:31 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=799000
2026-03-20 15:32:36 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=804000
2026-03-20 15:32:41 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=794000
2026-03-20 15:32:48 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=784000
2026-03-20 15:32:53 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=774000
2026-03-20 15:33:09 | BUY user=824516445382901800 item=karikas cost=-6000 bal=768000
2026-03-20 15:33:13 | BUY user=824516445382901800 item=monitor_360 cost=-7500 bal=760500
2026-03-20 15:33:16 | BUY user=824516445382901800 item=gaming_tool cost=-9000 bal=751500
2026-03-20 15:35:01 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=761500
2026-03-20 15:35:08 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=771500
2026-03-20 15:35:14 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=781500
2026-03-20 15:35:20 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=761500
2026-03-20 15:35:25 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=771500
2026-03-20 15:35:30 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=751500
2026-03-20 15:35:35 | SLOTS_PAIR user=824516445382901800 bet=20000 change=10000 bal=761500
2026-03-20 15:35:42 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=741500
2026-03-20 15:35:47 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=721500
2026-03-20 15:35:52 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=701500
2026-03-20 15:35:57 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=681500
2026-03-20 15:36:02 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=661500
2026-03-20 15:36:07 | SLOTS_MISS user=824516445382901800 bet=20000 change=-20000 bal=641500
2026-03-20 15:36:12 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=646500
2026-03-20 15:36:17 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=651500
2026-03-20 15:36:22 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=641500
2026-03-20 15:36:28 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=631500
2026-03-20 15:36:33 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=621500
2026-03-20 15:36:40 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=626500
2026-03-20 15:36:45 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=616500
2026-03-20 15:36:53 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=621500
2026-03-20 15:36:58 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=611500
2026-03-20 15:37:03 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=601500
2026-03-20 15:37:09 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=606500
2026-03-20 15:37:14 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=611500
2026-03-20 15:37:20 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=601500
2026-03-20 15:37:27 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=606500
2026-03-20 15:37:32 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=611500
2026-03-20 15:37:40 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=601500
2026-03-20 15:37:47 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=591500
2026-03-20 15:37:52 | SLOTS_TRIPLE user=824516445382901800 bet=10000 change=60000 bal=651500
2026-03-20 15:37:57 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=641500
2026-03-20 15:38:06 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=631500
2026-03-20 15:38:12 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=636500
2026-03-20 15:38:18 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=626500
2026-03-20 15:38:24 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=616500
2026-03-20 15:38:29 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=621500
2026-03-20 15:38:35 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=611500
2026-03-20 15:38:40 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=616500
2026-03-20 15:42:05 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=606500
2026-03-20 15:42:12 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=596500
2026-03-20 15:42:18 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=586500
2026-03-20 15:42:24 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=576500
2026-03-20 15:42:29 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=566500
2026-03-20 15:42:36 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=556500
2026-03-20 15:42:41 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=546500
2026-03-20 15:42:46 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=551500
2026-03-20 15:42:51 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=556500
2026-03-20 15:42:57 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=561500
2026-03-20 15:46:36 | CRIME_WIN user=401373976431165449 earned=+304 bal=173664
2026-03-20 15:46:48 | WORK user=401373976431165449 earned=+410 lucky=True bal=174074
2026-03-20 15:46:50 | BEG user=401373976431165449 earned=+52 jailed=False bal=174126
2026-03-20 15:48:44 | WORK user=272518654715887618 earned=+93 lucky=False bal=79111
2026-03-20 15:49:06 | BLACKJACK user=272518654715887618 payout=+80000 net=+40000 bal=119111
2026-03-20 16:24:32 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=551500
2026-03-20 16:24:38 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=541500
2026-03-20 16:24:42 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=546500
2026-03-20 16:24:47 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=536500
2026-03-20 16:24:55 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=541500
2026-03-20 16:25:02 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=546500
2026-03-20 16:25:08 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=551500
2026-03-20 16:25:13 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=541500
2026-03-20 16:25:20 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=531500
2026-03-20 16:25:28 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=521500
2026-03-20 16:25:35 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=526500
2026-03-20 16:25:41 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=531500
2026-03-20 16:25:47 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=536500
2026-03-20 16:25:53 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=541500
2026-03-20 16:26:00 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=546500
2026-03-20 16:26:05 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=536500
2026-03-20 16:26:10 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=541500
2026-03-20 16:28:22 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=546500
2026-03-20 16:28:28 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=536500
2026-03-20 16:28:35 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=541500
2026-03-20 16:28:40 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=531500
2026-03-20 16:28:45 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=536500
2026-03-20 16:28:50 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=541500
2026-03-20 16:28:57 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=531500
2026-03-20 16:29:05 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=521500
2026-03-20 16:29:10 | SLOTS_MISS user=824516445382901800 bet=10000 change=-10000 bal=511500
2026-03-20 16:29:15 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=516500
2026-03-20 16:29:21 | SLOTS_PAIR user=824516445382901800 bet=10000 change=5000 bal=521500
2026-03-20 16:30:49 | WORK user=824516445382901800 earned=+140 lucky=False bal=521640
2026-03-20 16:30:50 | BEG user=824516445382901800 earned=+60 jailed=False bal=521700
2026-03-20 16:30:53 | CRIME_WIN user=824516445382901800 earned=+260 bal=521960
2026-03-20 16:31:06 | ROB_BLOCKED robber=824516445382901800 victim=272518654715887618 fine=-174 robber_bal=521786 ac_uses_left=1
2026-03-20 16:34:38 | BEG user=367347301322326016 earned=+15 jailed=False bal=217
2026-03-20 16:34:40 | WORK user=367347301322326016 earned=+43 lucky=False bal=260
2026-03-20 16:34:43 | CRIME_WIN user=367347301322326016 earned=+392 bal=652
2026-03-20 16:46:10 | BEG user=401373976431165449 earned=+62 jailed=False bal=174188
2026-03-20 16:46:12 | WORK user=401373976431165449 earned=+95 lucky=False bal=174283
2026-03-20 16:46:25 | ROB_BLOCKED robber=401373976431165449 victim=824516445382901800 fine=-197 robber_bal=174086 ac_uses_left=0
2026-03-20 16:46:35 | BUY user=824516445382901800 item=anticheat cost=-1000 bal=520786
2026-03-20 16:47:16 | GIVE from_=824516445382901800 to=450392724169031680 amount=520786 from_bal=0 to_bal=520786
2026-03-20 16:48:04 | HEIST_FAIL user=401373976431165449 fine=-1000 jailed_until=2026-03-20T16:18:04.449345+00:00 bal=173086
2026-03-20 16:48:04 | HEIST_FAIL user=824516445382901800 fine=-150 jailed_until=2026-03-20T16:18:04.449345+00:00 bal=0
2026-03-20 16:49:17 | BEG user=401373976431165449 earned=+26 jailed=True bal=173112
2026-03-20 16:49:59 | GIVE from_=450392724169031680 to=824516445382901800 amount=520786 from_bal=0 to_bal=520786
2026-03-20 16:52:08 | GIVE from_=824516445382901800 to=450392724169031680 amount=519786 from_bal=1000 to_bal=519786
2026-03-20 16:52:19 | BAIL_PAID user=824516445382901800 fine=-350 pct=24% bal=650
2026-03-20 16:54:04 | GIVE from_=450392724169031680 to=824516445382901800 amount=519786 from_bal=0 to_bal=520436
2026-03-20 16:56:31 | ROB_BLOCKED robber=178852380018868224 victim=824516445382901800 fine=-188 robber_bal=0 ac_uses_left=1
2026-03-20 16:57:43 | GIVE from_=824516445382901800 to=401373976431165449 amount=20000 from_bal=500436 to_bal=193112
2026-03-20 16:57:47 | GIVE from_=824516445382901800 to=272518654715887618 amount=20000 from_bal=480436 to_bal=139111
2026-03-20 16:57:54 | GIVE from_=824516445382901800 to=340451525799182357 amount=20000 from_bal=460436 to_bal=79955
2026-03-20 16:58:02 | GIVE from_=824516445382901800 to=218972931701735424 amount=20000 from_bal=440436 to_bal=68236
2026-03-20 16:58:18 | GIVE from_=824516445382901800 to=323906492073771019 amount=20000 from_bal=420436 to_bal=62761
2026-03-20 16:58:22 | GIVE from_=824516445382901800 to=367347301322326016 amount=20000 from_bal=400436 to_bal=20652
2026-03-20 16:58:31 | GIVE from_=824516445382901800 to=344531774518591498 amount=20000 from_bal=380436 to_bal=20345
2026-03-20 16:58:35 | GIVE from_=824516445382901800 to=209554152584380420 amount=20000 from_bal=360436 to_bal=20309
2026-03-20 16:58:42 | GIVE from_=824516445382901800 to=338622999127261185 amount=20000 from_bal=340436 to_bal=20179
2026-03-20 16:58:46 | ROULETTE_LOSE user=344531774518591498 bet=20345 colour=punane result=must mult=1 bal=0
2026-03-20 16:59:01 | GIVE from_=824516445382901800 to=344531774518591498 amount=20000 from_bal=320436 to_bal=20000
2026-03-20 16:59:05 | GIVE from_=824516445382901800 to=240454469668569088 amount=20000 from_bal=300436 to_bal=20044
2026-03-20 16:59:09 | GIVE from_=824516445382901800 to=311132892795371520 amount=20000 from_bal=280436 to_bal=20000
2026-03-20 16:59:12 | GIVE from_=824516445382901800 to=178852380018868224 amount=20000 from_bal=260436 to_bal=20000
2026-03-20 16:59:24 | GIVE from_=824516445382901800 to=296322817941569537 amount=20000 from_bal=240436 to_bal=20000
2026-03-20 16:59:29 | GIVE from_=824516445382901800 to=485760228508565504 amount=20000 from_bal=220436 to_bal=20000
2026-03-20 16:59:34 | GIVE from_=824516445382901800 to=450392724169031680 amount=20000 from_bal=200436 to_bal=20000
2026-03-20 17:00:10 | ROULETTE_LOSE user=344531774518591498 bet=10000 colour=punane result=must mult=1 bal=10000
2026-03-20 17:00:34 | ROULETTE_WIN user=344531774518591498 bet=10000 colour=punane result=punane mult=1 bal=20000
2026-03-20 17:00:58 | ROULETTE_LOSE user=344531774518591498 bet=10000 colour=punane result=must mult=1 bal=10000
2026-03-20 17:01:14 | ROULETTE_LOSE user=344531774518591498 bet=10000 colour=punane result=must mult=1 bal=0
2026-03-20 17:06:54 | BEG user=272518654715887618 earned=+20 jailed=False bal=139131
2026-03-20 17:06:56 | WORK user=272518654715887618 earned=+393 lucky=True bal=139524
2026-03-20 17:07:23 | BLACKJACK user=272518654715887618 payout=+0 net=-50000 bal=89524
2026-03-20 17:10:34 | BEG user=272518654715887618 earned=+30 jailed=False bal=89554
2026-03-20 17:10:40 | CRIME_FAIL user=272518654715887618 fine=-90 jailed=True bal=89464
2026-03-20 17:10:53 | JAIL_FREE user=272518654715887618 method=doubles
2026-03-20 17:16:58 | BEG user=272518654715887618 earned=+78 jailed=False bal=89542
2026-03-20 17:17:49 | ROULETTE_LOSE user=824516445382901800 bet=200436 colour=punane result=must mult=1 bal=0
2026-03-20 17:18:09 | BLACKJACK user=272518654715887618 payout=+179084 net=+89542 bal=179084
2026-03-20 17:18:37 | BLACKJACK user=272518654715887618 payout=+0 net=-179084 bal=0
2026-03-20 17:21:54 | BEG user=344531774518591498 earned=+14 jailed=False bal=14
2026-03-20 17:21:57 | WORK user=344531774518591498 earned=+56 lucky=False bal=70
2026-03-20 17:21:59 | BEG user=272518654715887618 earned=+39 jailed=False bal=39
2026-03-20 17:22:02 | DAILY user=344531774518591498 earned=+150 streak=1 bal=220
2026-04-01 18:44:29 | WORK user=272518654715887618 earned=+54 lucky=False bal=24077
2026-04-01 20:02:11 | BEG user=272518654715887618 earned=+23 jailed=False bal=24100
2026-04-01 20:02:53 | ROULETTE_WIN user=178852380018868224 bet=15214708 colour=punane result=punane mult=1 bal=30429416
2026-04-01 20:03:42 | ROULETTE_WIN user=178852380018868224 bet=30429416 colour=must result=must mult=1 bal=60858832
2026-04-01 20:04:16 | ROULETTE_LOSE user=178852380018868224 bet=60858832 colour=punane result=must mult=1 bal=0
2026-04-01 20:06:37 | BEG user=401373976431165449 earned=+52 jailed=False bal=8446
2026-04-01 20:06:39 | WORK user=401373976431165449 earned=+60 lucky=False bal=8506
2026-04-01 20:06:52 | DAILY user=401373976431165449 earned=+750 streak=1 bal=9256
2026-04-01 20:07:07 | DAILY user=272518654715887618 earned=+825 streak=1 bal=24925
2026-04-01 20:07:12 | CRIME_WIN user=272518654715887618 earned=+331 bal=25256
2026-04-01 20:07:38 | CRIME_WIN user=401373976431165449 earned=+391 bal=9647
2026-04-01 20:07:49 | BUY user=401373976431165449 item=echolood cost=-8000 bal=1647
2026-04-01 20:09:16 | ROB_BLOCKED robber=824516445382901800 victim=340451525799182357 fine=-118 robber_bal=891 ac_uses_left=1
2026-04-01 20:09:23 | ROB_BLOCKED robber=401373976431165449 victim=340451525799182357 fine=-175 robber_bal=1472 ac_uses_left=0
2026-04-01 20:09:52 | ROB_WIN robber=178852380018868224 victim=340451525799182357 stolen=+34868 jackpot=False robber_bal=34868 victim_bal=140238
2026-04-01 20:10:48 | DAILY user=367347301322326016 earned=+712 streak=1 bal=8462
2026-04-01 20:10:55 | WORK user=367347301322326016 earned=+25 lucky=False bal=8487
2026-04-01 20:11:00 | BEG user=367347301322326016 earned=+15 jailed=False bal=8502
2026-04-01 20:11:37 | ROB_FAIL robber=272518654715887618 victim=340451525799182357 fine=-140 robber_bal=25116
2026-04-01 20:15:19 | HEIST_FAIL user=178852380018868224 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=33868
2026-04-01 20:15:19 | HEIST_FAIL user=340451525799182357 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=139238
2026-04-01 20:15:19 | HEIST_FAIL user=272518654715887618 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=24116
2026-04-01 20:15:19 | HEIST_FAIL user=209554152584380420 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=20112
2026-04-01 20:15:19 | HEIST_FAIL user=401373976431165449 fine=-220 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=1252
2026-04-01 20:15:19 | HEIST_FAIL user=344531774518591498 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=112701
2026-04-01 20:15:19 | HEIST_FAIL user=367347301322326016 fine=-1000 jailed_until=2026-04-01T18:45:19.705842+00:00 bal=7502
2026-04-01 20:15:45 | JAIL_FREE user=272518654715887618 method=doubles
2026-04-01 20:20:07 | JAIL_FREE user=344531774518591498 method=doubles
2026-04-01 20:20:14 | DAILY user=344531774518591498 earned=+825 streak=1 bal=113526
2026-04-01 20:20:16 | WORK user=344531774518591498 earned=+45 lucky=False bal=113571
2026-04-01 20:20:19 | WORK user=272518654715887618 earned=+55 lucky=False bal=24171
2026-04-01 20:20:19 | BEG user=344531774518591498 earned=+22 jailed=False bal=113593
2026-04-01 20:20:36 | BLACKJACK user=272518654715887618 payout=+0 net=-24171 bal=0
2026-04-01 20:21:03 | CRIME_FAIL user=344531774518591498 fine=-90 jailed=True bal=113503
2026-04-01 20:21:11 | FISH user=272518654715887618 fish=koger weight=590 value=15
2026-04-01 20:21:45 | ROB_WIN robber=344531774518591498 victim=340451525799182357 stolen=+15566 jackpot=False robber_bal=129069 victim_bal=123672
2026-04-01 20:25:40 | BAIL_PAID user=178852380018868224 fine=-8760 pct=26% bal=25108
2026-04-01 20:28:28 | BEG user=178852380018868224 earned=+28 jailed=False bal=25136
2026-04-01 20:28:30 | WORK user=178852380018868224 earned=+92 lucky=False bal=25228
2026-04-01 20:28:33 | DAILY user=178852380018868224 earned=+825 streak=1 bal=26053
2026-04-01 20:28:38 | CRIME_WIN user=178852380018868224 earned=+640 bal=26693
2026-04-01 20:35:35 | BEG user=401373976431165449 earned=+56 jailed=True bal=1308
2026-04-01 20:36:20 | JAIL_FREE user=401373976431165449 method=doubles
2026-04-01 20:37:47 | FISH user=401373976431165449 fish=angerjas weight=989 value=79
2026-04-01 20:46:02 | DAILY user=338622999127261185 earned=+300 streak=1 bal=300
2026-04-01 20:56:03 | BEG user=344531774518591498 earned=+60 jailed=False bal=129129
2026-04-01 20:56:29 | ROULETTE_LOSE user=344531774518591498 bet=1000 colour=punane result=must mult=1 bal=128129
2026-04-01 21:01:23 | BEG user=272518654715887618 earned=+33 jailed=False bal=33
2026-04-01 21:01:42 | FISH user=272518654715887618 fish=sarj weight=151 value=6
2026-04-01 21:02:38 | FISH user=344531774518591498 fish=viidikas weight=98 value=6
2026-04-01 21:02:57 | FISH_SELL user=344531774518591498 count=2 coins=+13 bal=128142
2026-04-01 21:03:10 | BEG user=401373976431165449 earned=+54 jailed=False bal=1362
2026-04-01 21:03:31 | FISH user=401373976431165449 fish=siig weight=584 value=63
2026-04-01 21:05:19 | WORK user=401373976431165449 earned=+131 lucky=False bal=1493
2026-04-01 21:05:38 | FISH user=401373976431165449 fish=siig weight=1624 value=112
2026-04-01 21:05:48 | FISH_SELL user=401373976431165449 count=3 coins=+254 bal=1747
2026-04-01 21:08:31 | BEG user=401373976431165449 earned=+32 jailed=False bal=1779
2026-04-01 21:08:45 | FISH user=401373976431165449 fish=tougjas weight=3051 value=207
2026-04-01 21:09:01 | ROULETTE_WIN user=401373976431165449 bet=1000 colour=punane result=punane mult=1 bal=2779
2026-04-01 21:09:35 | BLACKJACK user=401373976431165449 payout=+3000 net=+1500 bal=4279
2026-04-01 21:09:35 | ROULETTE_LOSE user=344531774518591498 bet=1000 colour=punane result=must mult=1 bal=127142
2026-04-01 21:10:05 | ROULETTE_WIN user=401373976431165449 bet=1000 colour=punane result=punane mult=1 bal=5279
2026-04-01 21:10:46 | ROULETTE_WIN user=344531774518591498 bet=1000 colour=punane result=punane mult=1 bal=128142
2026-04-01 21:11:03 | ROULETTE_LOSE user=401373976431165449 bet=1000 colour=must result=punane mult=1 bal=4279
2026-04-01 21:11:24 | ROULETTE_LOSE user=344531774518591498 bet=1000 colour=punane result=roheline mult=1 bal=127142
2026-04-01 21:15:50 | WORK user=338622999127261185 earned=+15 lucky=False bal=315
2026-04-01 21:15:54 | CRIME_WIN user=338622999127261185 earned=+453 bal=768
2026-04-01 21:16:00 | BEG user=338622999127261185 earned=+20 jailed=False bal=788
2026-04-01 21:16:13 | FISH user=338622999127261185 fish=ahven weight=422 value=14
2026-04-01 21:18:36 | BEG user=401373976431165449 earned=+20 jailed=False bal=4299
2026-04-01 21:18:52 | FISH user=401373976431165449 fish=karpkala weight=1920 value=47
2026-04-01 21:20:58 | SLOTS_TRIPLE user=344531774518591498 bet=1000 change=4000 bal=131142
2026-04-01 21:21:39 | SLOTS_MISS user=344531774518591498 bet=1000 change=-1000 bal=130142
2026-04-01 21:28:25 | ROULETTE_LOSE user=401373976431165449 bet=1000 colour=punane result=must mult=1 bal=3299
2026-04-01 21:29:10 | SLOTS_PAIR user=344531774518591498 bet=1000 change=500 bal=130642
2026-04-01 21:29:28 | ROULETTE_LOSE user=401373976431165449 bet=1000 colour=punane result=must mult=1 bal=2299
2026-04-01 21:30:49 | SLOTS_PAIR user=344531774518591498 bet=1000 change=500 bal=131142
2026-04-01 21:31:30 | SLOTS_PAIR user=344531774518591498 bet=1000 change=500 bal=131642
2026-04-01 21:31:33 | ROULETTE_WIN user=401373976431165449 bet=1000 colour=punane result=punane mult=1 bal=3299
2026-04-01 21:31:37 | BEG user=401373976431165449 earned=+68 jailed=False bal=3367
2026-04-01 21:32:05 | FISH user=401373976431165449 fish=latikas weight=2351 value=66
2026-04-01 21:33:14 | ROULETTE_LOSE user=401373976431165449 bet=1000 colour=punane result=must mult=1 bal=2367
2026-04-01 21:35:09 | SLOTS_MISS user=344531774518591498 bet=1000 change=-1000 bal=130642
2026-04-01 21:35:14 | ROULETTE_LOSE user=401373976431165449 bet=1000 colour=punane result=must mult=1 bal=1367
2026-04-01 21:48:35 | ROB_FAIL robber=338622999127261185 victim=340451525799182357 fine=-237 robber_bal=551
2026-04-01 21:49:59 | BEG user=401373976431165449 earned=+56 jailed=False bal=1423
2026-04-01 21:50:15 | FISH user=401373976431165449 fish=vimb weight=856 value=462
2026-04-01 22:11:02 | BEG user=401373976431165449 earned=+52 jailed=False bal=1475
2026-04-01 22:11:13 | WORK user=401373976431165449 earned=+73 lucky=False bal=1548
2026-04-01 22:11:27 | ROB_WIN robber=401373976431165449 victim=367347301322326016 stolen=+1818 jackpot=False robber_bal=3366 victim_bal=5684
2026-04-01 22:11:44 | FISH user=401373976431165449 fish=lohe weight=2973 value=313
2026-04-01 22:13:30 | ROULETTE_LOSE user=401373976431165449 bet=2000 colour=punane result=roheline mult=1 bal=1366
2026-04-01 22:14:33 | ROULETTE_LOSE user=401373976431165449 bet=1366 colour=punane result=must mult=1 bal=0
2026-04-01 22:40:19 | WORK user=367347301322326016 earned=+82 lucky=False bal=5766
2026-04-01 22:40:23 | CRIME_FAIL user=367347301322326016 fine=-100 jailed=True bal=5666
2026-04-01 22:46:27 | WORK user=344531774518591498 earned=+116 lucky=False bal=130758
2026-04-01 22:46:30 | BEG user=344531774518591498 earned=+58 jailed=False bal=130816
2026-04-01 22:46:35 | CRIME_WIN user=344531774518591498 earned=+419 bal=131235
2026-04-01 22:46:44 | ROB_FAIL robber=344531774518591498 victim=340451525799182357 fine=-246 robber_bal=130989
2026-04-01 22:47:01 | FISH user=344531774518591498 fish=viidikas weight=80 value=5
2026-04-01 22:48:58 | WORK user=178852380018868224 earned=+106 lucky=True bal=26799
2026-04-01 22:49:03 | CRIME_WIN user=178852380018868224 earned=+486 bal=27285
2026-04-01 22:49:05 | BEG user=178852380018868224 earned=+76 jailed=False bal=27361
2026-04-01 22:52:25 | BEG user=401373976431165449 earned=+44 jailed=False bal=44
2026-04-01 22:52:29 | WORK user=401373976431165449 earned=+103 lucky=False bal=147
2026-04-01 22:52:39 | CRIME_FAIL user=401373976431165449 fine=-125 jailed=False bal=22
2026-04-01 22:53:01 | FISH user=401373976431165449 fish=latikas weight=1217 value=40
2026-04-01 22:57:11 | SLOTS_PAIR user=344531774518591498 bet=10000 change=5000 bal=135989

View File

@@ -128,6 +128,7 @@ CMD: dict[str, str] = {
"shutdown": "Lülita bot välja (ilma taaskäivituseta)",
"pause": "Peata / jätka kõik käsklused (hooldusrežiim)",
"send": "Saada sõnum valitud kanalisse",
"profile": "Vaata oma profiili: saldo, tase, esemed, statistika ja kalakogu",
"balance": "Vaata enda (või kellegi teise) TipiCOINide saldot",
"daily": "Võta enda päevane TipiCOINi boonus",
"work": "Tööta ja teeni TipiCOINe (1h ooteaeg)",
@@ -157,11 +158,19 @@ CMD: dict[str, str] = {
"adminunban": "[Admin] Eemalda majandussüsteemi keeld kasutajalt",
"adminreset": "[Admin] Lähtesta kasutaja majandusandmed",
"adminview": "[Admin] Vaata kasutaja majandusandmeid",
"adminexp": "[Admin] Anna v\u00f5i v\u00f5ta EXP kasutajalt",
"adminitem": "[Admin] Anna v\u00f5i eemalda ese kasutajalt (tasuta)",
"allowchannel": "[Admin] Lisa kanal, kus bot võib vastata käsklustele",
"denychannel": "[Admin] Eemalda kanal lubatud kanalite nimekirjast",
"channels": "[Admin] Näita lubatud kanalite nimekirja",
"economysetup": "[Admin] Loo ja sea korda majandussüsteemi rollid",
"blackjack": "Mängi blackjacki TipiBOTi vastu",
"prestige": "Prestiiži (nõuab taset 30) ja teeni Prestiižipunkte",
"prestigeshop": "Vaata prestiižipoodi ja sinu uuenduste taset",
"prestigebuy": "Osta prestiižiuuendus Prestiižipunktide eest",
"fish": "Mine kalastama (interaktiivne mäng, 2min ooteaeg)",
"fishbook": "Vaata oma kalakogu ja kogutud kalaliike",
"fishsell": "Müü kalu oma inventarist",
}
# ---------------------------------------------------------------------------
@@ -195,6 +204,12 @@ OPT: dict[str, str] = {
"stats_kasutaja": "Mängija, kelle statistikat tahad vaadata (vaikimisi sina)",
"adminseason_top_n": "Kui palju mängijaid võitis (vaikimisi 10)",
"blackjack_panus": "Panus TipiCOINides ('all' = kogu saldo)",
"prestigebuy_upgrade": "Uuenduse ID (vaata /prestigeshop)",
"fishbook_kasutaja": "Mängija, kelle kalakogu vaadata (vaikimisi sina)",
"profile_kasutaja": "Mängija, kelle profiili vaadata (vaikimisi sina)",
"adminexp_kogus": "Positiivne = anna, negatiivne = võta",
"adminitem_ese": "Eseme ID (kasutatav sisse, vaata /shop)",
"adminitem_tegevus": "'anna' või 'eemalda'",
}
# ---------------------------------------------------------------------------
@@ -218,8 +233,7 @@ HELP_CATEGORIES: dict[str, dict] = {
"description": "TipiCOIN majandus",
"color": 0xF4C430,
"fields": [
("/balance [@user]", "Vaata enda (või kellegi teise) TipiCOINide saldot"),
("/rank [@user]", "Vaata oma EXP, taset, progressi ja edetabeli positsiooni. T2 pood avaneb tasemel 10, T3 tasemel 20."),
("/profile [@user]", "Saldo, tase, EXP progress, prestiiz - kõik ühes kohas. Nupud: Esemed · Statistika · Kalakogu."),
("/cooldowns", "Vaata kõikide käskude ooteaegu. Näitab ka vangla ooteaega."),
("/daily", "Võta enda päevane TipiCOINide boonus. 20h ooteaeg. Streak'i boonus: 3d=+50%, 7d=+100%, 14d=+200%."),
("/work", "Tööta ja teeni TipiCOINe (1h ooteaeg)"),
@@ -324,6 +338,7 @@ REMINDER_OPTS: list[tuple[str, str, str]] = [
("beg", "🙏 /beg", "Kerjamine (5min ooteaeg)"),
("crime", "🦹 /crime", "Kuritegu (2t ooteaeg)"),
("rob", "🔫 /rob", "Rööv (2t ooteaeg)"),
("fish", "🎣 /fish", "Kalapüük (2min ooteaeg)"),
]
# ---------------------------------------------------------------------------
@@ -530,8 +545,12 @@ TITLE: dict[str, str] = {
"jailbreak_bail": "💸 Kautsjon",
"give": "<:TipiHEART:1483431377561976853> TipiCOINi ülekanne",
"stats": "📊 Mängustatistika",
"leaderboard_coins":"🪙 TipiBOTi edetabel - Mündid",
"leaderboard_exp": "📊 TipiBOTi edetabel - EXP / Tase",
"leaderboard_coins": "🪙 TipiBOTi edetabel - Mündid",
"leaderboard_exp": "📊 TipiBOTi edetabel - EXP / Tase",
"leaderboard_season": "🏆 TipiBOTi edetabel - Hooaja EXP",
"leaderboard_prestige": "<:TipiFIRE:1483431381668335687> TipiBOTi edetabel - Prestiiž",
"leaderboard_wagered": "🎲 TipiBOTi edetabel - Hasartmängud",
"leaderboard_fish": "🎣 TipiBOTi edetabel - Kalapüük",
"rps": "⚔️ Kivi, Paber, Käärid",
"rps_duel": "⚔️ KPK duell",
"rps_duel_active": "⚔️ KPK duell - käimas",
@@ -556,6 +575,16 @@ TITLE: dict[str, str] = {
"blackjack_push": "🤝 Viik!",
"blackjack_dbust": "<:TipiSKULL:1483431378929451028> Üle 21 - mõlemad kaotasid!",
"blackjack_dwin": "<:TipiFIRE:1483431381668335687> Topeltpanus võitis!",
"prestige_confirm": "🔥 Prestiiž - kinnita",
"prestige_success": "<:TipiFIRE:1483431381668335687> Prestiiž {level} saavutatud!",
"prestige_too_low": "❌ Prestiiž pole saadaval",
"prestige_shop": "<:TipiFIRE:1483431381668335687> Prestiižipood",
"prestige_buy_ok": "✅ Uuendus ostetud!",
"fish_cast": "🎣 Otsid kala...",
"fish_bite": "🐟 KALA NÄKKAB!",
"fish_escape": "🎣 Kala pääses!",
"fish_junk": "🗑️ Ai ai ai...",
"fishbook": "📖 Kalakogu",
}
# ---------------------------------------------------------------------------
@@ -585,6 +614,7 @@ ERR: dict[str, str] = {
"item_not_found": "❌ Eset ei leitud.",
"item_level_req": "🔒 Selle eseme ostmiseks vajad **taset {min_level}** (sul on tase {user_level}). Teeni EXP-id kõiki käske kasutades.",
"not_your_game": "❌ See pole sinu mäng!",
"game_in_progress": "❌ Sul on juba mäng käimas! Lõpeta see enne.",
"not_your_challenge":"❌ See väljakutse pole sulle!",
"not_your_menu": "❌ See ei ole sinu menüü.",
"give_self": "❌ Sa ei saa iseendale TipiCOINe anda.",
@@ -607,6 +637,7 @@ ERR: dict[str, str] = {
"channel_only": "❌ Boti käske saab kasutada ainult nendes kanalites: {channels}",
"guild_only": "Seda käsku saab kasutada ainult serveris.",
"sheet_error": "❌ Tabeli laadimine ebaõnnestus: ```{error}```",
"gamble_cooldown": "🎰 Oled just mänginud! Saad uuesti mängida {ts}.",
}
# ---------------------------------------------------------------------------
@@ -622,6 +653,7 @@ CD_MSG: dict[str, str] = {
"heist": "⏳ Saad uuesti heisti teha {ts}.",
"heist_global": "⏳ Pangahoidla alles kosub eelmisest röövist. Järgmine heist võimalik {ts}.",
"jailed": "<:TipiTROLL:1483431380166774895> Oled vangis! Pääsed välja {ts}. Kasuta `/jailbreak`, et varem välja pääseda.",
"fish": "🎣 Saad uuesti kalastada {ts}.",
}
# ---------------------------------------------------------------------------
@@ -661,20 +693,23 @@ BJ: dict[str, str] = {
ITEM_DESCRIPTIONS: dict[str, str] = {
"gaming_hiir": "Koolist varastatud hiir? Ei, see on mängurihiir. Teeni töötades 50% rohkem TipiCOINe.",
"hiirematt": "XXL suuruses, ainult parimast materjalist. Kerjamise ooteaeg 5min → 3min.",
"korvaklapid": "Noise-cancelling - kuuled ainult TipiCOINide kõlinat. Päevase boonuse ooteaeg 20h → 18h.",
"korvaklapid": "Noise-cancelling - kuuled ainult TipiCOINide kõlinat. Päevase boonuse ooteaeg 20h → 18h + 25⬡ boonust.",
"lan_pass": "Ametlik TipiLANi pilet (2025). Päevane boonus on duubeldatud.",
"energiajook": "Kolm Red Bulli järjest. 30% tõenäosus, et teenid töötades 3x rohkem.",
"gaming_laptop": "RTX 5090 jooksutab botte 24/7. Päevane boonus genereerib 5% intressi sinu saldo pealt.",
"anticheat": "VAC, EAC, Faceit AC ja BattlEye korraga. Röövimine sinu vastu ebaõnnestub. **2 kasutust**, siis pead ostma uue.",
"reguleeritav_laud": "Võid nii seista kui istuda - alati võidad. /work teenib 25% rohkem (stackib mängurihiirega).",
"jellyfin": "Self-hosted meediaserver - oled suurfirmadest sõltumatu. Röövimise edu tõenäosus 45% → 60%.",
"jellyfin": "Self-hosted meediaserver - oled suurfirmadest sõltumatu. Röövimise edu 45% → 60%. Grupiröövi õnnestumisele +5%.",
"mikrofon": "Parem helikvaliteet teeb sind usutavamaks. Teeni 30% rohkem eduka /crime puhul.",
"klaviatuur": "Klõbinad kostuvad üle kogu saali. /beg teenib 2x rohkem.",
"monitor": "240Hz ja 27 tolli. /work ooteaeg: 1h → 40min.",
"cat6": "Gigabitine internet = ideaalne piraatluseks. /crime edu tõenäosus tõuseb 60% → 75%.",
"monitor_360": "360Hz, 1ms. Mänguautomaadi jackpot 10x → 15x, kolmik 4x → 6x.",
"monitor_360": "360Hz, 1ms. Mänguautomaadi jackpot 10x → 15x, kolmik 4x → 6x. Hasartmängude ooteaeg 30s → 25s.",
"karikas": "Ainult legendidele. Streak ei nulli, kui sa mõne päeva vahele jätad.",
"gaming_tool": "Nii mugav, et isegi admin ei saa sind üles. /crime ebaõnnestumine ei saada sind vanglasse.",
"ussipurk": "Lakkumatu toiduga ussipurk - kalad ei saa vastu. Kalapyygi ooteaeg 2min → 90s.",
"kalavork": "Suurem võrk = suuremad kalad. Kõigi kalade haruldus tõuseb ühe astme võrra.",
"echolood": "Täpne ehholood näitab kala täpset asukohta. Haukamise aken 2s → 3s.",
}
# ---------------------------------------------------------------------------
@@ -742,19 +777,26 @@ MEMBER_FIELDS: list[tuple[str, str]] = [
]
ADMINVIEW_UI: dict[str, str] = {
"title": "🔍 {name} - majandusandmed",
"banned_yes": "🚫 JAH",
"banned_no": "✅ Ei",
"f_balance": "💰 Saldo",
"f_streak": "🔥 Streak",
"f_banned": "🚫 Keelatud",
"f_jailed": "🚔 Vangis kuni",
"f_items": "🎒 Esemed",
"f_uses": "🔢 Kasutused",
"f_last_daily": "⏱️ Viimati daily",
"f_last_work": "⏱️ Viimati work",
"f_last_crime": "⏱️ Viimati crime",
"footer": "ID: {uid}",
"title": "🔍 {name} - majandusandmed",
"banned_yes": "🚫 JAH",
"banned_no": "✅ Ei",
"f_balance": "💰 Saldo",
"f_exp": "📊 EXP / Tase",
"f_streak": "🔥 Streak",
"f_banned": "🚫 Keelatud",
"f_jailed": "🚔 Vangis kuni",
"f_prestige": "🔥 Prestiiž",
"f_items": "🎒 Esemed",
"f_uses": "🔢 Kasutused",
"f_fish": "🎣 Kala",
"f_last_daily": "⏱️ Viimati daily",
"f_last_work": "⏱️ Viimati work",
"f_last_crime": "⏱️ Viimati crime",
"f_last_fish": "⏱️ Viimati fish",
"footer": "ID: {uid}",
"exp_val": "{exp} EXP (Tase {level})",
"prestige_val": "Prestiiž {level} · {pp} PP",
"fish_val": "{caught} püütud · {inv} inventaris",
}
ECONOMYSETUP_UI: dict[str, str] = {
@@ -856,6 +898,14 @@ ADMIN: dict[str, str] = {
"unban_dm": "✅ Sinu TipiBOTi majandussüsteemis osalemise keeld on tühistatud. Saad taas käske kasutada.",
"reset_done": "🗑️ **{name}** majandusandmed on lähtestatud.\n📝 Põhjus: {reason}",
"reset_dm": "🗑️ Admin lähtestas sinu TipiBOTi majandusandmed (saldo, esemed, streak).\n📝 Põhjus: *{reason}*",
"exp_done": "{emoji} **{name}**: {verb} EXP → kokku **{exp} EXP** (Tase {level}).\n📝 Põhjus: {reason}",
"exp_dm": "{emoji} Admin muutis sinu EXP-i: **{verb} EXP**\n📝 Põhjus: *{reason}*\nUus EXP: **{exp}** (Tase {level})",
"item_given": "✅ **{item}** antud kasutajale **{name}** (tasuta).",
"item_removed":"🗑️ **{item}** eemaldatud kasutajalt **{name}**.",
"item_invalid":"❌ Tundmatu ese: `{item_id}`. Kontrolli `/shop` eseme ID-d.",
"item_not_owned": "❌ **{name}** ei oma eset `{item_id}`.",
"item_dm_given": "✅ Admin andis sulle eseme: **{item}**.",
"item_dm_removed":"🗑️ Admin eemaldas sult eseme: **{item}**.",
}
# ---------------------------------------------------------------------------
@@ -870,6 +920,34 @@ SEASON: dict[str, str] = {
"done": "✅ Hooaeg lõpetatud - EXP, mündid ja esemed lähtestatud.",
}
# ---------------------------------------------------------------------------
# /profile tabbed view
# ---------------------------------------------------------------------------
PROFILE_UI: dict[str, str] = {
"btn_profile": "💰 Profiil",
"btn_items": "🎒 Esemed",
"btn_stats": "📊 Statistika",
"btn_fish": "🎣 Kalakogu",
"main_title": "💰 {name}",
"items_title": "🎒 {name} - Esemed",
"stats_title": "📊 {name} - Statistika",
"fish_title": "🎣 {name} - Kalakogu",
"items_empty": "Sul pole ühtegi eset.",
"f_balance": "💰 Saldo",
"f_level": "📊 Tase",
"f_streak": "🔥 Streak",
"f_prestige": "⭐ Prestiiz",
"f_jail": "🚔 Vangis kuni",
"f_progress": "→ Tase {next}",
"progress_bar": "`{bar}` {done}/{needed} EXP",
"level_val": "Tase {level} - {role}",
"prestige_val":"⭐ P{level} · {pp} PP",
"footer_t1": "Tase 10 avab T2 poe · Tase 20 avab T3 poe",
"footer_t2": "T2 pood avatud · Tase 20 avab T3 poe",
"footer_t3": "T2 ja T3 pood avatud",
}
# ---------------------------------------------------------------------------
# /balance embed strings
# ---------------------------------------------------------------------------
@@ -895,10 +973,12 @@ COOLDOWNS_UI: dict[str, str] = {
"beg_line": "🙏 **/beg** {status}{note}",
"crime_line": "🦹 **/crime** {status}",
"rob_line": "🔫 **/rob** {status}",
"fish_line": "🎣 **/fish** {status}{note}",
"note_korvak": " *(kõrvaklapid: 18t)*",
"note_monitor": " *(monitor: 40min)*",
"note_hiirematt": " *(hiirematt: 3min)*",
"jailed": "\n🚔 **Vanglas** - vabaneb <t:{ts}:R>",
"note_ussipurk": " *(ussipurk: 90s)*",
"jailed": "\n<EFBFBD> **Vanglas** - vabaneb <t:{ts}:R>",
"jail_expired": "\n🔓 Vangla lõppes",
}
@@ -962,6 +1042,7 @@ ROB_UI: dict[str, str] = {
"win_desc": "Varastasid {stolen} kasutajalt **{name}**!\nSaldo: {balance}",
"anticheat_desc": "**{name}** kaitseb end Anticheati'ga - said trahvi {fine}.",
"anticheat_worn": "⚠️ Sinu **Anticheat** on kulunud! Osta uus `/buy` käsuga.",
"victim_dm": "💸 **{robber}** varastas sinult **{stolen}** münti!",
"fail_desc": "Jäid vahele! Trahv: {fine}.\nSaldo: {balance}",
}
@@ -987,9 +1068,8 @@ BUY_UI: dict[str, str] = {
# ---------------------------------------------------------------------------
JAILBREAK_UI: dict[str, str] = {
"btn_die1": "🎲 Viska 1. täring ({try_}/{max})",
"btn_die2": "🎲 Viska 2. täring",
"die1_desc": "1. täring: **{die}**\n\nNüüd viska 2. täring!",
"btn_roll": "🎲 Viska täringud ({try_}/{max})",
"rolling_desc": "<:TipiDICE:1485923107108556950> *Täringud lendavad...*",
"free_desc": "{d1} {d2}\n\n✅ Viskasid duubli - pääsesid vanglast!",
"miss_desc": "{d1} {d2}\n\n{left} katset jäänud. Proovi uuesti!",
"intro_desc": "Oled vangis kuni {ts}.\n\nViska täringuid ja proovi **duublit** saada - siis pääsed tasuta vabaks!\nSul on **{tries} katset**. Ebaõnnestumisel saad valida: maksa kautsjon **(2030% saldost, min 350 ⬡)** või jää vanglasse kuni aja lõpuni.",
@@ -1014,8 +1094,16 @@ LEADERBOARD_UI: dict[str, str] = {
"btn_coins": "🪙 Mündid",
"btn_exp": "📊 EXP",
"btn_find_me": "📍 Mina",
"exp_entry": "{prefix} {name} - {exp} EXP *(Tase {level})*",
"unknown_user": "Kasutaja {uid}",
"exp_entry": "{prefix} {name} - {exp} EXP *(Tase {level})*",
"unknown_user": "Kasutaja {uid}",
"btn_season": "🏆 Hooaeg",
"btn_prestige": "🔥 Prestiiž",
"btn_wagered": "🎲 Hasartmäng",
"btn_fish": "🎣 Kalapyyk",
"season_entry": "{prefix} {name} - {exp} EXP *(Prestiiž {prestige})*",
"prestige_entry": "{prefix} {name} - Prestiiž **{prestige}** · {pp} PP",
"wagered_entry": "{prefix} {name} - {wagered} panustatud",
"fish_entry": "{prefix} {name} - {caught} kala",
}
# ---------------------------------------------------------------------------
@@ -1106,3 +1194,131 @@ BJ_UI: dict[str, str] = {
"bust": " 💥",
"balance_line": " · Saldo: {balance}",
}
# ---------------------------------------------------------------------------
# Prestige system strings
# ---------------------------------------------------------------------------
PRESTIGE_SHOP_NAMES: dict[str, str] = {
"coin_mult": "Mündiboost",
"exp_mult": "EXP-boost",
"daily_plus": "Päevabonus+",
"work_plus": "Töötaja+",
}
PRESTIGE_SHOP_DESCRIPTIONS: dict[str, str] = {
"coin_mult": "Kõik TipiCOINide teenimisallikad (daily, töö, kerja, kala) teenivad +8% rohkem iga taseme kohta. Max 5 taset → +40%.",
"exp_mult": "Kõik EXP allikad teenivad +8% rohkem iga taseme kohta. Max 5 taset → +40%.",
"daily_plus": "Päevase boonuse alussumma tõuseb +20% iga taseme kohta. Max 3 taset → +60%.",
"work_plus": "/work teenib +20% rohkem iga taseme kohta. Max 3 taset → +60%.",
}
PRESTIGE_UI: dict[str, str] = {
"confirm_desc": (
"Oled tasemel **{level}** ({exp} EXP).\n\n"
"Prestiiži korral saad **{pp}** <:TipiFIRE:1483431381668335687> ja kõik lähtestub:\n"
"• Saldo, EXP, esemed, ooteajad\n\n"
"**Kalakogu jääb alles!**\n\nKas oled kindel?"
),
"btn_confirm": "🔥 Jah, prestiiži!",
"btn_cancel": "❌ Tühista",
"btn_tab_status": "⭐ Prestiiz",
"btn_tab_shop": "🛍️ Uuendused",
"success_desc": (
"Said **{pp}** <:TipiFIRE:1483431381668335687>\n"
"Prestiiži tase: **{level}**\n"
"Kogutud PP: **{total_pp}** <:TipiFIRE:1483431381668335687>\n\n"
"*Kõik lähtestati. Alusta otsast!*"
),
"too_low_desc": "Prestiiži jaoks vajad taset **{required}** (sul on tase {level}).",
"shop_desc": "Sul on **{pp}** <:TipiFIRE:1483431381668335687> · Vajuta nuppu uuenduse ostmiseks",
"shop_maxed": "✅ Max",
"shop_level_fmt": "Tase {cur}/{max}",
"shop_cost_fmt": "{cost} <:TipiFIRE:1483431381668335687>",
"buy_success_desc":"**{name}** uuendatud tasemele **{new_level}/{max_level}**!\nPP alles: **{pp}** <:TipiFIRE:1483431381668335687>",
"buy_no_pp": "<:TipICRY:1483431288852709387> Sul pole piisavalt PP. Sul on **{have}**, vajad **{need}** <:TipiFIRE:1483431381668335687>.",
"buy_maxed": "❌ See uuendus on juba maksimumtasemel.",
"buy_not_found": "❌ Sellist uuendust ei leitud. Vaata `/prestigeshop`.",
"rank_line": "<:TipiFIRE:1483431381668335687> Prestiiž **{level}** · {pp} PP",
"rank_season": "🏆 Hooaja EXP: **{exp}**",
"btn_buy_upgrade": "{emoji} {name} +1 ({cost} PP)",
"status_footer": "⭐ Prestiiž {level} · {pp} PP",
}
# ---------------------------------------------------------------------------
# Fishing system strings
# ---------------------------------------------------------------------------
FISH_NAMES: dict[str, str] = {
"sarj": "Särg",
"ahven": "Ahven",
"koger": "Koger",
"viidikas": "Viidikas",
"latikas": "Latikas",
"karpkala": "Karpkala",
"linask": "Linask",
"haug": "Haug",
"angerjas": "Angerjas",
"siig": "Siig",
"forell": "Forell",
"koha": "Koha",
"tougjas": "Tõugjas",
"lohe": "Lõhe",
"vimb": "Vimb",
}
FISH_RARITY_NAMES: dict[str, str] = {
"common": "Tavaline",
"uncommon": "Ebatavaline",
"rare": "Haruldane",
"epic": "Eepiline",
"legendary": "Legendaarne",
}
FISH_RARITY_EMOJI: dict[str, str] = {
"common": "🐟",
"uncommon": "🐠",
"rare": "🎣",
"epic": "",
"legendary": "🌟",
}
FISH_JUNK_LINES: list[str] = [
"Sa saad... **vana saabas**. Klassika.",
"Õnnitlused, leidsid **kasutatud autorehvi**. Keskkond tänab sind... mitte.",
"Taas üks **klaaspudel** rohkem jões.",
"**Vana poes käimise kott**! Hoidis aega hästi.",
"**Roostes konserv** - ilma sildita. Parem mitte teada, mis sees on.",
"**Ummistunud drenaažitoru**. Keegi oli hoolimatu.",
"**Tühi rahakott**. Kellegi päev läks halvemaks kui sinu oma.",
"**Vana CD-plaat** - Evanescence, 2003. Heas seisukorras.",
"Sa said **kivikese**. Ilus kivikene. Aga siiski kivikene.",
"**Kaotsi läinud droon**. GPS ei tööta, aku tühi.",
]
FISH_UI: dict[str, str] = {
"btn_wait": "🎣 Oota näkkamist...",
"btn_bite": "🐟 TÕMBA!",
"btn_sell": "💰 Müü",
"btn_keep": "🎒 Hoia",
"cast_desc": "Viskad õnge vette. Oota, kuni kala näkkab...\n\n-# Vajuta nuppu, kui kala näkkab!",
"bite_desc": "**KALA NÄKKAB!** Tõmba kiiresti! ⚡\n\n-# Sul on 2 sekundit!",
"escape_desc": "Liiga hilja - kala lipsas minema. Proovi järgmine kord kiiremini!",
"junk_desc": "{text}\n\n-# Saldo: {balance}",
"catch_desc": "**{name}** · {weight}g · +{exp} EXP\n-# Kas müüd kohe ({value}) või hoiad inventaris?",
"catch_sold": "**{name}** · {weight}g\n\n+{coins} · +{exp} EXP\nSaldo: {balance}",
"catch_kept": "**{name}** · {weight}g lisatud inventarisse. *(+{exp} EXP)*",
"new_fish": "\n✨ **Uus kala kalakogusse lisatud!**",
"too_early": "❌ Kala pole veel näkkanud! Oota...",
"book_caught": "Püütud kalaliike: **{caught}/{total}**",
"book_yes": "{emoji} **{name}** *({rarity})* · {count}×{inv}",
"book_inv": " *(inventaris: {n})*",
"book_no": "❓ **???** *({rarity})*",
"book_footer": "Lehekülg {page}/{total_pages} · {caught}/{total} liiki",
"book_empty": "Sa pole veel ühtegi kala püüdnud! Kasuta `/fish`.",
"inv_empty": "Sinu kalainventaar on tühi! Kasuta `/fish` kala püüdmiseks.",
"inv_header": "Sul on **{count}** kala inventaris *(kokku väärt {total_value})*",
"inv_entry": "{emoji} **{name}** · {weight}g · {value}",
"inv_sold_all": "Müüsid **{count}** kala kokku {coins} eest!\nSaldo: {balance}",
"inv_none": "Inventaaris pole midagi müüa.",
}