2019-01-25 14:28:47 +00:00
from db import MatchmakingStatus
2019-02-07 23:57:40 +00:00
import typing
2019-01-25 14:28:47 +00:00
class SafeDict ( dict ) :
def __missing__ ( self , key ) :
2019-02-01 19:05:21 +00:00
return key
2019-01-25 14:28:47 +00:00
2019-02-09 18:57:49 +00:00
def safely_format_string ( string : str , words : typing . Dict [ str , str ] , ignore_escaping = False ) - > str :
if ignore_escaping :
escaped = words
else :
escaped = { }
for key in words :
escaped [ key ] = words [ key ] . replace ( " < " , " < " ) . replace ( " > " , " > " )
2019-02-07 23:57:40 +00:00
return string . format_map ( SafeDict ( * * escaped ) )
2019-01-25 14:28:47 +00:00
2019-01-28 21:55:55 +00:00
# Generic telegram errors
class TELEGRAM :
2019-02-01 18:21:46 +00:00
BOT_STARTED = " ✅ Hai autorizzato il bot ad inviarti messaggi privati. "
2019-01-25 14:28:47 +00:00
class ERRORS :
2019-01-28 21:55:55 +00:00
CRITICAL_ERROR = " ☢ <b>ERRORE CRITICO!</b> \n Il bot ha ignorato il comando. \n Una segnalazione di errore è stata automaticamente mandata a @Steffo. \n \n Dettagli dell ' errore: \n <pre> {exc_info} </pre> "
2019-02-07 23:57:40 +00:00
ROYALNET_NOT_LINKED = " ⚠ Il tuo account Telegram non è connesso a Royalnet! Connettilo con <code>/link (NomeUtenteRoyalnet)</code>. "
UNAUTHORIZED_USER = " ⚠ Non sono autorizzato a inviare messaggi a {mention} . \n Per piacere, {mention} , inviami un messaggio in privata! "
UNAUTHORIZED_GROUP = " ⚠ Non sono autorizzato a inviare messaggi in <i> {group} </i>. \n @Steffo, aggiungimi al gruppo o concedimi i permessi! "
INACTIVE_BRIDGE = " ⚠ Il collegamento tra Telegram e Discord non è attivo al momento. "
2019-01-25 14:28:47 +00:00
2019-01-28 21:55:55 +00:00
PONG = " 🏓 Pong! "
2019-02-07 23:57:40 +00:00
# Diario
class DIARIO :
SUCCESS = " ✅ Riga aggiunta al diario: \n {diario} "
class ERRORS :
INVALID_SYNTAX = " ⚠ Sintassi del comando errata. \n Sintassi: <code>/diario (frase)</code>, oppure rispondi a un messaggio con <code>/diario</code>. "
NO_TEXT = " ⚠ Il messaggio a cui hai risposto non contiene testo. "
# Diario search
class DIARIOSEARCH :
HEADER = " ℹ ️ Risultati della ricerca di {term} : \n "
class ERRORS :
INVALID_SYNTAX = " ⚠ Non hai specificato un termine da cercare! \n Sintassi: <code>/ {command} (termine)</code> "
RESULTS_TOO_LONG = " ⚠ Sono presenti troppi risultati da visualizzare! Prova a restringere la ricerca. "
# Eat!
class EAT :
NORMAL = " 🍗 Hai mangiato {food} ! "
OUIJA = " 👻 Il {food} che hai mangiato era posseduto. \n Spooky! "
class ERRORS :
INVALID_SYNTAX = " ⚠ Non hai specificato cosa mangiare! \n Sintassi: <code>/eat (cibo)</code> "
2019-01-28 21:55:55 +00:00
# Royalnet linking
2019-02-07 23:57:40 +00:00
class LINK :
SUCCESS = " ✅ Collegamento riuscito! "
2019-01-28 21:55:55 +00:00
class ERRORS :
2019-02-08 21:11:41 +00:00
INVALID_SYNTAX = " ⚠ Non hai specificato un username! \n Sintassi: <code>/link (NomeUtenteRoyalnet)</code> "
2019-01-28 21:55:55 +00:00
NOT_FOUND = " ⚠ Non esiste nessun account Royalnet con quel nome. "
ALREADY_EXISTING = " ⚠ Questo account è già collegato a un account Royalnet. "
2019-01-28 19:45:31 +00:00
# Markov strings
class MARKOV :
class ERRORS :
NO_MODEL = " ⚠ La catena di Markov non è disponibile. "
GENERATION_FAILED = " ⚠ <code>markovify</code> non è riuscito a generare una frase. Prova di nuovo? \n E ' un ' avvenimento sorprendentemente raro... "
SPECIFIC_WORD_FAILED = " ⚠ <code>markovify</code> non è riuscito a generare una frase partendo da questa parola. Provane una diversa... "
MISSING_WORD = " ⚠ La parola specificata non è presente nella catena di Markov. Provane una diversa... "
2019-01-25 14:28:47 +00:00
# Matchmaking service strings
class MATCHMAKING :
TICKER_TEXT = {
" match_ready " : " 🔵 Hai detto che sei pronto per giocare! " ,
" match_wait_for_me " : " 🕒 Hai chiesto agli altri di aspettarti. " ,
2019-02-08 17:06:05 +00:00
" match_maybe " : " ❓ Hai detto che forse ci sarai. " ,
2019-01-25 14:28:47 +00:00
" match_ignore " : " ❌ Non hai intenzione di partecipare. " ,
" match_close " : " 🚩 Hai notificato tutti che la partita sta iniziando. " ,
" match_cancel " : " 🗑 Hai annullato la partita. "
}
GAME_START = {
MatchmakingStatus . READY : " 🔵 Che <b> {match_title} </b> abbia inizio! " ,
MatchmakingStatus . WAIT_FOR_ME : " 🕒 Sbrigati! <b> {match_title} </b> sta per iniziare! " ,
2019-02-08 17:06:05 +00:00
MatchmakingStatus . MAYBE : " ❓ <b> {match_title} </b> sta iniziando. Se vuoi partecipare, fai in fretta! " ,
2019-01-25 14:28:47 +00:00
}
BUTTONS = {
" match_ready " : " 🔵 Sono pronto per iniziare! " ,
" match_wait_for_me " : " 🕒 Ci sarò, aspettatemi! " ,
2019-02-08 17:06:05 +00:00
" match_maybe " : " ❓ Forse vengo, se non ci sono fate senza di me. " ,
2019-01-25 14:28:47 +00:00
" match_ignore " : " ❌ Non ci sarò. " ,
" match_close " : " 🚩 ADMIN: Avvia la partita " ,
" match_cancel " : " 🗑 ADMIN: Annulla la partita "
}
class ERRORS :
2019-02-01 19:05:21 +00:00
INVALID_SYNTAX = " ⚠ Sintassi del comando errata. \n Sintassi: <pre>/mm [minplayers-][maxplayers] per (gamename) \\ n[descrizione]</pre> "
2019-01-25 14:28:47 +00:00
NOT_ADMIN = " ⚠ Non sei il creatore di questo match! "
MATCH_CLOSED = " ⚠ Il matchmaking per questa partita è terminato! "
2019-01-28 22:37:01 +00:00
2019-02-07 23:57:40 +00:00
# Ship creator
class SHIP :
RESULT = " 💕 {one} + {two} = <b> {result} </b> "
2019-02-01 18:46:00 +00:00
2019-01-28 22:37:01 +00:00
class ERRORS :
2019-02-07 23:57:40 +00:00
INVALID_SYNTAX = " ⚠ Non hai specificato correttamente i due nomi! \n Sintassi corretta: <code>/ship (nome) (nome)</code> "
INVALID_NAMES = " ⚠ I nomi specificati non sono validi. \n Riprova con dei nomi diversi! "
2019-02-03 18:34:17 +00:00
# Wiki notifications
class WIKI :
PAGE_LOCKED = ' 🔒 La pagina wiki <a href= " https://ryg.steffo.eu/wiki/ {key} " > {key} </a> è stata bloccata da <b> {user} </b>. '
PAGE_UNLOCKED = ' 🔓 La pagina wiki <a href= " https://ryg.steffo.eu/wiki/ {key} " > {key} </a> è stata sbloccata da <b> {user} </b>. '