diff --git a/strings.py b/strings.py
index e1470327..1cc8726b 100644
--- a/strings.py
+++ b/strings.py
@@ -3,7 +3,7 @@ from db import MatchmakingStatus
class SafeDict(dict):
def __missing__(self, key):
- return '' + key + '
'
+ return key
def safely_format_string(string, **kwargs):
@@ -16,7 +16,7 @@ class TELEGRAM:
class ERRORS:
CRITICAL_ERROR = "☢ ERRORE CRITICO!\nIl bot ha ignorato il comando.\nUna segnalazione di errore è stata automaticamente mandata a @Steffo.\n\nDettagli dell'errore:\n
{exc_info}" - TELEGRAM_NOT_LINKED = "⚠ Il tuo account Telegram non è registrato a Royalnet! Registrati con `/register@royalgamesbot
/register (NomeUtenteRoyalnet)
."
PONG = "🏓 Pong!"
@@ -27,7 +27,7 @@ class LINKING:
SUCCESSFUL = "✅ Collegamento riuscito!"
class ERRORS:
- INVALID_SYNTAX = "⚠ Non hai specificato un username!\nSintassi del comando: /register {username}
"
+ INVALID_SYNTAX = "⚠ Non hai specificato un username!\nSintassi del comando: /register (NomeUtenteRoyalnet)
"
NOT_FOUND = "⚠ Non esiste nessun account Royalnet con quel nome."
ALREADY_EXISTING = "⚠ Questo account è già collegato a un account Royalnet."
@@ -71,7 +71,7 @@ class MATCHMAKING:
}
class ERRORS:
- INVALID_SYNTAX = "⚠ Sintassi del comando errata.\nSintassi: /mm [minplayers-][maxplayers] per {gamename} \\n[descrizione]" + INVALID_SYNTAX = "⚠ Sintassi del comando errata.\nSintassi:
/mm [minplayers-][maxplayers] per (gamename) \\n[descrizione]" NOT_ADMIN = "⚠ Non sei il creatore di questo match!" MATCH_CLOSED = "⚠ Il matchmaking per questa partita è terminato!" UNAUTHORIZED = "⚠ Non sono autorizzato a inviare messaggi a {mention}.\nPer piacere, {mention}, inviami un messaggio in privata!" @@ -82,4 +82,5 @@ class DIARIOSEARCH: HEADER = "ℹ️ Risultati della ricerca di {term}:\n" class ERRORS: - INVALID_SYNTAX = "⚠ Non hai specificato un termine da cercare!\nSintassi:
/search {termine}" \ No newline at end of file + INVALID_SYNTAX = "⚠ Non hai specificato un termine da cercare!\nSintassi:
/{command} (termine)" + RESULTS_TOO_LONG = "⚠ Sono presenti troppi risultati da visualizzare! Prova a restringere la ricerca." \ No newline at end of file diff --git a/telegrambot.py b/telegrambot.py index 82e9ff31..3a1974eb 100644 --- a/telegrambot.py +++ b/telegrambot.py @@ -10,7 +10,7 @@ from sqlalchemy.sql import text from telegram import Bot, Update, InlineKeyboardMarkup, InlineKeyboardButton # noinspection PyPackageRequirements from telegram.ext import Updater, CommandHandler, CallbackQueryHandler -from telegram.error import TimedOut, Unauthorized, BadRequest +from telegram.error import TimedOut, Unauthorized, BadRequest, TelegramError import dice import sys import os @@ -298,12 +298,18 @@ def cmd_vote(bot: Bot, update: Update): def generate_search_message(term, entries): msg = s(strings.DIARIOSEARCH.HEADER, term=term) - for entry in entries[:5]: - msg += f'#{entry.id} di {entry.author or "Anonimo"}\n{entry.text}\n\n' + if len(entries) < 100: + for entry in entries[:5]: + msg += f'#{entry.id} di {entry.author or "Anonimo"}\n{entry.text}\n\n' if len(entries) > 5: msg += "I termini comapiono anche nelle righe:\n" for entry in entries[5:]: msg += f'#{entry.id} ' + else: + for entry in entries[:100]: + msg += f'#{entry.id} ' + for entry in entries[100:]: + msg += f"#{entry.id} " return msg @@ -314,7 +320,7 @@ def cmd_search(bot: Bot, update: Update): try: query = update.message.text.split(" ", 1)[1] except IndexError: - bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.INVALID_SYNTAX)) + bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.INVALID_SYNTAX, command="search"), parse_mode="HTML") return query = query.replace('%', '\\%').replace('_', '\\_') entries = session.query(db.Diario)\ @@ -323,7 +329,7 @@ def cmd_search(bot: Bot, update: Update): r"(?:[\s\.,:;!?\"'>\})\]]+|$)"))\ .order_by(db.Diario.id.desc())\ .all() - bot.send_message(update.message.chat.id, generate_search_message(f"query", entries)) + bot.send_message(update.message.chat.id, generate_search_message(f"{query}", entries), parse_mode="HTML") finally: session.close() @@ -335,11 +341,14 @@ def cmd_regex(bot: Bot, update: Update): try: query = update.message.text.split(" ", 1)[1] except IndexError: - bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.INVALID_SYNTAX)) + bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.INVALID_SYNTAX, command="regex"), parse_mode="HTML") return query = query.replace('%', '\\%').replace('_', '\\_') entries = session.query(db.Diario).filter(db.Diario.text.op("~*")(query)).order_by(db.Diario.id.desc()).all() - bot.send_message(update.message.chat.id, generate_search_message(f"
query
", entries))
+ try:
+ bot.send_message(update.message.chat.id, generate_search_message(f"{query}
", entries), parse_mode="HTML")
+ except (BadRequest, TelegramError):
+ bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.RESULTS_TOO_LONG))
finally:
session.close()
@@ -781,6 +790,7 @@ def process(arg_discord_connection):
u.dispatcher.add_handler(CommandHandler("matchmaking", cmd_mm))
u.dispatcher.add_handler(CommandHandler("search", cmd_search))
u.dispatcher.add_handler(CommandHandler("regex", cmd_regex))
+ u.dispatcher.add_handler(CommandHandler("start", cmd_start))
u.dispatcher.add_handler(CallbackQueryHandler(on_callback_query))
logger.info("Handlers registered.")
u.start_polling()