forked from sass/tipibot
A strategic counterpart to /rob: coins moved to the bank are safe from /rob and
/heist (which only touch liquid balance) but earn no Bot Farm interest and can't
be spent, gambled or given until withdrawn - the deliberate trade-off against
keeping coins liquid.
- New bank.py (do_deposit/do_withdraw), bank_balance schema field.
- /bank (view), /deposit, /withdraw commands ('all' supported), with db_error
handling; /balance shows the vault when non-zero.
- Coins leaderboard and /status money-supply now count net worth
(balance + bank_balance), so banking never hides you from the board or the
supply metric.
- Season reset wipes bank_balance too (no cross-season wealth hiding).
10 tests: deposit/withdraw math, guards, coin conservation, rob cannot touch the
vault, and net-worth accounting on the leaderboard + stats.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VbAVsrZuYesea99mPMmPT
240 lines
15 KiB
Python
240 lines
15 KiB
Python
"""Slash-command and /help metadata (descriptions, options, categories).
|
|
|
|
Auto-split from the original strings.py; edit strings here.
|
|
"""
|
|
|
|
from core.emoji import EMOJI as E
|
|
|
|
__all__ = [
|
|
'CMD',
|
|
'OPT',
|
|
'HELP_CATEGORIES',
|
|
'HELP_UI',
|
|
]
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Slash command descriptions (shown in Discord's autocomplete)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
CMD: dict[str, str] = {
|
|
"ping": "Vaata, kas bot on üleval",
|
|
"help": "Nimekiri kõikidest käskudest kategooriate kaupa",
|
|
"status": "Näita boti staatust ja ressursside kasutust",
|
|
"birthdays": "Näita kõigi liikmete sünnipäevi kuu järgi",
|
|
"check": "Laadi andmed, täida ID'd ja sünkroniseeri kõik liikmed",
|
|
"sync": "Sünkroniseeri käsklused Discordi serveriga",
|
|
"member": "Näita liikme andmeid tabelist",
|
|
"restart": "Tee taaskäivitus botile",
|
|
"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)",
|
|
"beg": "Kerja TipiCOINe (5min ooteaeg)",
|
|
"crime": "Proovi oma õnne kriminaalse tegevusega (2h ooteaeg)",
|
|
"rob": "Proovi kelleltki TipiCOINe varastada",
|
|
"heist": "Alusta grupirööv pangahoidlasse (min 2 mängijat, max 8, 4h serveri ooteaeg)",
|
|
"roulette": "Panusta TipiCOINe punasele, mustale või rohelisele (1/37 võimalus, 14x payout)",
|
|
"give": "Anna TipiCOINe teisele mängijale",
|
|
"leaderboard": "TipiBOTi edetabel - kes on kõige rikkam?",
|
|
"shop": "Sirvi TipiBOTi poodi",
|
|
"buy": "Osta ese TipiBOTi poodist",
|
|
"rps": "Kivi-paber-käärid mõne teise mängija vastu",
|
|
"slots": "Proovi oma õnne TipiBOTi mänguautomaadiga",
|
|
"request": "Kerja TipiCOINe teistelt mängijatelt - nagu crowdfunding, aga halvem",
|
|
"reminders": "Halda DM meeldetuletusi - kõik on vaikimisi sees, lülita need siin välja",
|
|
"cooldowns": "Vaata kõikide käskude ooteaegu",
|
|
"jailed": "Vaata, kes on praegu vanglas",
|
|
"rank": "Vaata oma EXP, taset ja edetabeli positsiooni",
|
|
"stats": "Vaata oma mängustatistikat",
|
|
"jailbreak": "Proovi vanglast põgeneda kasutades täringuid",
|
|
"adminseason": "[Admin] Lõpeta võistlus, teavita võitjaid ja lähtesta EXP",
|
|
"admincoins": "[Admin] Anna või võta TipiCOINe kasutajale/kasutajalt",
|
|
"adminjail": "[Admin] Saada kasutaja vangi",
|
|
"adminunjail": "[Admin] Vabasta kasutaja vangist",
|
|
"adminban": "[Admin] Keela kasutajal majandussüsteemis osaleda",
|
|
"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",
|
|
"patchnotes": "Vaata TipiBOTi viimaseid muudatusi ja uuendusi",
|
|
"quests": "Vaata oma päeva- ja nädalaülesandeid ning nõua auhinnad",
|
|
"consumables": "Sirvi ja osta turgutusi (korduvostetavad boostid)",
|
|
"vanity": "Staatusepood - osta ja kanna kosmeetilisi tiitleid",
|
|
"lootbox": "Ava õnnekast - juhuslik auhind müntide või boonuse näol",
|
|
"bank": "Vaata oma panka - röövikindel hoius",
|
|
"deposit": "Pane münte panka (röövikindel, aga ei teeni intressi)",
|
|
"withdraw": "Võta münte pangast rahakotti",
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Option descriptions (shown next to each parameter in Discord)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
OPT: dict[str, str] = {
|
|
"admin_kasutaja": "Kasutaja",
|
|
"admin_põhjus": "Põhjus (saadetakse kasutajale DM kaudu)",
|
|
"admincoins_kogus": "Positiivne = anna, negatiivne = võta",
|
|
"adminjail_minutid": "Vangistamise kestus minutites",
|
|
"balance_kasutaja": "Mängija, kelle saldot vaadata (vaikimisi sina)",
|
|
"roulette_panus": "Panus TipiCOINides ('all' = kogu saldo)",
|
|
"roulette_värv": "Punane, must või roheline",
|
|
"give_kasutaja": "Kellele annad?",
|
|
"give_summa": "Kui palju annad? ('all' = kogu saldo)",
|
|
"buy_ese": "Eseme nimi (vaata /shop)",
|
|
"deposit_summa": "Kui palju panna panka? ('all' = kogu vaba raha)",
|
|
"withdraw_summa": "Kui palju pangast välja võtta? ('all' = kogu pangas)",
|
|
"consumable_ese": "Turgutus, mida osta (tühjaks jättes näeb menüüd)",
|
|
"vanity_ese": "Tiitel, mida osta või kanda (tühjaks jättes näeb poodi)",
|
|
"rps_panus": "Valikuline TipiCOINide panus ('all' = kogu saldo)",
|
|
"rps_vastane": "Väljakutse teisele mängijale (PvP)",
|
|
"slots_panus": "Panus TipiCOINides ('all' = kogu saldo)",
|
|
"request_summa": "Kui palju TipiCOINe vajad?",
|
|
"request_põhjus": "Miks sa vajad TipiCOINe?",
|
|
"request_sihtmärk": "Valikuline: kellelt täpselt palud (teised ei saa toetada)",
|
|
"send_kanal": "Kanal, kuhu sõnum saata",
|
|
"send_sõnum": "Sõnum, mida saata",
|
|
"allowchannel_kanal": "Kanal, kus bot võib vastata käsklustele",
|
|
"denychannel_kanal": "Kanal, kus bot ei või vastata käsklustele",
|
|
"rob_sihtmärk": "Kellelt röövid?",
|
|
"member_user": "Mängija, kelle infot tahad vaadata",
|
|
"rank_kasutaja": "Mängija, kelle taset tahad vaadata (vaikimisi sina)",
|
|
"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'",
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# /help categories
|
|
# ---------------------------------------------------------------------------
|
|
|
|
HELP_CATEGORIES: dict[str, dict] = {
|
|
"üldine": {
|
|
"label": "🤖 Üldine",
|
|
"description": "Üldised käsklused",
|
|
"color": 0x57F287,
|
|
"fields": [
|
|
("/ping", "Vaata, kas bot on üleval"),
|
|
("/status", "Näita boti staatust ja ressursside kasutust"),
|
|
("/help", "Nimekiri kõikidest käskudest kategooriate kaupa"),
|
|
("/birthdays", "Näita kõigi liikmete sünnipäevi kuu järgi"),
|
|
],
|
|
},
|
|
"tipibot": {
|
|
"label": "🪙 TipiBOT",
|
|
"description": "TipiCOIN majandus",
|
|
"color": 0xF4C430,
|
|
"fields": [
|
|
("/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)"),
|
|
("/beg", "Kerja TipiCOINe (5min ooteaeg)"),
|
|
("/crime", "Proovi oma õnne kriminaalse tegevusega. 60% edu, 40% trahv + 30min vanglas. 2h ooteaeg."),
|
|
("/rob @user", "Proovi kelleltki TipiCOINe varastada. 45% edu. Ebaõnnestumisel saad trahvi."),
|
|
("/heist", "Alusta grupiröövi pangahoidlasse. Min 2 mängijat, max 8. 5 min ühinemisaeg. Õnnestumisel jagatakse saak võrdselt - ebaõnnestumisel 1h 30min vangis + trahv. 4h serveri ooteaeg (ei ole isiklik)."),
|
|
("/jailbreak", "Proovi vanglas olles täringuid visata, et duublit saada (3 katset). Duubli korral saad vabaks. Ebaõnnestumisel saad valida: maksa kautsjon (20-30% saldost, min 350 ⬡) või jää vanglasse kuni aja lõpuni."),
|
|
("/give @user <amount>", "Anna TipiCOINe teisele mängijale"),
|
|
("/bank", "Vaata oma panka. Panka pandud mündid on röövikindlad (/rob ja /heist ei puuduta)."),
|
|
("/deposit <amount>", "Pane münte panka (röövikindel hoius, ei teeni intressi)."),
|
|
("/withdraw <amount>", "Võta münte pangast rahakotti."),
|
|
("/quests", "Vaata oma päeva- ja nädalaülesandeid ning nõua auhinnad (uueneb iga päev/nädal)."),
|
|
("/leaderboard", "TipiBOTi edetabel - kes on kõige rikkam?"),
|
|
("/shop", "Sirvi TipiBOTi poodi"),
|
|
("/buy <item>", "Osta ese TipiBOTi poodist"),
|
|
("/consumables", "Osta korduvostetavaid turgutusi (ajutised boostid)."),
|
|
("/lootbox", "Ava õnnekast (1000 ⬡) - juhuslik auhind: mündid või ajutine boonus."),
|
|
("/vanity", "Staatusepood - osta ja kanna kosmeetilisi tiitleid (näha /profile-l)."),
|
|
("/request <amount> <reason> [target]", "Saada crowdfundingu taotlus. Keegi saab 'Toeta' nuppu vajutades raha kanda (taotlus kehtib 5 minutit)."),
|
|
("/reminders", "DM meeldetuletused on vaikimisi sees. Kasuta seda käsku, et lülitada sisse/välja, milliseid käsklusi meelde tuletada."),
|
|
],
|
|
},
|
|
"shop": {
|
|
"label": "🛍️ Pood",
|
|
"description": "TipiBOTi poe esemed ja nende efektid",
|
|
"color": 0xF4C430,
|
|
"fields": [
|
|
(f"{E['TipiHIIR']} Mängurihiir - 500 ⬡", "Teeni töötades 50% rohkem TipiCOINe."),
|
|
(f"{E['TipiMATT']} XL hiirematt - 600 ⬡", "Kerjamise ooteaeg 5min → 3min."),
|
|
(f"{E['TipiKLAPID']} Kõrvaklapid - 1200 ⬡", "Päevase boonuse ooteaeg 20h → 18h."),
|
|
(f"{E['TipiPILET']} LAN pilet (2025) - 1200 ⬡", "Päevane boonus on duubeldatud."),
|
|
(f"{E['TipiVAC']} Anticheat - 750 ⬡", "Röövimine sinu vastu ebaõnnestub. Pärast 2 kasutust pead ostma uue."),
|
|
(f"{E['TipiBULL']} Red Bull - 800 ⬡", "30% tõenäosus, et teenid töötades 3x rohkem."),
|
|
(f"{E['TipiLAP']} Botikoobas - 1500 ⬡", "RTX 5090 jooksutab botte 24/7. Päevane boonus genereerib 5% intressi sinu saldo pealt."),
|
|
(f"{E['TipiLAUD']} Reguleeritav laud - 3500 ⬡ *(T2)*", "/work teenib 25% rohkem (stackib mängurihiirega)."),
|
|
(f"{E['TipiSERVER']} Jellyfin server - 4000 ⬡ *(T2)*", "Röövimise edu tõenäosus 45% → 60%."),
|
|
(f"{E['TipiMIC']} Mikrofon - 2800 ⬡ *(T2)*", "Teeni 30% rohkem eduka /crime puhul."),
|
|
(f"{E['TipiKLAVA']} Mehhaaniline klaviatuur - 1800 ⬡ *(T2)*", "/beg teenib 2x rohkem."),
|
|
(f"{E['TipiMONITOR']} Ultralai monitor - 2500 ⬡ *(T2)*", "/work ooteaeg: 1h → 40min."),
|
|
(f"{E['TipiCAT']} CAT6 netikaabel - 3500 ⬡ *(T2)*", "/crime edu tõenäosus tõuseb 60% → 75%."),
|
|
(f"{E['TipiMONITOR2']} 360hz monitor - 7500 ⬡ *(T3)*", "Mänguautomaadi jackpot 10x → 15x, kolmik 4x → 6x."),
|
|
(f"{E['TipiKARIKAS']} TipiLANi trofee - 6000 ⬡ *(T3)*", "Streak ei nulli, kui sa mõne päeva vahele jätad."),
|
|
(f"{E['TipiTOOL']} Mänguritool - 9000 ⬡ *(T3)*", "/crime ebaõnnestumine ei saada sind vanglasse."),
|
|
],
|
|
},
|
|
"games": {
|
|
"label": "🎮 Mängud",
|
|
"description": "Lõbusad mängud",
|
|
"color": 0x5865F2,
|
|
"fields": [
|
|
("/roulette <bet> <colour>", "Panusta TipiCOINe punasele, mustale või rohelisele (1/37 võimalus, 14x payout)"),
|
|
("/rps [bet] [opponent]", "Kivi-paber-käärid mõne teise mängija vastu"),
|
|
("/slots <bet>", "Proovi oma õnne TipiBOTi mänguautomaadiga"),
|
|
("/blackjack <bet>", "Mängi blackjacki TipiBOTi vastu. Blackjack maksab 3:2. Kakskordistamine (double down) on võimalik vaid esimese käigu ajal."),
|
|
],
|
|
},
|
|
"admin": {
|
|
"label": "🔧 Admin",
|
|
"description": "Admin käsklused (peidetud tavaliste kasutajate eest)",
|
|
"color": 0xED4245,
|
|
"fields": [
|
|
("/check", "Laadi andmed, täida ID'd ja sünkroniseeri kõik liikmed"),
|
|
("/member @user", "Näita liikme andmeid tabelist"),
|
|
("/sync", "Sünkroniseeri käsklused Discordi serveriga"),
|
|
("/restart", "Tee taaskäivitus botile"),
|
|
("/send #channel message", "Saada sõnum valitud kanalisse"),
|
|
("/admincoins @user <amount> <reason>", "Anna või võta TipiCOINe kasutajale/kasutajalt"),
|
|
("/adminjail @user <minutes> <reason>", "Saada kasutaja vangi"),
|
|
("/adminunjail @user", "Vabasta kasutaja vangist"),
|
|
("/adminban @user <reason>", "Keela kasutajal majandussüsteemis osaleda"),
|
|
("/adminunban @user", "Eemalda majandussüsteemi keeld kasutajalt"),
|
|
("/adminreset @user <reason>", "Lähtesta kasutaja majandusandmed"),
|
|
("/adminview @user", "Vaata kasutaja majandusandmeid"),
|
|
("/allowchannel #channel", "Lisa kanal, kus bot võib vastata käsklustele"),
|
|
("/denychannel #channel", "Eemalda kanal lubatud kanalite nimekirjast"),
|
|
("/channels", "Näita lubatud kanalite nimekirja"),
|
|
("/adminseason [top_n]", "Lõpeta võistlus, teavita võitjaid ja lähtesta EXP"),
|
|
("/economysetup", "Loo ja sea korda majandussüsteemi rollid (ECONOMY + taseme rollid) boti rolli alla"),
|
|
],
|
|
},
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# /help UI
|
|
# ---------------------------------------------------------------------------
|
|
|
|
HELP_UI: dict[str, str] = {
|
|
"footer": "TipiBOT • Vali kategooria allmenüüst",
|
|
"select_placeholder": "Vali kategooria...",
|
|
}
|