Queer European MD passionate about IT

messages.py 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201
  1. """Default messages for bot functions."""
  2. davtelepot_messages = {
  3. 'long_message': {
  4. 'file_name': {
  5. 'en': "Long message.html",
  6. 'it': "Messaggio lungo.html",
  7. },
  8. 'caption': {
  9. 'en': "<b>Long message</b>\n\n"
  10. "This message is too long to be sent as individual "
  11. "messages.",
  12. 'it': "<b>Messaggio lungo</b>\n\n"
  13. "Questo messaggio è troppo lungo per essere inviato come "
  14. "messaggi separati.",
  15. }
  16. }
  17. }
  18. default_admin_messages = {
  19. 'cancel': {
  20. 'button': {
  21. 'en': "↩️ Cancel",
  22. 'it': "↩️ Annulla"
  23. },
  24. 'done': {
  25. 'en': "↩️ Operation cancelled",
  26. 'it': "↩️ Operazione annullata",
  27. },
  28. 'lower': {
  29. 'en': "cancel",
  30. 'it': "annulla",
  31. },
  32. },
  33. 'confirm': {
  34. 'en': "🔄 Click again to confirm",
  35. 'it': "🔄 Clicka di nuovo per confermare",
  36. },
  37. 'db_command': {
  38. 'db_sent': {
  39. 'en': "Database sent.",
  40. 'it': "Database inviato.",
  41. },
  42. 'description': {
  43. 'en': "Ask for bot database via Telegram",
  44. 'it': "Ricevi il database del bot via Telegram",
  45. },
  46. 'error': {
  47. 'en': "Error sending database.",
  48. 'it': "Errore durante l'invio del database.",
  49. },
  50. 'file_caption': {
  51. 'en': "Here is bot database.",
  52. 'it': "Ecco il database!"
  53. },
  54. 'not_sqlite': {
  55. 'en': "Only SQLite databases may be sent via Telegram, since they "
  56. "are single-file databases.\n"
  57. "This bot has a `{db_type}` database.",
  58. 'it': "Via Telegram possono essere inviati solo database SQLite, "
  59. "in quanto composti di un solo file.\n"
  60. "Questo bot ha invece un database `{db_type}`."
  61. },
  62. },
  63. 'error': {
  64. 'text': {
  65. 'en': "❌️ Error!",
  66. 'it': "❌️ Errore!"
  67. },
  68. },
  69. 'errors_command': {
  70. 'description': {
  71. 'en': "Receive bot error log file, if set",
  72. 'it': "Ricevi il file di log degli errori del bot, se impostato"
  73. },
  74. 'no_log': {
  75. 'en': "Sorry but no errors log file is set.\n"
  76. "To set it, use `bot.set_errors_file_name` instance method "
  77. "or `Bot.set_class_errors_file_name` class method.",
  78. 'it': "Spiacente ma il file di log degli errori non è stato "
  79. "impostato.\n"
  80. "Per impostarlo, usa il metodo d'istanza "
  81. "`bot.set_errors_file_name` o il metodo di classe "
  82. "`Bot.set_class_errors_file_name`."
  83. },
  84. 'empty_log': {
  85. 'en': "Congratulations! Errors log is empty!",
  86. 'it': "Congratulazioni! Il log degli errori è vuoto!"
  87. },
  88. 'sending_failure': {
  89. 'en': "Sending errors log file failed!\n\n"
  90. "<b>Error:</b>\n"
  91. "<code>{e}</code>",
  92. 'it': "Inviio del messaggio di log degli errori fallito!\n\n"
  93. "<b>Errore:</b>\n"
  94. "<code>{e}</code>"
  95. },
  96. 'here_is_log_file': {
  97. 'en': "Here is the complete errors log file.",
  98. 'it': "Ecco il file di log degli errori completo."
  99. },
  100. 'log_file_first_lines': {
  101. 'en': "Here are the first {lines} lines of the errors log file.",
  102. 'it': "Ecco le prime {lines} righe del file di log degli errori."
  103. },
  104. 'log_file_last_lines': {
  105. 'en': "Here are the last {lines} lines of the errors log file.\n"
  106. "Newer lines are at the top of the file.",
  107. 'it': "Ecco le ultime {lines} righe del file di log degli "
  108. "errori.\n"
  109. "L'ordine è cronologico, con i messaggi nuovi in alto."
  110. }
  111. },
  112. 'father_command': {
  113. 'back': {
  114. 'en': "↩️ Back",
  115. 'it': "↩️ Indietro",
  116. },
  117. 'del': {
  118. 'done': {
  119. 'en': "✅ Commands deleted",
  120. 'it': "✅ Comandi rimossi",
  121. },
  122. 'error': {
  123. 'en': "Something went wrong 😕",
  124. 'it': "Qualcosa è andato storto 😕",
  125. },
  126. 'no_change': {
  127. 'en': "❌ No command stored",
  128. 'it': "❌ Nessun comando salvato",
  129. },
  130. },
  131. 'description': {
  132. 'en': "Edit the @BotFather commands",
  133. 'it': "Modifica i comandi con @BotFather",
  134. },
  135. 'error': {
  136. 'en': "❌ Error! ❌",
  137. 'it': "❌ Errore! ❌",
  138. },
  139. 'get': {
  140. 'empty': {
  141. 'en': "No command set yet. You may use <code>✏️ Change</code> "
  142. "button",
  143. 'it': "Nessun comando impostato ancora. Puoi usare il bottone "
  144. "<code>✏️ Modifica</code>",
  145. },
  146. 'panel': {
  147. 'en': "🤖 <b>BotFather commands</b> ℹ️\n\n"
  148. "{commands}",
  149. 'it': "🤖 <b>Comandi su BotFather</b> ℹ️\n\n"
  150. "{commands}",
  151. },
  152. },
  153. 'modes': [
  154. {
  155. 'id': "get",
  156. 'name': {
  157. 'en': "See",
  158. 'it': "Consulta"
  159. },
  160. 'symbol': "ℹ️",
  161. 'description': {
  162. 'en': "See commands stored by @BotFather",
  163. 'it': "Consulta i comandi salvati su @BotFather"
  164. },
  165. },
  166. {
  167. 'id': "set",
  168. 'name': {
  169. 'en': "Change",
  170. 'it': "Modifica"
  171. },
  172. 'symbol': "✏️",
  173. 'description': {
  174. 'en': "Change commands stored by @BotFather",
  175. 'it': "Modifica i comandi salvati su @BotFather"
  176. },
  177. },
  178. {
  179. 'id': "del",
  180. 'name': {
  181. 'en': "Delete",
  182. 'it': "Cancella"
  183. },
  184. 'symbol': "🗑",
  185. 'description': {
  186. 'en': "Delete commands stored by @BotFather",
  187. 'it': "Cancella i comandi salvati su @BotFather"
  188. },
  189. },
  190. {
  191. 'id': "settings",
  192. 'name': {
  193. 'en': "Settings",
  194. 'it': "Impostazioni"
  195. },
  196. 'symbol': "⚙️",
  197. 'description': {
  198. 'en': "Set commands to hide or to add",
  199. 'it': "Imposta comandi da nascondere o aggiungere"
  200. },
  201. },
  202. ],
  203. 'set': {
  204. 'button': {
  205. 'en': "⚠️ Set these commands 🔧",
  206. 'it': "⚠️ Imposta questi comandi 🔧",
  207. },
  208. 'done': {
  209. 'en': "✅ Done!",
  210. 'it': "✅ Fatto!",
  211. },
  212. 'error': {
  213. 'en': "Something went wrong 😕",
  214. 'it': "Qualcosa è andato storto 😕",
  215. },
  216. 'header': {
  217. 'en': "✏️ <b>Change commands stored by @BotFather 🤖</b>",
  218. 'it': "✏️ <b>Modifica i comandi salvati su @BotFather 🤖</b>",
  219. },
  220. 'legend': {
  221. 'en': "<b>Legend</b>\n"
  222. "✅ <i>Already stored</i>\n"
  223. "✏️ <i>New description</i>\n"
  224. "☑ <i>New command</i>\n"
  225. "❌ <i>Will be removed</i>",
  226. 'it': "<b>Legenda</b>\n"
  227. "✅ <i>Già presente</i>\n"
  228. "✏️ <i>Nuova descrizione</i>\n"
  229. "☑ <i>Nuovo comando</i>\n"
  230. "❌ <i>Comando da eliminare</i>",
  231. },
  232. 'no_change': {
  233. 'en': "❌ No change detected",
  234. 'it': "❌ Nessuna modifica",
  235. },
  236. },
  237. 'settings': {
  238. 'browse_records': {
  239. 'en': "✏️ <b>Edit BotFather settings</b> ⚙️\n\n"
  240. "Select a record to edit.\n\n"
  241. "{commands_list}\n\n"
  242. "<i>Legend</i>\n"
  243. "➕ Added commands\n"
  244. "➖ Hidden commands\n\n"
  245. "Showing records from {record_interval[0]} to "
  246. "{record_interval[1]} of {record_interval[2]}",
  247. 'it': "✏️ <b>Modifica impostazioni di BotFather</b> ⚙\n\n️"
  248. "Seleziona un'impostazione da modificare.\n\n"
  249. "{commands_list}\n\n"
  250. "<i>Legenda</i>\n"
  251. "➕ Comandi aggiunti\n"
  252. "➖ Comandi nascosti\n\n"
  253. "Record da {record_interval[0]} a "
  254. "{record_interval[1]} di {record_interval[2]}",
  255. },
  256. 'modes': {
  257. 'add': {
  258. 'add': {
  259. 'done': {
  260. 'en': "➕️️ <b>Added additional command</b>\n\n"
  261. "Command: {command}\n"
  262. "Description: {description}",
  263. 'it': "➕️️ <b>Inserito comando aggiuntivo</b>\n\n"
  264. "Comando: {command}\n"
  265. "Descrizione: {description}",
  266. },
  267. 'popup': {
  268. 'en': "Write the command to add",
  269. 'it': "Scrivimi il comando da aggiungere",
  270. },
  271. 'text': {
  272. 'en': "Write the command to add or /cancel this operation",
  273. 'it': "Scrivimi il comando da aggiungere o /annulla",
  274. },
  275. },
  276. 'description': {
  277. 'en': "Add command to default list",
  278. 'it': "Aggiungi un comando dalla lista autogenerata"
  279. },
  280. 'edit': {
  281. 'done': {
  282. 'en': "✏️ <b>Edited additional command</b>\n\n"
  283. "Command: {command}\n"
  284. "Description: {description}",
  285. 'it': "✏️ <b>Comando da nascondere modificato</b>\n\n"
  286. "Comando: {command}\n"
  287. "Descrizione: {description}",
  288. },
  289. },
  290. 'error': {
  291. 'description_too_long': {
  292. 'en': "<b>Description is too long</b>\n\n"
  293. "Description length must be 3-256 chars.",
  294. 'it': "<b>Descrizione troppo lunga</b>\n\n"
  295. "La descrizione deve essere di 3-256 caratteri.",
  296. },
  297. 'duplicate_record': {
  298. 'en': "<b>Duplicate record</b>\n\n"
  299. "Command is already being added to default "
  300. "output. Edit that record if you need to.",
  301. 'it': "<b>Record già presente</b>\n\n"
  302. "Questo comando è già aggiunto a quelli di "
  303. "default. Modifica il record già presente se "
  304. "necessario.",
  305. },
  306. 'missing_description': {
  307. 'en': "<b>Missing description</b>\n\n"
  308. "Additional commands must have a description "
  309. "(3-256 chars).",
  310. 'it': "<b>Descrizione mancante</b>\n\n"
  311. "I comandi aggiuntivi devono avere una "
  312. "descrizione di 3-256 caratteri.",
  313. },
  314. 'unhandled_exception': {
  315. 'en': "❌ <b>Unhandled exception </b> ⚠️",
  316. 'it': "❌ <b>Errore imprevisto </b> ⚠️",
  317. },
  318. },
  319. 'name': {
  320. 'en': "Add",
  321. 'it': "Aggiungi"
  322. },
  323. 'symbol': "➕️",
  324. },
  325. 'hide': {
  326. 'add': {
  327. 'done': {
  328. 'en': "➖ <b>Added hidden command</b>\n\n"
  329. "Command: {command}\n",
  330. 'it': "➖ <b>Comando da nascondere aggiunto</b>"
  331. "Comando: {command}\n",
  332. },
  333. 'popup': {
  334. 'en': "Write the command to hide",
  335. 'it': "Scrivimi il comando da nascondere",
  336. },
  337. 'text': {
  338. 'en': "Write the command to hide or /cancel this operation",
  339. 'it': "Scrivimi il comando da nascondere o /annulla",
  340. }
  341. },
  342. 'description': {
  343. 'en': "Hide command from default list",
  344. 'it': "Nascondi un comando dalla lista autogenerata"
  345. },
  346. 'edit': {
  347. 'done': {
  348. 'en': "✏️ <b>Edited hidden command</b>\n\n"
  349. "Command: {command}\n"
  350. "Description: {description}",
  351. 'it': "✏️ <b>Comando da nascondere modificato</b>\n\n"
  352. "Comando: {command}\n"
  353. "Descrizione: {description}",
  354. },
  355. },
  356. 'name': {
  357. 'en': "Hide",
  358. 'it': "Nascondi"
  359. },
  360. 'symbol': "➖️",
  361. },
  362. 'edit': {
  363. 'button': {
  364. 'en': "✏️ Edit record",
  365. 'it': "✏️ Modifica record"
  366. },
  367. 'description': {
  368. 'en': "Edit added or hidden commands",
  369. 'it': "Modifica i comandi aggiunti o nascosti"
  370. },
  371. 'edit': {
  372. 'popup': {
  373. 'en': "Write the new description",
  374. 'it': "Scrivimi la nuova descrizione",
  375. },
  376. 'text': {
  377. 'en': "Write the new description for command "
  378. "{command} or /cancel",
  379. 'it': "Scrivimi la nuova descrizione per il "
  380. "comando {command} o /annulla",
  381. },
  382. 'done': {
  383. 'en': "✏️ Edit succeeded ✅\n\n"
  384. "Command: {command}\n"""
  385. "Description: {description}",
  386. 'it': "✏️ Modifica completata ✅\n\n"
  387. "Comando: {command}\n"""
  388. "Descrizione: {description}",
  389. }
  390. },
  391. 'name': {
  392. 'en': "Edit",
  393. 'it': "Modifica"
  394. },
  395. 'panel': {
  396. 'delete': {
  397. 'button': {
  398. 'en': "❌ Delete record",
  399. 'it': "❌ Elimina record",
  400. },
  401. 'done': {
  402. 'popup': {
  403. 'en': "Record deleted ✅",
  404. 'it': "Record eliminato ✅",
  405. },
  406. 'text': {
  407. 'en': "Record deleted ✅",
  408. 'it': "Record eliminato ✅",
  409. },
  410. },
  411. },
  412. 'edit_description': {
  413. 'button': {
  414. 'en': "✏️ Edit description",
  415. 'it': "✏️ Modifica descrizione",
  416. },
  417. },
  418. 'text': {
  419. 'en': "✏️ Edit record ✅\n\n"
  420. "Command: {command}\n"""
  421. "Description: {description}",
  422. 'it': "✏️ Modifica record\n\n"
  423. "Comando: {command}\n"""
  424. "Descrizione: {description}",
  425. },
  426. },
  427. 'symbol': "✏️",
  428. },
  429. },
  430. 'panel': {
  431. 'en': "🤖 <b>@BotFather settings</b> ⚙️\n\n"
  432. "➕ <i>Additional commands</i>\n"
  433. "{additional_commands}\n\n"
  434. "➖ <i>Hidden commands</i>\n"
  435. "{hidden_commands}",
  436. 'it': "⚙️ <b>Impostazioni di @BotFather</b> 🤖\n\n"
  437. "➕ <i>Comandi aggiuntivi</i>\n"
  438. "{additional_commands}\n\n"
  439. "➖ <i>Comandi nascosti</i>\n"
  440. "{hidden_commands}",
  441. },
  442. },
  443. 'title': {
  444. 'en': "🤖 <b>BotFather</b>",
  445. 'it': "🤖 <b>BotFather</b>",
  446. },
  447. },
  448. 'log_command': {
  449. 'description': {
  450. 'en': "Receive bot log file, if set",
  451. 'it': "Ricevi il file di log del bot, se impostato"
  452. },
  453. 'no_log': {
  454. 'en': "Sorry but no log file is set.\n"
  455. "To set it, use `bot.set_log_file_name` instance method or "
  456. "`Bot.set_class_log_file_name` class method.",
  457. 'it': "Spiacente ma il file di log non è stato impostato.\n"
  458. "Per impostarlo, usa il metodo d'istanza "
  459. "`bot.set_log_file_name` o il metodo di classe"
  460. "`Bot.set_class_log_file_name`."
  461. },
  462. 'sending_failure': {
  463. 'en': "Sending log file failed!\n\n"
  464. "<b>Error:</b>\n"
  465. "<code>{e}</code>",
  466. 'it': "Inviio del messaggio di log fallito!\n\n"
  467. "<b>Errore:</b>\n"
  468. "<code>{e}</code>"
  469. },
  470. 'here_is_log_file': {
  471. 'en': "Here is the complete log file.",
  472. 'it': "Ecco il file di log completo."
  473. },
  474. 'log_file_first_lines': {
  475. 'en': "Here are the first {lines} lines of the log file.",
  476. 'it': "Ecco le prime {lines} righe del file di log."
  477. },
  478. 'log_file_last_lines': {
  479. 'en': "Here are the last {lines} lines of the log file.\n"
  480. "Newer lines are at the top of the file.",
  481. 'it': "Ecco le ultime {lines} righe del file di log.\n"
  482. "L'ordine è cronologico, con i messaggi nuovi in alto."
  483. }
  484. },
  485. 'maintenance_command': {
  486. 'description': {
  487. 'en': "Put the bot under maintenance",
  488. 'it': "Metti il bot in manutenzione"
  489. },
  490. 'maintenance_started': {
  491. 'en': "<i>Bot has just been put under maintenance!</i>\n\n"
  492. "Until further notice, it will reply to users "
  493. "with the following message:\n\n"
  494. "{message}",
  495. 'it': "<i>Il bot è stato messo in manutenzione!</i>\n\n"
  496. "Fino a nuovo ordine, risponderà a tutti i comandi con il "
  497. "seguente messaggio\n\n"
  498. "{message}"
  499. },
  500. 'maintenance_ended': {
  501. 'en': "<i>Maintenance ended!</i>",
  502. 'it': "<i>Manutenzione terminata!</i>"
  503. }
  504. },
  505. 'new_version': {
  506. 'title': {
  507. 'en': "🔔 New version installed ✅",
  508. 'it': "🔔 Rilevata nuova versione installata! ✅",
  509. },
  510. 'last_commit': {
  511. 'en': "Old commit: <code>{old_record[last_commit]}</code>\n"
  512. "New commit: <code>{new_record[last_commit]}</code>",
  513. 'it': "Vecchio commit: <code>{old_record[last_commit]}</code>\n"
  514. "Nuovo commit: <code>{new_record[last_commit]}</code>",
  515. },
  516. },
  517. 'query_button': {
  518. 'error': {
  519. 'en': "Error!",
  520. 'it': "Errore!",
  521. },
  522. 'file_name': {
  523. 'en': "Query result.csv",
  524. 'it': "Risultato della query.csv",
  525. },
  526. 'empty_file': {
  527. 'en': "No result to show.",
  528. 'it': "Nessun risultato da mostrare.",
  529. }
  530. },
  531. 'query_command': {
  532. 'description': {
  533. 'en': "Receive the result of a SQL query performed on bot "
  534. "database",
  535. 'it': "Ricevi il risultato di una query SQL sul database del bot"
  536. },
  537. 'help': {
  538. 'en': "Write a SQL query to be run on bot database.\n\n"
  539. "<b>Example</b>\n"
  540. "<code>/query SELECT * FROM users WHERE 0</code>",
  541. 'it': "Invia una query SQL da eseguire sul database del bot.\n\n"
  542. "<b>Esempio</b>\n"
  543. "<code>/query SELECT * FROM users WHERE 0</code>"
  544. },
  545. 'no_iterable': {
  546. 'en': "No result to show was returned",
  547. 'it': "La query non ha restituito risultati da mostrare"
  548. },
  549. 'exception': {
  550. 'en': "The query threw this error:",
  551. 'it': "La query ha dato questo errore:"
  552. },
  553. 'result': {
  554. 'en': "Query result",
  555. 'it': "Risultato della query"
  556. }
  557. },
  558. 'restart_command': {
  559. 'description': {
  560. 'en': "Restart bots",
  561. 'it': "Riavvia i bot"
  562. },
  563. 'restart_scheduled_message': {
  564. 'en': "Bots are being restarted, after pulling from repository.",
  565. 'it': "I bot verranno riavviati in pochi secondi, caricando "
  566. "prima le eventuali modifiche al codice."
  567. },
  568. 'restart_completed_message': {
  569. 'en': "<i>Restart was successful.</i>",
  570. 'it': "<i>Restart avvenuto con successo.</i>"
  571. }
  572. },
  573. 'select_command': {
  574. 'description': {
  575. 'en': "Receive the result of a SELECT query performed on bot "
  576. "database",
  577. 'it': "Ricevi il risultato di una query SQL di tipo SELECT "
  578. "sul database del bot"
  579. }
  580. },
  581. 'stop_button': {
  582. 'stop_text': {
  583. 'en': "Stop bots",
  584. 'it': "Ferma i bot"
  585. },
  586. 'cancel': {
  587. 'en': "Cancel",
  588. 'it': "Annulla"
  589. },
  590. 'confirm': {
  591. 'en': "Do you really want to stop all bots?",
  592. 'it': "Vuoi davvero fermare tutti i bot?"
  593. },
  594. 'stopping': {
  595. 'en': "Stopping bots...",
  596. 'it': "Arresto in corso..."
  597. },
  598. 'cancelled': {
  599. 'en': "Operation was cancelled",
  600. 'it': "Operazione annullata"
  601. }
  602. },
  603. 'stop_command': {
  604. 'description': {
  605. 'en': "Stop bots",
  606. 'it': "Ferma i bot"
  607. },
  608. 'text': {
  609. 'en': "Are you sure you want to stop all bots?\n"
  610. "To make them start again you will have to ssh-log "
  611. "in server.\n\n"
  612. "To restart the bots remotely use the /restart command "
  613. "instead (before starting over, a <code>git pull</code> "
  614. "is performed).",
  615. 'it': "Sei sicuro di voler fermare i bot?\n"
  616. "Per farli ripartire dovrai accedere al server.\n\n"
  617. "Per far ripartire i bot da remoto usa invece il comando "
  618. "/restart (prima di ripartire farò un "
  619. "<code>git pull</code>)."
  620. }
  621. },
  622. 'talk_command': {
  623. 'description': {
  624. 'en': "Choose a user and forward messages to each other",
  625. 'it': "Scegli un utente e il bot farà da tramite inoltrando a "
  626. "ognuno i messaggi dell'altro finché non terminerai la "
  627. "sessione"
  628. }
  629. },
  630. 'updates_available': {
  631. 'header': {
  632. 'en': "🔔 Updates available! ⬇️\n\n"
  633. "Click to /restart bot",
  634. 'it': "🔔 Aggiornamenti disponibili! ⬇\n\n"
  635. "Clicka qui per fare il /restart",
  636. },
  637. },
  638. 'version_command': {
  639. 'all_packages_updated': {
  640. 'en': "⌛️ All packages are updated! ✅",
  641. 'it': "⌛️ Tutti i pacchetti sono aggiornati! ✅",
  642. },
  643. 'checking_for_updates': {
  644. 'en': "⏳ Checking for updates... ☑️",
  645. 'it': "⏳ Sto cercando aggiornamenti... ☑️",
  646. },
  647. 'description': {
  648. 'en': "Get packages version and source code last commit",
  649. 'it': "Chiedi la versione dei pacchetti e del codice sorgente",
  650. },
  651. 'header': {
  652. 'en': "ℹ️ Version information #️⃣\n\n"
  653. "Last commit: <code>{last_commit}</code>",
  654. 'it': "ℹ️ Informazioni sulle versioni dei pacchetti #️⃣\n\n"
  655. "Ultimo commit: <code>{last_commit}</code>"
  656. },
  657. 'help_section': None,
  658. 'reply_keyboard_button': {
  659. 'en': "Version #️⃣",
  660. 'it': "Versione #️⃣",
  661. },
  662. },
  663. }
  664. default_authorization_messages = {
  665. 'auth_command': {
  666. 'description': {
  667. 'en': "Edit user permissions. To select a user, reply to "
  668. "a message of theirs or write their username",
  669. 'it': "Cambia il grado di autorizzazione di un utente "
  670. "(in risposta o scrivendone lo username)"
  671. },
  672. 'unhandled_case': {
  673. 'en': "<code>Unhandled case :/</code>",
  674. 'it': "<code>Caso non previsto :/</code>"
  675. },
  676. 'instructions': {
  677. 'en': "Reply with this command to a user or write "
  678. "<code>/{command} username</code> to edit their permissions.",
  679. 'it': "Usa questo comando in risposta a un utente "
  680. "oppure scrivi <code>/{command} username</code> per "
  681. "cambiarne il grado di autorizzazione."
  682. },
  683. 'unknown_user': {
  684. 'en': "Unknown user.",
  685. 'it': "Utente sconosciuto."
  686. },
  687. 'choose_user': {
  688. 'en': "{n} users match your query. Please select one.",
  689. 'it': "Ho trovato {n} utenti che soddisfano questi criteri.\n"
  690. "Per procedere selezionane uno."
  691. },
  692. 'no_match': {
  693. 'en': "No user matches your query. Please try again.",
  694. 'it': "Non ho trovato utenti che soddisfino questi criteri.\n"
  695. "Prova di nuovo."
  696. }
  697. },
  698. 'ban_command': {
  699. 'description': {
  700. 'en': "Reply to a user with /ban to ban them",
  701. 'it': "Banna l'utente (da usare in risposta)"
  702. }
  703. },
  704. 'auth_button': {
  705. 'description': {
  706. 'en': "Edit user permissions",
  707. 'it': "Cambia il grado di autorizzazione di un utente"
  708. },
  709. 'confirm': {
  710. 'en': "Are you sure?",
  711. 'it': "Sicuro sicuro?"
  712. },
  713. 'back_to_user': {
  714. 'en': "Back to user",
  715. 'it': "Torna all'utente"
  716. },
  717. 'permission_denied': {
  718. 'user': {
  719. 'en': "You cannot appoint this user!",
  720. 'it': "Non hai l'autorità di modificare i permessi di questo "
  721. "utente!"
  722. },
  723. 'role': {
  724. 'en': "You're not allowed to appoint someone to this role!",
  725. 'it': "Non hai l'autorità di conferire questo permesso!"
  726. }
  727. },
  728. 'no_change': {
  729. 'en': "No change suggested!",
  730. 'it': "È già così!"
  731. },
  732. 'appointed': {
  733. 'en': "Permission granted",
  734. 'it': "Permesso conferito"
  735. }
  736. },
  737. }
  738. default_authorization_denied_message = {
  739. 'en': "You are not allowed to use this command, sorry.",
  740. 'it': "Non disponi di autorizzazioni sufficienti per questa richiesta, spiacente.",
  741. }
  742. default_help_messages = {
  743. 'help_command': {
  744. 'header': {
  745. 'en': "<b>{bot.name} commands</b>\n\n"
  746. "{commands}",
  747. 'it': "<b>Comandi di {bot.name}</b>\n\n"
  748. "{commands}",
  749. },
  750. 'text': {
  751. 'en': "<b>Guide</b>",
  752. 'it': "<b>Guida</b>"
  753. },
  754. 'reply_keyboard_button': {
  755. 'en': "Help 📖",
  756. 'it': "Guida 📖"
  757. },
  758. 'description': {
  759. 'en': "Help",
  760. 'it': "Aiuto"
  761. },
  762. 'access_denied_message': {
  763. 'en': "Ask for authorization. If your request is accepted, send "
  764. "/help command again to read the guide.",
  765. 'it': "Chiedi di essere autorizzato: se la tua richiesta "
  766. "verrà accolta, ripeti il comando /help per leggere "
  767. "il messaggio di aiuto."
  768. },
  769. 'back_to_help_menu': {
  770. 'en': "Back to guide menu 📖",
  771. 'it': "Torna al menu Guida 📖",
  772. },
  773. },
  774. 'commands_button_label': {
  775. 'en': "Commands 🤖",
  776. 'it': "Comandi 🤖",
  777. },
  778. }
  779. default_language_messages = {
  780. 'language_command': {
  781. 'name': {
  782. 'en': "/language",
  783. 'it': "/lingua"
  784. },
  785. 'alias': {
  786. 'en': "Language 🗣",
  787. 'it': "Lingua 🗣"
  788. },
  789. 'reply_keyboard_button': {
  790. 'en': "Language 🗣",
  791. 'it': "Lingua 🗣"
  792. },
  793. 'description': {
  794. 'en': "Change language settings",
  795. 'it': "Cambia le impostazioni della lingua"
  796. }
  797. },
  798. 'language_button': {
  799. 'description': {
  800. 'en': "Change language settings",
  801. 'it': "Cambia le impostazioni della lingua"
  802. },
  803. 'language_set': {
  804. 'en': "Selected language: English 🇬🇧",
  805. 'it': "Lingua selezionata: Italiano 🇮🇹"
  806. }
  807. },
  808. 'language_panel': {
  809. 'text': {
  810. 'en': "<b>Choose a language</b>",
  811. 'it': "<b>Seleziona una lingua</b>"
  812. }
  813. }
  814. }
  815. default_suggestion_messages = {
  816. 'suggestions_command': {
  817. 'command': "/suggestion",
  818. 'aliases': [
  819. "/suggestions", "/ideas",
  820. "/suggerimento", "/suggerimenti", "idee"
  821. ],
  822. 'reply_keyboard_button': {
  823. 'en': "Ideas 💡",
  824. 'it': "Idee 💡"
  825. },
  826. 'description': {
  827. 'en': "Send a suggestion to help improve the bot",
  828. 'it': "Invia un suggerimento per aiutare a migliorare il bot"
  829. },
  830. 'prompt_text': {
  831. 'en': (
  832. "Send a suggestion to bot administrator.\n\n"
  833. "Maximum 1500 characters (extra ones will be ignored).\n"
  834. "If you need more space, you may create a telegra.ph topic and link it here.\n\n"
  835. "/cancel if you misclicked."
  836. ),
  837. 'it': (
  838. "Inserisci un suggerimento da inviare agli amministratori.\n\n"
  839. "Massimo 1500 caratteri (quelli in più non verranno registrati).\n"
  840. "Se ti serve maggiore libertà, puoi per esempio creare un topic "
  841. "su telegra.ph e linkarlo qui!\n\n"
  842. "/annulla se hai clickato per errore."
  843. ),
  844. },
  845. 'prompt_popup': {
  846. 'en': (
  847. "Send a suggestion"
  848. ),
  849. 'it': (
  850. "Inserisci un suggerimento"
  851. ),
  852. },
  853. 'entered_suggestion': {
  854. 'text': {
  855. 'en': (
  856. "Entered suggestions:\n\n"
  857. "<code>{suggestion}</code>\n\n"
  858. "Do you want to send it to bot administrators?"
  859. ),
  860. 'it': (
  861. "Suggerimento inserito:\n\n"
  862. "<code>{suggestion}</code>\n\n"
  863. "Vuoi inviarlo agli amministratori?"
  864. ),
  865. },
  866. 'buttons': {
  867. 'send': {
  868. 'en': "Send it! 📧",
  869. 'it': "Invia! 📧",
  870. },
  871. 'cancel': {
  872. 'en': "Cancel ❌",
  873. 'it': "Annulla ❌",
  874. },
  875. }
  876. },
  877. 'received_suggestion': {
  878. 'text': {
  879. 'en': (
  880. "💡 We received a new suggestion! 💡\n\n"
  881. "{user}\n\n"
  882. "<code>{suggestion}</code>\n\n"
  883. "#suggestions #{bot.name}"
  884. ),
  885. 'it': (
  886. "💡 Abbiamo ricevuto un nuovo suggerimento! 💡\n\n"
  887. "{user}\n\n"
  888. "<code>{suggestion}</code>\n\n"
  889. "#suggestions #{bot.name}"
  890. ),
  891. },
  892. 'buttons': {
  893. 'new': {
  894. 'en': "New suggestion 💡",
  895. 'it': "Nuovo suggerimento 💡",
  896. },
  897. },
  898. },
  899. 'invalid_suggestion': {
  900. 'en': "Invalid suggestion.",
  901. 'it': "Suggerimento non valido."
  902. },
  903. 'cancel_messages': {
  904. 'en': ['cancel'],
  905. 'it': ['annulla', 'cancella'],
  906. },
  907. 'operation_cancelled': {
  908. 'en': "Operation cancelled.",
  909. 'it': "Operazione annullata con successo.",
  910. },
  911. 'suggestion_sent': {
  912. 'popup': {
  913. 'en': "Thanks!",
  914. 'it': "Grazie!",
  915. },
  916. 'text': {
  917. 'en': (
  918. "💡 Suggestion sent, thank you! 💡\n\n"
  919. "<code>{suggestion}</code>\n\n"
  920. "#suggestions #{bot.name}"
  921. ),
  922. 'it': (
  923. "💡 Suggerimento inviato, grazie! 💡\n\n"
  924. "<code>{suggestion}</code>\n\n"
  925. "#suggerimenti #{bot.name}"
  926. ),
  927. },
  928. }
  929. },
  930. 'suggestions_button': {
  931. 'file_name': {
  932. 'en': "Suggestions.csv",
  933. 'it': "Suggerimenti.csv",
  934. },
  935. 'file_caption': {
  936. 'en': "Here is the suggestions file.",
  937. 'it': "Ecco il file dei suggerimenti.",
  938. }
  939. },
  940. 'see_suggestions': {
  941. 'command': "/getsuggestions",
  942. 'aliases': [
  943. "/vedisuggerimenti",
  944. ],
  945. 'description': {
  946. 'en': "Get a file containing all suggestions",
  947. 'it': "Richiedi un file con tutti i suggerimenti"
  948. },
  949. }
  950. }
  951. default_talk_messages = {
  952. 'admin_session_ended': {
  953. 'en': 'Session with user {u} ended.',
  954. 'it': 'Sessione terminata con l\'utente {u}.',
  955. },
  956. 'admin_warning': {
  957. 'en': (
  958. 'You are now talking to {u}.\n'
  959. 'Until you end this session, your messages will be '
  960. 'forwarded to each other.'
  961. ),
  962. 'it': (
  963. 'Sei ora connesso con {u}.\n'
  964. 'Finché non chiuderai la connessione, i messaggi che scriverai '
  965. 'qui saranno inoltrati a {u}, e ti inoltrerò i suoi.'
  966. ),
  967. },
  968. 'end_session': {
  969. 'en': 'End session?',
  970. 'it': 'Chiudere la sessione?',
  971. },
  972. 'help_text': {
  973. 'en': 'Press the button to search for user.',
  974. 'it': 'Premi il pulsante per scegliere un utente.',
  975. },
  976. 'search_button': {
  977. 'en': "🔍 Search for user",
  978. 'it': "🔍 Cerca utente",
  979. },
  980. 'select_user': {
  981. 'en': 'Which user would you like to talk to?',
  982. 'it': 'Con quale utente vorresti parlare?',
  983. },
  984. 'user_not_found': {
  985. 'en': (
  986. "Sory, but no user matches your query for\n"
  987. "<code>{q}</code>"
  988. ),
  989. 'it': (
  990. "Spiacente, ma nessun utente corrisponde alla ricerca per\n"
  991. "<code>{q}</code>"
  992. ),
  993. },
  994. 'instructions': {
  995. 'en': (
  996. 'Write a part of name, surname or username of the user you want '
  997. 'to talk to.'
  998. ),
  999. 'it': (
  1000. 'Scrivi una parte del nome, cognome o username dell\'utente con '
  1001. 'cui vuoi parlare.'
  1002. ),
  1003. },
  1004. 'stop': {
  1005. 'en': 'End session',
  1006. 'it': 'Termina la sessione',
  1007. },
  1008. 'user_session_ended': {
  1009. 'en': 'Session with admin {u} ended.',
  1010. 'it': 'Sessione terminata con l\'amministratore {u}.',
  1011. },
  1012. 'user_warning': {
  1013. 'en': (
  1014. '{u}, admin of this bot, wants to talk to you.\n'
  1015. 'Until this session is ended by {u}, your messages will be '
  1016. 'forwarded to each other.'
  1017. ),
  1018. 'it': (
  1019. '{u}, amministratore di questo bot, vuole parlare con te.\n'
  1020. 'Finché non chiuderà la connessione, i messaggi che scriverai '
  1021. 'qui saranno inoltrati a {u}, e ti inoltrerò i suoi.'
  1022. ),
  1023. },
  1024. }
  1025. default_unknown_command_message = {
  1026. 'en': "Unknown command! Touch /help to read the guide and available commands.",
  1027. 'it': "Comando sconosciuto! Fai /help per leggere la guida e i comandi."
  1028. }
  1029. default_useful_tools_messages = {
  1030. 'calculate_command': {
  1031. 'description': {
  1032. 'en': "Do calculations",
  1033. 'it': "Calcola",
  1034. },
  1035. 'help_section': None,
  1036. 'instructions': {
  1037. 'en': "🔢 <b>Calculator</b> 🧮\n\n"
  1038. "Enter an algebraic expression after /calc to get its "
  1039. "result, or use the command in reply to a message containing "
  1040. "an expression, or use the keyboard below.\n\n"
  1041. "- <code>ℹ️</code>: show information about special keys\n",
  1042. 'it': "🔢 <b>Calcolatrice</b> 🧮\n\n"
  1043. "Inserisci un'espressione algebrica dopo /calcola per "
  1044. "ottenerne il risultato, oppure usa il comando in risposta, "
  1045. "o ancora usa la tastiera qui sotto.\n\n"
  1046. "- <code>ℹ️</code>: mostra informazioni sui tasti speciali\n",
  1047. },
  1048. 'invalid_expression': {
  1049. 'en': "Invalid expression: {error}",
  1050. 'it': "Espressione non valida: {error}",
  1051. },
  1052. 'language_labelled_commands': {
  1053. 'en': "calculate",
  1054. 'it': "calcola",
  1055. },
  1056. 'message_input': {
  1057. 'en': "🔢 <b>Calculator</b> 🧮\n\n"
  1058. "<i>Enter an expression</i>",
  1059. 'it': "🔢 <b>Calcolatrice</b> 🧮\n\n"
  1060. "<i>Mandami l'espressione</i>",
  1061. },
  1062. 'special_keys': {
  1063. 'en': "<b>Special keys</b>\n"
  1064. "- <code>**</code>: exponentiation\n"
  1065. "- <code>//</code>: floor division\n"
  1066. "- <code>mod</code>: modulus (remainder of division)\n"
  1067. "- <code>MR</code>: result of last expression\n"
  1068. "- <code>ℹ️</code>: show this help message\n"
  1069. "- <code>💬</code>: write your expression in a message\n"
  1070. "- <code>⬅️</code>: delete last character\n"
  1071. "- <code>✅</code>: start a new line (and a new expression)\n",
  1072. 'it': "<b>Tasti speciali</b>\n"
  1073. "- <code>**</code>: elevamento a potenza\n"
  1074. "- <code>//</code>: quoziente della divisione\n"
  1075. "- <code>mod</code>: resto della divisione\n"
  1076. "- <code>MR</code>: risultato dell'espressione precedente\n"
  1077. "- <code>ℹ️</code>: mostra questo messaggio\n"
  1078. "- <code>💬</code>: invia un messaggio con l'espressione\n"
  1079. "- <code>⬅️</code>: cancella ultimo carattere\n"
  1080. "- <code>✅</code>: vai a capo (inizia una nuova espressione)\n",
  1081. },
  1082. 'use_buttons': {
  1083. 'en': "Use buttons to enter an algebraic expression.\n\n"
  1084. "<i>The input will be displayed after you stop typing for a "
  1085. "while.</i>",
  1086. 'it': "Usa i pulsanti per comporre un'espressione algebrica.\n\n"
  1087. "<i>L'espressione verrà mostrata quando smetterai di "
  1088. "digitare per un po'.</i>",
  1089. },
  1090. 'result': {
  1091. 'en': "🔢 <b>Calculator</b> 🧮\n\n"
  1092. "<i>Expressions evaluation:</i>\n\n"
  1093. "{expressions}",
  1094. 'it': "🔢 <b>Calcolatrice</b> 🧮\n\n"
  1095. "<i>Risultato delle espresisoni:</i>\n\n"
  1096. "{expressions}",
  1097. },
  1098. },
  1099. 'info_command': {
  1100. 'description': {
  1101. 'en': "Use this command in reply to get information about a message",
  1102. 'it': "Usa questo comando in risposta per ottenere informazioni "
  1103. "su un messaggio",
  1104. },
  1105. 'help_section': None,
  1106. 'instructions': {
  1107. 'en': "Use this command in reply to a message to get information "
  1108. "about it.",
  1109. 'it': "Usa questo comando in risposta per ottenere informazioni "
  1110. "su un messaggio.",
  1111. },
  1112. 'result': {
  1113. 'en': "<i>Here is the information about the selected "
  1114. "message:</i>\n\n"
  1115. "<code>{info}</code>",
  1116. 'it': "<i>Ecco le informazioni sul messaggio selezionato:</i>\n\n"
  1117. "<code>{info}</code>",
  1118. },
  1119. },
  1120. 'length_command': {
  1121. 'description': {
  1122. 'en': "Use this command in reply to a message to get its length",
  1123. 'it': "Usa questo comando in risposta a un messaggio per sapere "
  1124. "quanti caratteri contenga",
  1125. },
  1126. 'help_section': {
  1127. 'description': {
  1128. 'en': "Use the /length command in reply to a message to get "
  1129. "its length.\n"
  1130. "Beware that emojis may count as multiple characters.",
  1131. 'it': "Usa il comando /caratteri in risposta a un messaggio "
  1132. "per sapere quanti caratteri contenga.\n"
  1133. "Attenzione alle emoji, che contano come più caratteri.",
  1134. },
  1135. 'label': {
  1136. 'en': "Length #️⃣",
  1137. 'it': "Caratteri #️⃣"
  1138. },
  1139. 'name': "length",
  1140. },
  1141. 'instructions': {
  1142. 'en': "Use this command in reply to a message to get its length.",
  1143. 'it': "Usa questo comando in risposta a un messaggio per sapere "
  1144. "quanti caratteri contenga.",
  1145. },
  1146. 'language_labelled_commands': {
  1147. 'en': "length",
  1148. 'it': "caratteri",
  1149. },
  1150. 'result': {
  1151. 'en': "<i>According to my calculations, this message is "
  1152. "</i><code>{n}</code><i> characters long.</i>",
  1153. 'it': "<i>Questo messaggio contiene </i><code>{n}</code><i> "
  1154. "caratteri secondo i miei calcoli.</i>",
  1155. },
  1156. },
  1157. 'ping_command': {
  1158. 'description': {
  1159. 'en': "Check if bot is online",
  1160. 'it': "Verifica se il bot è online",
  1161. },
  1162. },
  1163. 'when_command': {
  1164. 'description': {
  1165. 'en': "Use this command in reply to get information about a message",
  1166. 'it': "Usa questo comando in risposta per ottenere informazioni "
  1167. "su un messaggio",
  1168. },
  1169. 'help_section': None,
  1170. 'forwarded_message': {
  1171. 'en': "<b>— Original message —</b>",
  1172. 'it': "<b>— Messaggio originale —</b>",
  1173. },
  1174. 'instructions': {
  1175. 'en': "Use this command in reply to a message to get its original "
  1176. "sending time.",
  1177. 'it': "Usa questo comando in risposta per ottenere l'ora di invio "
  1178. "di un messaggio.",
  1179. },
  1180. 'language_labelled_commands': {
  1181. 'en': "when",
  1182. 'it': "quando",
  1183. },
  1184. 'who_when': {
  1185. 'en': "👤 {who}\n"
  1186. "🗓 {when:%Y-%m-%d ore %H:%M:%S}",
  1187. 'it': "👤 {who}\n"
  1188. "🗓 {when:%Y-%m-%d ore %H:%M:%S}",
  1189. },
  1190. }
  1191. }