Files
tipibot/strings.py
2026-03-20 22:02:29 +02:00

1065 lines
57 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""All user-facing text for TipiLAN Bot.
Edit this file to change any message, description, or flavour text
without touching any logic code.
"""
# ---------------------------------------------------------------------------
# Flavour text
# ---------------------------------------------------------------------------
WORK_JOBS: list[tuple[str, float]] = [
("paigaldasid aulas netikaableid", 1.0),
("paigaldasid aulas voolukaableid", 1.0),
("tõid poest korraldajatele pitsat", 1.0),
("konfigureerisid uue switchi", 1.0),
("vedasid laudu aulasse", 1.0),
("vedasid toole aulasse", 1.0),
("paigaldasid aulasse vahekardinaid", 1.0),
("aitasid üles seada turniiri lava", 1.0),
("töötasid baaris", 1.0),
("testisid helisüsteemi \"Erootikapoodi\" blastides", 1.0),
("juhendasid külastajaid infolauas", 1.0),
("seadistasid LAN serverit", 1.0),
("paigaldasid monitore", 1.0),
("ühendasid aulas kilpe", 1.0),
("aitasid LANil osalejat", 1.0),
("müüsid energiajooke", 1.0),
("tegid netikaableid", 1.0),
("lahendasid IP-konflikti", 1.0),
("parandasid kellegi arvutit", 1.0),
("tegid korda striimi heli (mitte nagu PGL)", 1.2),
("kirjutasid koodi miniturniiri jaoks", 1.2),
("võitsid turniiri", 1.5),
]
BEG_LINES: list[str] = [
"istusid kurva näoga oma monitori taga",
"palusid abi kellegi DMis",
"postitasid #abi kanalisse",
"vaatasid kadedusega teiste asju",
"kirjutasid /beg kolmandat korda järjest",
"küsisid oma tiimiliikmelt laenu",
"võtsid kiirlaenu",
"müüsid 3 sendi eest oma CSi skinne",
"korjasid kampuselt taarat",
"tegid TikToki live'i",
"refreshisid pangaäppi lootuses, et raha tekib",
"kirjutasid \"pls donate\" chatti",
"vaatasid oma tühja rahakotti",
"püüdsid kedagi guilt-trippida",
"lubasid exposure'it raha eest",
"mängisid kurba muusikat taustaks",
"teesklesid, et see on sotsiaalne eksperiment",
"kirjutasid emotsionaalse loo oma olukorrast",
"pakkusid vastu future equity't",
"tegite sõbraga koos kerjamisplaani",
"otsisid diivani vahelt sente",
"lubasid boostida kellegi ranki viieka eest",
"küsisid chatist, kas keegi teab kust tasuta V-Buckse saab",
"avastasid, et su krüptoportfell on sügavas miinuses",
]
BEG_JAIL_LINES: list[str] = [
"karjusid läbi trellide, et keegi münte läbi lükkaks",
"kirjutasid kongi seina peale oma PayPali aadressi",
"lubasid, et maksad järgmine kord vangi minnes tagasi",
"veensid valvurit, et oled tegelikult hea inimene",
"saatsid vanglast käsitsi kirjutatud kirja oma meeskonnale",
"pakkusid vahile tulevaste vihjete eest raha",
"koputasid morset vastu naaberkongi seina",
"üritasid vangla WiFit häkkida",
"lubasid teha tasuta IT-tööd vabanemise eest",
"üritasid lusikaga tunnelit kaevata",
"kirjutasid bug reporti vangla süsteemile",
"proovisid trellidest läbi pugeda, aga jäid kinni",
"pakkusid vangivalvurile oma Steami kontot vabanemise eest",
]
CRIME_WIN: list[str] = [
"häkkisid turniiri tulemuste tabelit",
"varastasid oma vastase hiire",
"varastasid oma vastase klaviatuuri",
"varastasid oma vastase kõrvaklapid",
"varastasid oma vastase monitori",
"varastasid oma vastase mikrofoni",
"müüsid võltsitud LANi pileteid",
"laenatasid kellegi GPUd ja ei tagastanud seda",
"laenatasid Filmiklubilt AUX-kaablit ja ei tagastanud seda",
"käivitasid DDoS rünnaku serverile",
"tegid oma shitcoin'idega pump and dump'i",
"kasutasid aimbotti ja keegi ei märganud",
"exploitisid mängu bugi enda kasuks",
"phishisid kellegi Steami konto",
"varastasid prize pooli raha",
"ühendasid enda krüptokaevandaja serverisse",
]
CRIME_LOSE: list[str] = [
"jäid turniiri adminile vahele",
"tõmbasid oma arvuti kaabli pistikust välja",
"kukutasid lahtise Red Bulli omale sülle",
"unustasid VPNi sisse lülitada",
"lagisid kriitilisel momendil",
"said banni otseülekande ajal",
"unustasid logid kustutada",
"sinu skript crashis valel hetkel",
"said reportitud mitme mängija poolt",
"sinu krüptokaevandaja süttis põlema",
"flashisid tervet oma tiimi",
"avastasid, et Windows otsustas keset mängu uuendama hakata",
]
# ---------------------------------------------------------------------------
# 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",
"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: boti või 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",
"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",
}
# ---------------------------------------------------------------------------
# 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)",
"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)",
}
# ---------------------------------------------------------------------------
# /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": [
("/balance [@user]", "Vaata enda (või kellegi teise) TipiCOINi saldot"),
("/rank [@user]", "Vaata oma EXP, taset, progressi ja edetabeli positsiooni. T2 pood avaneb tasemel 10, T3 tasemel 20."),
("/cooldowns", "Vaata kõikide käskude ooteaegu. Näitab ka vangla ooteaega."),
("/daily", "Võta enda päevane TipiCOINi boonus. 20h ooteaeg. Streak boonus: 3d=+50%, 7d=+100%, 14d=+200%."),
("/work", "Tööta ja teeni TipiCOINe (1h ooteaeg)"),
("/beg", "Kerja mõnda TipiCOINi (5min ooteaeg)"),
("/crime", "Proovi oma õnne kriminaalsete tegevustega. 60% edu, 40% trahv + 30min vanglas. 2h ooteaeg."),
("/rob @user", "Proovi kelleltki TipiCOINe varastada. 45% edu. Ebaõnnestumisel saad trahvi."),
("/heist", "Alusta grupirööv 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", "Kui satud vanglasse, proovi täringuid visata, et duublit saada (3 katset). Duublit saades 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"),
("/leaderboard", "TipiBOTi edetabel - kes on kõige rikkam?"),
("/shop", "Sirvi TipiBOTi poodi"),
("/buy <item>", "Osta ese TipiBOTi poodist"),
("/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": [
("<:TipiHIIR:1483004306012504128> Mängurihiir - 500 ⬡", "Teeni töötades 50% rohkem TipiCOINe."),
("<:TipiMATT:1483387697132208128> XL hiirematt - 600 ⬡", "Kerjamise ooteaeg 5min → 3min."),
("<:TipiKLAPID:1483387694083084349> Kõrvaklapid - 1200 ⬡", "Päevase boonuse ooteaeg 20h → 18h."),
("<:TipiPILET:1483004308353060904> LAN pilet (2025) - 1200 ⬡", "Päevane boonus on duubeldatud."),
("<:TipiVAC:1483004309510819860> Anticheat - 750 ⬡", "Röövimine sinu vastu ebaõnnestub. 2 kasutust, siis pead ostma uue."),
("<:TipiBULL:1483004310924300409> Red Bull - 800 ⬡", "30% tõenäosus, et teenid töötades 3x rohkem."),
("<:TipiLAP:1483004307161874566> Botikoobas - 1500 ⬡", "RTX 4090 jooksutab botte 24/7. Päevane boonus genereerib 5% intressi sinu saldo pealt."),
("<:TipiLAUD:1483387695576125440> Reguleeritav laud - 3500 ⬡ *(T2)*", "/work teenib 25% rohkem (stackib mängurihiirega)."),
("<:TipiSERVER:1483387701032910969> Jellyfin server - 4000 ⬡ *(T2)*", "Röövimise edu tõenäosus 45% → 60%."),
("<:TipiMIC:1483387698499551313> Mikrofon - 2800 ⬡ *(T2)*", "Teeni 30% rohkem eduka /crime puhul."),
("<:TipiKLAVA:1483014339228078140> Mehhaaniline klaviatuur - 1800 ⬡ *(T2)*", "/beg teenib 2x rohkem."),
("<:TipiMONITOR:1483014340327243908> Ultralai monitor - 2500 ⬡ *(T2)*", "/work ooteaeg: 1h → 40min."),
("<:TipiCAT:1483014337663602718> CAT6 netikaabel - 3500 ⬡ *(T2)*", "/crime edu tõenäosus tõuseb 60% → 75%."),
("<:TipiMONITOR2:1483387699514839162> 360hz monitor - 7500 ⬡ *(T3)*", "Mänguautomaadi jackpot 10x → 15x, kolmik 4x → 6x."),
("<:TipiKARIKAS:1483014841148112977> TipiLANi trofee - 6000 ⬡ *(T3)*", "Streak ei nulli, kui sa mõne päeva vahele jätad."),
("<:TipiTOOL:1483014341648187613> Mänguritool - 9000 ⬡ *(T3)*", "/crime ebaõnnestumine ei saada sind vanglasse."),
],
},
"games": {
"label": "🎮 Mängud",
"description": "Lõbusad mängud ja võistlused",
"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: boti või 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. Kakskordistad (double down) vaid esimese käigu korral."),
],
},
"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 kasutajalt"),
("/adminjail @user <minutes> <reason>", "Saada kasutaja vangi"),
("/adminunjail @user", "Vabasta kasutaja vangist"),
("/adminban @user <reason>", "Keela kasutaja osalemine majandussüsteemis"),
("/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"),
],
},
}
# ---------------------------------------------------------------------------
# Repeated system messages
# ---------------------------------------------------------------------------
MSG_BANNED = "🚫 Sind on TipiBOTi majandusest keelustatud."
MSG_SPAM_JAIL = "⚠️ Liiga kiire! Automaatne kasutamine on keelatud. Oled **30 minutit vangis**. Kasuta `/jailbreak`, et varem välja pääseda."
MSG_PONG = "🏓 Pong!"
MSG_RESTART_DONE = "✅ Bot on taaskäivitatud!"
MSG_RESTARTING = "🔄 Taaskäivitan..."
MSG_SHUTTING_DOWN = "⛔ Lülitan boti välja..."
MSG_PAUSED = "⏸️ Bot on hooldusrežiimis - kõik käsklused on peatatud."
MSG_UNPAUSED = "▶️ Hooldusrežiim lõpetatud - käsklused on taas saadaval."
MSG_MAINTENANCE = "🔧 Bot on hetkel hoolduses. Proovi mõne hetke pärast uuesti."
MSG_SYNC_DONE = "✅ Käsud sünkroniseeritud!"
MSG_REMINDER = "⏰ **/{cmd}** on taas kasutamiseks valmis!\n-# Meeldetuletuste haldamiseks kasuta serveris `/reminders`."
MSG_LEVELUP = "⬆️ **{name}** jõudis **{level}. tasemele**!{extra}"
MSG_LEVELUP_ROLE = " 🎊 Uus tiitel: **{role}**!"
# ---------------------------------------------------------------------------
# /reminders dropdown options (cmd_key, label, description)
# ---------------------------------------------------------------------------
REMINDER_OPTS: list[tuple[str, str, str]] = [
("daily", "📅 /daily", "Päevane boonus (20t ooteaeg)"),
("work", "💼 /work", "Töö (1t ooteaeg, 40min monitoriga)"),
("beg", "🙏 /beg", "Kerjamine (5min ooteaeg)"),
("crime", "🦹 /crime", "Kuritegu (2t ooteaeg)"),
("rob", "🔫 /rob", "Rööv (2t ooteaeg)"),
]
# ---------------------------------------------------------------------------
# /slots outcome strings (title, colour)
# ---------------------------------------------------------------------------
SLOTS_TIERS: dict[str, tuple[str, int]] = {
"jackpot": ("<:TipiFIRE:1483431381668335687> JACKPOT!!!", 0xF4C430),
"triple": ("🎰 Kolmik!", 0x57F287),
"pair": ("🎰 Paar", 0x99AAB5),
"miss": ("<:TipICRY:1483431288852709387> Ei õnnestunud", 0xED4245),
}
# ---------------------------------------------------------------------------
# /roulette outcome strings
# ---------------------------------------------------------------------------
ROULETTE: dict = {
"emoji": {"punane": "🔴", "must": "", "roheline": "🟢"},
"genitive": {"punane": "punase", "must": "musta", "roheline": "rohelise"},
"win_title": "{emoji} Võitsid!",
"lose_title": "{emoji} Kaotasid!",
"win_desc": "Ratas peatus **{genitive}** peal!{mult}\n+{change}\nSaldo: {balance}",
"lose_desc": "Ratas peatus **{genitive}** peal.\n-{change}\nSaldo: {balance}",
"spin_title": "🎰 Ratas keerleb...",
"spin_stop": "🎰 Ratas peatub...",
"spin_strip": "{s0} {s1} {s2} {s3} {s4}",
}
# ---------------------------------------------------------------------------
# /heist narrative story lines
# Placeholders: {leader}, {member}, {names}, {vehicle}
# ---------------------------------------------------------------------------
HEIST_STORY: dict = {
"vehicles": [
"Škoda",
"BMW",
"Lada",
"Mazda",
],
"arrival": [
"{leader} keerab nurga taga {vehicle} mootori kinni. Maskid ette. Keegi ei räägi.",
"{vehicle} peatub ühe kvartali kaugusel sihtmärgist. {leader}: *\"Pank on seal. Hoiame plaanist kinni.\"*",
"Meeskond astub {vehicle}st välja. {leader} kontrollib kõrvaklappi. *\"Kaks valvurit, üks pimeala. Liigume nüüd.\"*",
"{leader} jälgib {vehicle}st sissepääsu. *\"Vahetus 40 sekundi pärast. See on meie aken.\"*",
"Kell 3 öösel. Tänav on tühi. {vehicle} töötab väljas tühikäigul. {leader} tõmbab maski ette.",
],
"entry_sneaky": [
"{member} tõmbab kloonitud kaarti külgukse juures. Lukk klõpsab hääleta lahti.",
"Meeskond libiseb sisse laadimisestakaadi kaudu, riietatud öiste koristajatena.",
"{leader} on kaks nädalat valvurite graafikut pähe õppinud. Nad kõnnivad sisse vahetuse ajal.",
"Võltsitud alltöövõtja kaart laseb neil vastuvõtust läbi ilma lisaküsimuseta.",
"{member} lülitab eeskaamera sülearvutist välja. {leader} kõnnib sisse, nagu see oleks tema oma maja.",
],
"entry_loud": [
"{leader} lööb esiuksed lahti. *\"KÕIK PÕRANDALE - KOHE!\"*",
"Esmalt suitsugranaadid. Selleks ajaks, kui suits vaibub, on meeskond juba sees.",
"{leader} tulistab ühe lasu lakke. Haudvaikus. *\"Oleme siin seifi pärast. Tehke koostööd ja minge koju.\"*",
"*\"Keegi ei liigu, keegi ei saa viga.\"* {leader} omab ruumi täielikku tähelepanu.",
"{member} lõikab elektri ära. Pimeduses juhib {leader} meeskonna mälu järgi läbi.",
],
"inside": [
"{names} liiguvad kiiresti läbi fuajee, sidudes turvamehi postide külge kinni.",
"{member} katab väljapääsud. {leader} suundub otse seifi poole.",
"Üks kassapidajatest käivitab vaikse häire, kuid {member} märkab märgutulukest ja lülitab selle välja.",
"{leader} hoiab töötajad rahulikuna samal ajal, kui teised suunduvad alumisele korrusele.",
"Turvakaamerad on tsüklil. {names} on korrusel üksi.",
],
"vault": [
"4nda taseme ajalukuga seif. {member} tõmbab puuri välja. *\"Anna mulle kolm minutit.\"*",
"{leader} vahib seifi ust. *\"Dünamiit.\"* Keegi ei vaidle.",
"{member} ühendub seifi juhtpaneeliga. Vana tarkvara. Ülevõtmine võtab 90 sekundit.",
"Seifil on käsikombinatsiooni lukk. Hea, et {leader} veetis kuu aega juhatajaga, teenides tema usaldust.",
"{member} paigutab lõhkeained. Meeskond astub tagasi. Üks kontrollitud plahvatus.",
"{leader} teeb magnetlukule tühistuse. Nagu õpikust võetud. Mehhanism annab järgi.",
],
"vault_open": [
"Uks avaneb. Kuhi-kuhja järel raha, põrandast laeni. Täpselt nagu plaanitud.",
"*\"...jackpot.\"* {leader} vahtib seifi sisse. Meeskond seisab hetkeks vaikuses.",
"{member} hakkab kotte laadima. {leader} loeb juba väljapääse.",
"Puhas. Kiire. {names} on seifis ja täidavad kotte enne, kui tolm settib.",
"Seif on lahti. {leader} võtab hinge. *\"Okei. Kottidesse ja liikuma.\"*",
],
"police_inbound": [
"Raadio krõbiseb. *\"Kõik üksused, relvastatud rööv Keskpangas-\"*",
"Väljas ulgub esimene sireen eemalt. {leader}: *\"Meil on umbes neli minutit. Liikuma.\"*",
"Punased ja sinised tuled vilguvad ülemistest akendest läbi. Varualarmsignaal käivitati.",
"Politsei helikopter skaneerib piirkonda prožektoriga. Aken sulgub kiiresti.",
"{member} kontrollib politsei skannerit. *\"Nad teavad. Kolm üksust, kaks minutit eemal.\"*",
],
"getaway_success": [
"Adrenalin. {names} jooksevad {vehicle} juurde. Kõik sees. {leader} keerab mootori käima.",
"{member} haarab roolist. {leader} on kõrval. *\"Lähme.\"* Rahulikult.",
"{leader} libistab {vehicle} tagauksest välja. Sireen kaugel taga. Nad on kiiremad.",
"Rohelised tuled. {vehicle} sõidab vaikselt mööda parklas ootavast patrullautost. Keegi ei märka.",
"{member} näitab teed. {leader} sõidab vaikselt läbi tagakvartali. Käed lõdvad.",
],
"getaway_fail": [
"{names} jooksevad {vehicle} juurde. Sireenid igalt poolt.",
"{member} haarab roolist. {leader} on kõrval. *\"Mine! MINE!\"*",
"{vehicle} kihutab tänavale, kuid teevalgustus lülitub sisse. Kõik on nähtaval.",
"Kolm patrullauto tuleb taha. {member} vaatab üle õla. *\"Nad on meile järel.\"*",
"Raadio krõbiseb. *\"Sihtmärk kinnitatud. Blokeeri Liivalaia tänav.\"*",
],
"escape_success": [
"{names} murravad läbi perimeetri enne väravate sulgemist. Puhas põgenemine.",
"{leader} oli planeerinud kolm väljumisteed. Läks vaja ühte. {vehicle} kaob linna.",
"Kahe kvartali kaugusel asuv peibutushäire tõmbab üksused eemale. {names} on kadunud enne, kui keegi seifi kontrollib.",
"Naelribad? Juba eemaldatud. Teeblokk? Vale tänav. {leader} mõtles kõigele.",
"{vehicle} sõidab maanteele nagu poleks midagi juhtunud. {leader} hingab esimest korda tunnis välja.",
"*\"Oleme vabad.\"* {member} piilub kardinate tagant välja. Tühi tänav. Nad tegid ära.",
],
"escape_fail": [
"Patrullauto lõikab {vehicle} sillal ära. Mõlemalt poolt surutud. Ongi läbi.",
"{member} kukutab koti. Kolm sekundit kõhklust - ja uksed on ümber piiratud.",
"Helikopter jälgib neid kuni varjupaigani. Kõik väljapääsud on kaetud.",
"{leader} arvutab võimalusi. *\"Väljapääsu pole.\"* Käed lähevad üles.",
"Naelribad lõhuvad {vehicle} rehvid. Meeskond libiseb liikluse keskel seisma.",
"{vehicle} põrkub vastu teetõket. Mootor sureb. Igast suunast tuled.",
],
}
# ---------------------------------------------------------------------------
# /heist UI strings
# ---------------------------------------------------------------------------
HEIST_UI: dict[str, str] = {
"names_duo": "**{a}** ja **{b}**",
"names_sep": " & ",
"names_crew": "**{leader}** ja meeskond",
"btn_join": "Ühine röövimisega 🔫",
"btn_start": "Alusta kohe ▶",
"already_joined": "Sa oled juba sees!",
"only_organizer": "Ainult algataja saab heisti alustada.",
"lobby_desc": "**Osalejad ({n}/{max}):**\n{names}\n\nÕnnestumise tõenäosus: **{chance}%**\n\n*Ühinemisaken sulgub <t:{ts}:R>*",
"cancel_desc": "Ei piisanud osalejaid (vajad vähemalt **{min}**). Heist tühistati.",
"started_title": "🔫 Grupirööv käib...",
"started_desc": "**{n}** osalejat alustasid heisti. Jälgi allpool!",
"story_title": "🔫 Grupirööv",
"win_desc": "**Osalejad:**\n{names}\n\nSaak jagati võrdselt.\n**Igaüks sai: +{payout}**",
"fail_desc": "**Osalejad:**\n{names}\n\nKõik osalejad saavad **1,5 tundi vangi** + trahv ~15% saldost.",
}
# ---------------------------------------------------------------------------
# Embed titles
# ---------------------------------------------------------------------------
TITLE: dict[str, str] = {
"daily": "📅 Päevane boonus",
"work": "💼 Töö",
"beg": "🙏 Kerjamine",
"crime_win": "<:TipiFIRE:1483431381668335687> Kuritegu õnnestus!",
"crime_fail": "<:TipiTROLL:1483431380166774895> Vahele jäid!",
"rob_win": "<:TipiFIRE:1483431381668335687> Rööv õnnestus!",
"rob_fail": "<:TipiTROLL:1483431380166774895> Rööv ebaõnnestus!",
"rob_anticheat": "<:TipiVAC:1483004309510819860> Anticheat peatas sind!",
"jailbreak": "🎲 Vanglast põgenemine",
"jailbreak_free": "🎲 <:TipiFIRE:1483431381668335687> DUUBEL! Oled vaba!",
"jailbreak_fail": "<:TipICRY:1483431288852709387> Kolm katset läbi!",
"jailbreak_miss": "🎲 <:TipICRY:1483431288852709387> Ei saanud duublit ({tries}/{max})",
"jailbreak_bail": "💸 Kautsjon",
"give": "<:TipiHEART:1483431377561976853> TipiCOINi ülekanne",
"stats": "📊 Mängustatistika",
"leaderboard_coins":"🪙 TipiBOTi edetabel - Mündid",
"leaderboard_exp": "📊 TipiBOTi edetabel - EXP / Tase",
"rps": "⚔️ Kivi, Paber, Käärid",
"rps_duel": "⚔️ KPK duell",
"rps_duel_active": "⚔️ KPK duell - käimas",
"rps_duel_done": "⚔️ KPK duell - lõppenud",
"rps_duel_cancel": "⚔️ KPK duell - tühistatud",
"rps_duel_expire": "⚔️ KPK duell - aegus",
"rps_duel_decline": "⚔️ KPK duell - keelduti",
"heist_lobby": "🔫 Grupirööv - kogunemine",
"heist_win": "<:TipiFIRE:1483431381668335687> Grupirööv õnnestus!",
"heist_fail": "<:TipiSKULL:1483431378929451028> Grupirööv ebaõnnestus!",
"heist_cancel": "🔫 Grupirööv tühistatud",
"request": "<:TipiHEART:1483431377561976853> Rahataotlus",
"reminders": "⏰ Meeldetuletused",
"cooldowns": "⏱️ Sinu ooteajad",
"adminseason": "🏆 Hooaeg lõppes!",
"economysetup": "⚙️ Majanduse seadistamine",
"blackjack": "🃏 Blackjack",
"blackjack_bj": "🃏 <:TipiFIRE:1483431381668335687> BLACKJACK!",
"blackjack_win": "<:TipiFIRE:1483431381668335687> Võitsid!",
"blackjack_lose": "<:TipiSKULL:1483431378929451028> Kaotasid!",
"blackjack_bust": "<:TipiSKULL:1483431378929451028> Üle 21 - kaotasid!",
"blackjack_push": "🤝 Viik!",
"blackjack_dbust": "<:TipiSKULL:1483431378929451028> Üle 21 - mõlemad kaotasid!",
"blackjack_dwin": "<:TipiFIRE:1483431381668335687> Topeltpanus võitis!",
}
# ---------------------------------------------------------------------------
# Error / validation messages (use .format(**kwargs) for dynamic parts)
# ---------------------------------------------------------------------------
ERR: dict[str, str] = {
"positive_bet": "❌ Panus peab olema positiivne.",
"positive_amount": "❌ Summa peab olema positiivne.",
"positive_duration": "❌ Aeg peab olema positiivne.",
"admincoins_zero": "Kogus ei tohi olla 0.",
"missing_perms": "❌ Sul on vaja **Rollide haldamise** õigust selle käsu kasutamiseks.",
"generic_error": "❌ Tekkis viga: ```{error}```",
"send_failed": "❌ Sõnumi saatmine ebaõnnestus: ```{error}```",
"rob_self": "❌ Sa ei saa iseennast röövida.",
"rob_bot": "❌ Botti ei saa röövida.",
"rob_no_house": "❌ Kassa pole veel avatud.",
"rob_house_blocked": "❌ Panga seif on liiga hästi kaitstud. Kasuta `/heist` selle rüüstamiseks.",
"rob_too_poor": "❌ **{name}** on liiga vaene röövimiseks.",
"rob_target_jailed": "❌ **{name}** on vanglas - vabad inimesed ei saa vanglas olevaid röövida.",
"heist_active": "❌ Serveris on juba aktiivne grupirööv käimas! Oota, kuni see lõpeb.",
"heist_full": "❌ Grupirööv on täis!",
"heist_min_players": "❌ Grupiröövi alustamiseks on vaja vähemalt **{min}** osalejat.",
"broke": "<:TipICRY:1483431288852709387> Sul pole piisavalt TipiCOINi. Saldo: {bal}",
"broke_need": "<:TipICRY:1483431288852709387> Sul pole piisavalt TipiCOINi. Vajad veel {need}.",
"item_owned": "❌ Sul on see ese juba olemas.",
"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!",
"not_your_challenge":"❌ See väljakutse pole sulle!",
"not_your_menu": "❌ See ei ole sinu menüü.",
"give_self": "❌ Sa ei saa endale TipiCOINi anda.",
"give_bot": "❌ Botile ei saa TipiCOINi anda.",
"give_jailed": "❌ Oled vangis - vanglas ei saa TipiCOINi anda. Pääsed välja {ts}.",
"rps_self": "❌ Sa ei saa iseendale väljakutse esitada.",
"rps_bot": "❌ Botid on KPK-is liiga head.",
"not_jailed": "❌ Sa pole praegu vangis.",
"not_in_leaderboard":"❌ Sind pole veel edetabelis.",
"admin_ban_bot": "❌ Botti ei saa keelata.",
"admin_reset_bot": "❌ Kassa andmeid ei saa lähtestada.",
"member_not_found": "❌ **{name}** ei leitud tabelist.",
"request_self_fund": "❌ Sa ei saa oma taotlust ise rahastada.",
"request_self": "❌ Sa ei saa iseendalt paluda.",
"request_bot": "❌ Botid on teatavasti kitsid.",
"request_targeted": "❌ See taotlus on suunatud kasutajale **{name}**.",
"already_in_game": "❌ Sul on juba aktiivne mäng käimas!",
"invalid_amount": "❌ Sisesta kehtiv summa või 'all'.",
"fund_range": "❌ Sisesta summa vahemikus 1-{max}.",
"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}```",
}
# ---------------------------------------------------------------------------
# Cooldown messages (use .format(ts=...) - ts is a Discord timestamp string)
# ---------------------------------------------------------------------------
CD_MSG: dict[str, str] = {
"daily": "⏳ Järgmine boonus {ts}.",
"work": "⏳ Saad töötada {ts}.",
"beg": "⏳ Saad kerjata {ts}.",
"crime": "⏳ Saad uuesti proovida {ts}.",
"rob": "⏳ Saad uuesti röövida {ts}.",
"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.",
}
# ---------------------------------------------------------------------------
# Shop UI strings
# ---------------------------------------------------------------------------
SHOP_UI: dict[str, str] = {
"tier_1": "Tier 1 - Algaja",
"tier_2": "Tier 2 - Kogenud",
"tier_3": "Tier 3 - Legend",
"desc": "Saldo: {bal} · Osta käsuga `/buy`",
"owned": "✅ Olemas",
"owned_uses_1": "✅ Olemas ({uses} kasutus järel)",
"owned_uses_n": "✅ Olemas ({uses} kasutust järel)",
"locked": "🔒 Tase {min_lvl} nõutud *(sul on {user_lvl})*",
}
# ---------------------------------------------------------------------------
# Blackjack in-game strings
# ---------------------------------------------------------------------------
BJ: dict[str, str] = {
"dealing": "*Jagame kaardid...*",
"result_field": "Tulemus",
"push_result": "±0 (panus tagasi)",
"doubled_label": "💰 *Topeltpanus: {total}*",
"btn_hit": "🃏 Võta kaart",
"btn_stand": "✋ Seisa",
"btn_double": "💰 Kahekordista (+{bet}⬡)",
"btn_split": "✂️ Split (+{bet}⬡)",
}
# ---------------------------------------------------------------------------
# Shop item descriptions (keyed by SHOP dict key in economy.py)
# ---------------------------------------------------------------------------
ITEM_DESCRIPTIONS: dict[str, str] = {
"gaming_hiir": "400 DPI? ei, 3200 DPI. Teeni töötades 50% rohkem TipiCOINe.",
"hiirematt": "XXL formaat, ainult parimast kummist. Kerjamise ooteaeg 5min → 3min.",
"korvaklapid": "Noise-cancelling - kuuled ainult TipiCOINide kõlinat. Päevase boonuse ooteaeg 20h → 18h.",
"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 4090 jooksutab botte 24/7. Päevane boonus genereerib 5% intressi sinu saldo pealt.",
"anticheat": "VAC, EAC ja BattlEye korraga. Röövimine sinu vastu ebaõnnestub. **2 kasutust**, siis pead ostma uue.",
"reguleeritav_laud": "Seisad, istud, võidad. /work teenib 25% rohkem (stackib mängurihiirega).",
"jellyfin": "Isehostitav meediaserver - pähkli eest filme. Röövimise edu tõenäosus 45% → 60%.",
"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 49 tolli. /work ooteaeg: 1h → 40min.",
"cat6": "Gigabit ping = ideaalne häkkimiskiirus. /crime edu tõenäosus tõuseb 60% → 75%.",
"monitor_360": "360Hz, 1ms, 4K. Mänguautomaadi jackpot 10x → 15x, kolmik 4x → 6x.",
"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.",
}
# ---------------------------------------------------------------------------
# /help UI
# ---------------------------------------------------------------------------
HELP_UI: dict[str, str] = {
"footer": "TipiBOT • Vali kategooria allmenüüst",
"select_placeholder": "Vali kategooria...",
}
JAILED_UI: dict[str, str] = {
"title": "🔒 Praegu vanglas",
"empty": "Kõik on vabad! Vanglas pole kedagi.",
"entry": "{mention} - vabaneb <t:{ts}:R>",
"footer": "{count} vang{plural}",
}
REMINDERS_UI: dict[str, str] = {
"select_placeholder": "Vali käsud, millest soovid meeldetuletust...",
"saved_on": "✅ Meeldetuletused sisse lülitatud: {names}",
"saved_off": "🔕 Kõik meeldetuletused välja lülitatud.",
"desc_active": "Praegu aktiivne: {status}\n\nMuuda valikut allpool.",
"desc_none": "Hetkel pole ühtegi meeldetuletust sisse lülitatud.\n\nVali allpool, millest soovid DM-i saada.",
"footer": "Bot DM-ib sulle, kui valitud käsk on taas kasutamiseks valmis.",
}
SHOP_BTN: dict[int, str] = {
1: "Tier 1",
2: "Tier 2",
3: "Tier 3",
}
# ---------------------------------------------------------------------------
# /send UI strings
# ---------------------------------------------------------------------------
SEND_UI: dict[str, str] = {
"sent": "✅ Sõnum saadetud kanalisse {channel}!",
"forbidden": "❌ Mul pole õigust kanalisse {channel} kirjutada.",
}
# ---------------------------------------------------------------------------
# /allowchannel /denychannel /channels UI strings
# ---------------------------------------------------------------------------
MEMBER_UI: dict[str, str] = {
"title": "👤 {name}",
"age_field": "Vanus",
"age_val": "{age}a",
}
MEMBER_FIELDS: list[tuple[str, str]] = [
("Nimi", "Nimi"),
("Organisatsioon", "Organisatsioon"),
("Valdkond", "Valdkond"),
("Roll", "Roll"),
("Sünnipäev", "Sünnipäev"),
("Meil", "Meil"),
("Telefon", "Telefon"),
("Discord", "Discord"),
("User ID", "Kasutaja ID"),
("Discordis synced?", "Sünkroniseeritud"),
("Groupi lisatud?", "Grupis"),
]
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}",
}
ECONOMYSETUP_UI: dict[str, str] = {
"created_field": "✅ Loodud",
"existing_field": "♻️ Juba olemas",
"footer": "Rollid on nüüd boti rolli all õiges järjekorras.",
}
CHANNEL_UI: dict[str, str] = {
"already_allowed": " {channel} on juba lubatud kanalite nimekirjas.",
"added": "{channel} lisatud. Bot vastab käskudele nüüd ainult lubatud kanalites.",
"not_in_list": " {channel} pole lubatud kanalite nimekirjas.",
"removed": "{channel} eemaldatud lubatud kanalite nimekirjast.",
"removed_last": "{channel} eemaldatud. Lubatud kanalite nimekiri on nüüd tühi - bot vastab kõikides kanalites.",
"list_title": "📋 Lubatud kanalid",
"list_empty": "Lubatud kanalite nimekiri on **tühi** - bot vastab käskudele kõikides kanalites.\n\nKasuta `/allowchannel`, et piirata kindlatele kanalitele.",
"list_filled": "Bot vastab käskudele ainult nendes kanalites:\n\n{lines}\n\n-# Kasuta `/allowchannel` / `/denychannel` nimekirja muutmiseks.",
}
# ---------------------------------------------------------------------------
# /daily embed strings
# ---------------------------------------------------------------------------
DAILY_UI: dict[str, str] = {
"earned": "✅ Said {earned}!",
"interest": "<:TipiLAP:1483004307161874566> Bot Farm tootis: +{interest}",
"vip": "<:TipiPILET:1483004308353060904> LAN pilet boonus rakendus!",
"footer": "Streak: {streak_str} · Saldo: {balance}",
}
# ---------------------------------------------------------------------------
# /stats embed strings
# ---------------------------------------------------------------------------
STATS_UI: dict[str, str] = {
"economy_field": "💰 Majandus",
"economy_val": "Tipp-saldo: {peak}\nEluaegne tulu: {earned}\nEluaegne kaotus: {lost}",
"work_field": "🛠️ Töö & Kerja",
"work_val": "Töötanud: **{work}** korda\nKerjanud: **{beg}** korda",
"gamble_field": "🎲 Hasartmängud",
"gamble_val": "Panustatud kokku: {wagered}\nSuurim võit: {win}\nSuurim kaotus: {loss}\nSlotsi džekpotid: **{jackpots}** korda",
"crime_field": "🦹 Kuritegevus",
"crime_val": "Kuriteod: **{crimes}** ({succeeded} õnnestus)\nHeistid: **{heists}** ({heists_won} võideti)\nVangi sattunud: **{jailed}** korda\nKautsjon makstud: {bail}",
"social_field": "🤝 Sotsiaalne",
"social_val": "Kingitud: {given}\nSaadud: {received}",
"records_field": "🔥 Rekordid",
"records_val": "Pikim päevane streak: **{streak}** päeva",
}
# ---------------------------------------------------------------------------
# /birthdays UI
# ---------------------------------------------------------------------------
BIRTHDAY_UI: dict[str, str] = {
"no_entries": "Sellel kuul sünnipäevi ei ole.",
"today": "täna 🎉",
"tomorrow": "homme",
"in_days": "{days}p pärast",
"footer": "Leht {month}/12 · {month_name}",
}
# ---------------------------------------------------------------------------
# /check summary strings
# ---------------------------------------------------------------------------
CHECK_UI: dict[str, str] = {
"sheet_stats_header": "📊 **Tabeli statistika** - {total} liiget",
"stat_ok": "✅ **{label}**: kõik täidetud",
"stat_warn": "⚠️ **{label}** puudub ({count}): {names}{more}",
"stat_more": " (+{count} veel)",
"stat_uid": "Kasutaja ID",
"stat_discord": "Discordi kasutajanimi",
"stat_bday": "Sünnipäev",
"done": "**Kontroll lõpetatud!**",
"already_ok": "✅ Juba korras: {count}",
"fixed": "🔧 Parandatud: {count}",
"not_found": "❓ Pole tabelis: {count}",
"bday_pings": "🎂 Sünnipäeva teavitused: {count}",
"errors": "⚠️ Vead: {count}",
"details_header": "**Üksikasjad:**",
"details_more": "... ja {count} rohkem",
"ids_filled": "\n🔑 Täideti **{count}** puuduvat kasutaja ID-d.",
}
# ---------------------------------------------------------------------------
# Admin command responses and DMs
# ---------------------------------------------------------------------------
ADMIN: dict[str, str] = {
"coins_done": "{emoji} **{name}**: {verb} {coin} → saldo **{balance}**\n📝 Põhjus: {reason}",
"coins_dm": "{emoji} Admin muutis sinu TipiCOINi saldot: **{verb} {coin}**\n📝 Põhjus: *{reason}*\nUus saldo: **{balance} {coin}**",
"jail_done": "🚔 **{name}** on vangistatud {minutes} minutiks (vabaneb {ts}).\n📝 Põhjus: {reason}",
"jail_dm": "🚔 Admin saatis sind vanglasse **{minutes} minutiks**.\n📝 Põhjus: *{reason}*\nVabaneb {ts}.",
"unjail_done": "✅ **{name}** on vanglast vabastatud.",
"unjail_dm": "✅ Admin vabastas sind vanglast.",
"ban_done": "🚫 **{name}** on majandussüsteemist keelustatud.\n📝 Põhjus: {reason}",
"ban_dm": "🚫 Sind on TipiBOTi majandussüsteemist keelustatud.\n📝 Põhjus: *{reason}*",
"unban_done": "✅ **{name}** on majandussüsteemi keelust eemaldatud.",
"unban_dm": "✅ Sinu TipiBOTi majandussüsteemi 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}*",
}
# ---------------------------------------------------------------------------
# /adminseason strings
# ---------------------------------------------------------------------------
SEASON: dict[str, str] = {
"top_header": "**Top mängijad EXP järgi:**",
"no_players": "Keegi ei teeninud EXP-i.",
"entry": "{prefix} {name} - {exp} EXP *(Tase {level})*",
"footer": "Kõigi EXP, mündid ja esemed lähtestati. Uus hooaeg algab kohe!",
"done": "✅ Hooaeg lõpetatud - EXP, mündid ja esemed lähtestatud.",
}
# ---------------------------------------------------------------------------
# /balance embed strings
# ---------------------------------------------------------------------------
BALANCE_UI: dict[str, str] = {
"saldo": "Saldo",
"streak": "Päeva streak",
"streak_val": "🔥 {streak}p",
"jailed_until": "🚔 Vangis kuni",
"items": "Esemed",
"uses_one": " *({uses} kasutus järel)*",
"uses_many": " *({uses} kasutust järel)*",
}
# ---------------------------------------------------------------------------
# /cooldowns embed strings
# ---------------------------------------------------------------------------
COOLDOWNS_UI: dict[str, str] = {
"ready": "✅ Valmis",
"daily_line": "📅 **/daily** {status}{note}",
"work_line": "💼 **/work** {status}{note}",
"beg_line": "🙏 **/beg** {status}{note}",
"crime_line": "🦹 **/crime** {status}",
"rob_line": "🔫 **/rob** {status}",
"note_korvak": " *(korvaklapid: 18t)*",
"note_monitor": " *(monitor: 40min)*",
"note_hiirematt": " *(hiirematt: 3min)*",
"jailed": "\n🚔 **Vanglas** - vabaneb <t:{ts}:R>",
"jail_expired": "\n🔓 Vangla lõppes",
}
# ---------------------------------------------------------------------------
# /rank embed strings
# ---------------------------------------------------------------------------
RANK_UI: dict[str, str] = {
"title": "📊 {name} - Tase {level}",
"field_title": "Tiitel",
"field_exp": "EXP",
"field_progress": "Progress → Tase {next}",
"progress_val": "`{bar}` {progress}/{needed} EXP",
"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",
}
# ---------------------------------------------------------------------------
# /work embed strings
# ---------------------------------------------------------------------------
WORK_UI: dict[str, str] = {
"desc": "Sa {job} ja teenisid {earned}!",
"redbull": "\n<:TipiBULL:1483004310924300409> Red Bull aktiveerus - 3x boonus!",
"hiir": "\n<:TipiHIIR:1483004306012504128> Mängurihiir: +50% palk",
"laud": "\n<:TipiLAUD:1483387695576125440> Reguleeritav laud: +25% palk",
"balance": "\nSaldo: {balance}",
}
# ---------------------------------------------------------------------------
# /beg embed strings
# ---------------------------------------------------------------------------
BEG_UI: dict[str, str] = {
"desc": "Sa {text} ja said {earned}.",
"klaviatuur": "<:TipiKLAVA:1483014339228078140> Mehhaaniline klaviatuur: 2x tulu",
"balance": "Saldo: {balance}",
}
# ---------------------------------------------------------------------------
# /crime embed strings
# ---------------------------------------------------------------------------
CRIME_UI: dict[str, str] = {
"win_desc": "Sa {text} ja teenisid {earned}!",
"fail_base": "Sa {text} ja said trahvi {fine}.",
"fail_jailed": "\n\ud83d\udd12 Oled vangis! P\u00e4\u00e4sed {ts}.",
"fail_shield": "\n\ud83d\udee1\ufe0f Gaming Tool hoidis sind vanglast!",
"mikrofon": "\n<:TipiMIC:1483387698499551313> Mikrofon: +30% saak",
"cat6": "\n<:TipiCAT:1483014337663602718> CAT6: 75% edu t\u00f5en\u00e4osus",
"balance": "\nSaldo: {balance}",
}
# ---------------------------------------------------------------------------
# /rob embed strings
# ---------------------------------------------------------------------------
ROB_UI: dict[str, str] = {
"jackpot_desc": "💥 **JACKPOT!** Tegid TipiBOTi kassasse sisse ja varastasid {stolen}!\nSaldo: {balance}",
"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.",
"fail_desc": "Jäid vahele! Trahv: {fine}.\nSaldo: {balance}",
}
# ---------------------------------------------------------------------------
# /give embed strings
# ---------------------------------------------------------------------------
GIVE_UI: dict[str, str] = {
"desc": "**{giver}** andis {amount} kasutajale **{receiver}**.",
}
# ---------------------------------------------------------------------------
# /buy embed strings
# ---------------------------------------------------------------------------
BUY_UI: dict[str, str] = {
"title": "{emoji} {name} ostetud!",
"desc": "{description}\nUus saldo: {balance}",
}
# ---------------------------------------------------------------------------
# /jailbreak UI strings
# ---------------------------------------------------------------------------
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!",
"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.",
"already_bail": "Oled juba täringuid visanud. Ainuke väljapääs on kautsjon.\n\n💰 **Kautsjon: {min} {max}** (2030% saldost)\nSaldo: {bal} Väljas: {ts}",
"already_broke": "Oled juba täringuid visanud. Sul pole piisavalt raha kautsjoni maksmiseks.\n\n💰 Kautsjoni miinimum: **{min}** - sul on ainult {bal}\nVäljas: {ts}",
"bail_btn": "💸 Maksa kautsjon",
"bail_broke_desc": "❌ Sul pole piisavalt raha (min {min}).\nJääd vanglasse kuni aja lõpuni! Saldo: {balance}",
"bail_paid_desc": "✅ Kautsjon makstud: **{fine}**\nOled vaba! Saldo: {balance}",
"fail_broke_desc": "{d1} {d2} - ei olnud duubel\n\n❌ Sul pole kautsjoni maksmiseks piisavalt raha (min 350 ⬡).\nJääd vanglasse kuni aja lõpuni! Saldo: {balance}",
"fail_bail_desc": "{d1} {d2} - ei olnud duubel\n\nKautsjon makstud: **{fine}**\nSaldo: {balance}",
"fail_bail_offer": "{d1} {d2} - ei olnud duubel\n\n💰 **Kautsjon: {min} - {max}** (20-30% saldost)\nSaldo: {bal}\n\nSaad maksta kautsjoni või jääda vanglasse kuni aja lõpuni.",
}
# ---------------------------------------------------------------------------
# /leaderboard UI strings
# ---------------------------------------------------------------------------
LEADERBOARD_UI: dict[str, str] = {
"house_entry": "🤖 {name} *(maja)* - {balance}",
"no_entries": "Keegi ei ole veel punkte teeninud.",
"footer": "Lehekülg {page}/{total} · {count} mängijat",
"btn_coins": "🪙 Mündid",
"btn_exp": "📊 EXP",
"btn_find_me": "📍 Mina",
"exp_entry": "{prefix} {name} - {exp} EXP *(Tase {level})*",
"unknown_user": "Kasutaja {uid}",
}
# ---------------------------------------------------------------------------
# /slots additional UI strings (titles/footers per outcome)
# ---------------------------------------------------------------------------
SLOTS_UI: dict[str, str] = {
"playing": "🎰 Mängimas...",
"jackpot_footer": "<:TipiKARIKAS:1483014841148112977> Kolm karikat! +{change}",
"triple_footer": "✅ Kolm ühesugust! +{change}",
"pair_footer": "Kaks ühesugust! +{change}",
"miss_footer": "-{amount}",
"balance_line": "\nSaldo: {balance}",
}
# ---------------------------------------------------------------------------
# /rps UI strings
# ---------------------------------------------------------------------------
RPS_UI: dict[str, str] = {
"vs_bot_desc": "Tee oma valik! ⬇️",
"vs_bot_bet": "\nPanus: {bet}",
"result_tie": "🤝 Viik!",
"result_win": "🎉 Sina võitsid!",
"result_lose": "🤖 Bot võitis!",
"result_desc": "Sina: {player_pick} {player_name}\nBot: {bot_pick} {bot_name}\n\n**{result}**{bet_line}",
"bet_win": "\n+{amount} · Saldo: {balance}",
"bet_lose": "\n-{amount} · Saldo: {balance}",
"bet_tie": "\nViik - panus tagasi · Saldo: {balance}",
"challenge_desc": "{challenger} kutsub välja {opponent}{bet}\n\n{opponent}, kas võtad vastu? ⬇️",
"challenge_bet": " · Panus: {bet}",
"challenge_footer": "Väljakutse aegub 60 sekundi pärast",
"duel_active_desc": "{a} vs {b}{bet}\n\nMõlemad mängijad valivad DM-is. ⏳",
"duel_active_bet": " · Panus: {bet}",
"duel_dm": "⚔️ **KPK vs {opponent}**{bet}\nTee oma valik! ⬇️",
"duel_dm_bet": "\nPanus: {bet}",
"duel_waiting": "Valisid {choice} **{name}**. Ootame vastase valikut... ⏳",
"duel_result_a": "**⚔️ KPK tulemus vs {opponent}**\nSinu valik: {pick_a} {name_a}\nVastase valik: {pick_b} {name_b}\n\n**{result}**{bet_line}\nSaldo: {balance}",
"duel_verdict_win": "🏆 **{name}** võitis!",
"duel_verdict_tie": "🤝 Viik!",
"duel_broke": "\n⚠️ Makse ebaõnnestus (ebapiisav saldo)",
"duel_expire_dm": "⏰ KPK duell aegus - keegi ei teinud valikut õigeaegselt.",
"duel_expire_desc": "{a} vs {b}\n\nMäng aegus - valik jäi tegemata.",
"duel_dm_fail": "Ei saanud DM saata: **{names}**. Kontrolli privaatsussätteid.",
"duel_decline": "**{name}** keeldus väljakutsest.",
"duel_no_answer": "**{name}** ei vastanud väljakutsele.",
"duel_insufficient": "{mention}-l pole piisavalt TipiCOINi panuseks.",
"duel_done_desc": "{a} {pick_a} vs {pick_b} {b}\n\n**{verdict}**\n\n{name_a}: {bal_a}\n{name_b}: {bal_b}",
"server_only": "Seda käsku saab kasutada ainult serveris.",
"btn_accept": "Võta vastu ✅",
"btn_decline": "Keeldu ❌",
"btn_rock": "🪨 Kivi",
"btn_paper": "📄 Paber",
"btn_scissors": "✂️ Käärid",
}
RPS_CHOICES: dict[str, str] = {
"🪨": "Kivi",
"📄": "Paber",
"✂️": "Käärid",
}
# ---------------------------------------------------------------------------
# /request UI strings
# ---------------------------------------------------------------------------
REQUEST_UI: dict[str, str] = {
"modal_title": "Rahasta taotlust",
"modal_label": "Kui palju soovid panustada?",
"btn_fund": "Rahasta 💸",
"btn_funded": "Rahastatud ✅",
"btn_fund_remaining": "Rahasta 💸 ({remaining}⬡ jäänud)",
"funded_line": "✅ **{name}** panustas {amount}",
"funded_full": "\n🎯 Taotlus täielikult täidetud!",
"funded_partial": "\n💰 Jäänud: {remaining}",
"audience_all": "Avatud kõigile rahastajatele 🌍",
"audience_targeted": "Suunatud: **{name}**",
"desc": "**{requester}** palub {amount}\n\n📋 **Põhjus:** {reason}\n\n{audience}",
"footer": "Taotlus aegub 5 minuti pärast",
}
BJ_UI: dict[str, str] = {
"dealer": "Dealer",
"player": "Sina",
"hand_n": "Käsi {n}",
"hand_active": "▶ **Käsi {n}**",
"hand_pending": "Käsi {n} *...*",
"bust": " 💥",
"balance_line": " · Saldo: {balance}",
}