mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Fix /search and /regex
This commit is contained in:
parent
ba507ce945
commit
d118fddf13
2 changed files with 23 additions and 12 deletions
11
strings.py
11
strings.py
|
@ -3,7 +3,7 @@ from db import MatchmakingStatus
|
||||||
|
|
||||||
class SafeDict(dict):
|
class SafeDict(dict):
|
||||||
def __missing__(self, key):
|
def __missing__(self, key):
|
||||||
return '<code>' + key + '</code>'
|
return key
|
||||||
|
|
||||||
|
|
||||||
def safely_format_string(string, **kwargs):
|
def safely_format_string(string, **kwargs):
|
||||||
|
@ -16,7 +16,7 @@ class TELEGRAM:
|
||||||
|
|
||||||
class ERRORS:
|
class ERRORS:
|
||||||
CRITICAL_ERROR = "☢ <b>ERRORE CRITICO!</b>\nIl bot ha ignorato il comando.\nUna segnalazione di errore è stata automaticamente mandata a @Steffo.\n\nDettagli dell'errore:\n<pre>{exc_info}</pre>"
|
CRITICAL_ERROR = "☢ <b>ERRORE CRITICO!</b>\nIl bot ha ignorato il comando.\nUna segnalazione di errore è stata automaticamente mandata a @Steffo.\n\nDettagli dell'errore:\n<pre>{exc_info}</pre>"
|
||||||
TELEGRAM_NOT_LINKED = "⚠ Il tuo account Telegram non è registrato a Royalnet! Registrati con `/register@royalgamesbot <nomeutenteryg>`."
|
TELEGRAM_NOT_LINKED = "⚠ Il tuo account Telegram non è registrato a Royalnet! Registrati con <code>/register (NomeUtenteRoyalnet)</code>."
|
||||||
|
|
||||||
|
|
||||||
PONG = "🏓 Pong!"
|
PONG = "🏓 Pong!"
|
||||||
|
@ -27,7 +27,7 @@ class LINKING:
|
||||||
SUCCESSFUL = "✅ Collegamento riuscito!"
|
SUCCESSFUL = "✅ Collegamento riuscito!"
|
||||||
|
|
||||||
class ERRORS:
|
class ERRORS:
|
||||||
INVALID_SYNTAX = "⚠ Non hai specificato un username!\nSintassi del comando: <code>/register {username}</code>"
|
INVALID_SYNTAX = "⚠ Non hai specificato un username!\nSintassi del comando: <code>/register (NomeUtenteRoyalnet)</code>"
|
||||||
NOT_FOUND = "⚠ Non esiste nessun account Royalnet con quel nome."
|
NOT_FOUND = "⚠ Non esiste nessun account Royalnet con quel nome."
|
||||||
ALREADY_EXISTING = "⚠ Questo account è già collegato a un account Royalnet."
|
ALREADY_EXISTING = "⚠ Questo account è già collegato a un account Royalnet."
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class MATCHMAKING:
|
||||||
}
|
}
|
||||||
|
|
||||||
class ERRORS:
|
class ERRORS:
|
||||||
INVALID_SYNTAX = "⚠ Sintassi del comando errata.\nSintassi: <pre>/mm [minplayers-][maxplayers] per {gamename} \\n[descrizione]</pre>"
|
INVALID_SYNTAX = "⚠ Sintassi del comando errata.\nSintassi: <pre>/mm [minplayers-][maxplayers] per (gamename) \\n[descrizione]</pre>"
|
||||||
NOT_ADMIN = "⚠ Non sei il creatore di questo match!"
|
NOT_ADMIN = "⚠ Non sei il creatore di questo match!"
|
||||||
MATCH_CLOSED = "⚠ Il matchmaking per questa partita è terminato!"
|
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!"
|
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"
|
HEADER = "ℹ️ Risultati della ricerca di {term}:\n"
|
||||||
|
|
||||||
class ERRORS:
|
class ERRORS:
|
||||||
INVALID_SYNTAX = "⚠ Non hai specificato un termine da cercare!\nSintassi: <pre>/search {termine}</pre>"
|
INVALID_SYNTAX = "⚠ Non hai specificato un termine da cercare!\nSintassi: <pre>/{command} (termine)</pre>"
|
||||||
|
RESULTS_TOO_LONG = "⚠ Sono presenti troppi risultati da visualizzare! Prova a restringere la ricerca."
|
|
@ -10,7 +10,7 @@ from sqlalchemy.sql import text
|
||||||
from telegram import Bot, Update, InlineKeyboardMarkup, InlineKeyboardButton
|
from telegram import Bot, Update, InlineKeyboardMarkup, InlineKeyboardButton
|
||||||
# noinspection PyPackageRequirements
|
# noinspection PyPackageRequirements
|
||||||
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
|
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 dice
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
@ -298,12 +298,18 @@ def cmd_vote(bot: Bot, update: Update):
|
||||||
|
|
||||||
def generate_search_message(term, entries):
|
def generate_search_message(term, entries):
|
||||||
msg = s(strings.DIARIOSEARCH.HEADER, term=term)
|
msg = s(strings.DIARIOSEARCH.HEADER, term=term)
|
||||||
|
if len(entries) < 100:
|
||||||
for entry in entries[:5]:
|
for entry in entries[:5]:
|
||||||
msg += f'<a href="https://ryg.steffo.eu/diario#entry-{entry.id}">#{entry.id}</a> di {entry.author or "Anonimo"}\n{entry.text}\n\n'
|
msg += f'<a href="https://ryg.steffo.eu/diario#entry-{entry.id}">#{entry.id}</a> di <i>{entry.author or "Anonimo"}</i>\n{entry.text}\n\n'
|
||||||
if len(entries) > 5:
|
if len(entries) > 5:
|
||||||
msg += "I termini comapiono anche nelle righe:\n"
|
msg += "I termini comapiono anche nelle righe:\n"
|
||||||
for entry in entries[5:]:
|
for entry in entries[5:]:
|
||||||
msg += f'<a href="https://ryg.steffo.eu/diario#entry-{entry.id}">#{entry.id}</a> '
|
msg += f'<a href="https://ryg.steffo.eu/diario#entry-{entry.id}">#{entry.id}</a> '
|
||||||
|
else:
|
||||||
|
for entry in entries[:100]:
|
||||||
|
msg += f'<a href="https://ryg.steffo.eu/diario#entry-{entry.id}">#{entry.id}</a> '
|
||||||
|
for entry in entries[100:]:
|
||||||
|
msg += f"#{entry.id} "
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
||||||
|
@ -314,7 +320,7 @@ def cmd_search(bot: Bot, update: Update):
|
||||||
try:
|
try:
|
||||||
query = update.message.text.split(" ", 1)[1]
|
query = update.message.text.split(" ", 1)[1]
|
||||||
except IndexError:
|
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
|
return
|
||||||
query = query.replace('%', '\\%').replace('_', '\\_')
|
query = query.replace('%', '\\%').replace('_', '\\_')
|
||||||
entries = session.query(db.Diario)\
|
entries = session.query(db.Diario)\
|
||||||
|
@ -323,7 +329,7 @@ def cmd_search(bot: Bot, update: Update):
|
||||||
r"(?:[\s\.,:;!?\"'>\})\]]+|$)"))\
|
r"(?:[\s\.,:;!?\"'>\})\]]+|$)"))\
|
||||||
.order_by(db.Diario.id.desc())\
|
.order_by(db.Diario.id.desc())\
|
||||||
.all()
|
.all()
|
||||||
bot.send_message(update.message.chat.id, generate_search_message(f"<b>query</b>", entries))
|
bot.send_message(update.message.chat.id, generate_search_message(f"<b>{query}</b>", entries), parse_mode="HTML")
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
@ -335,11 +341,14 @@ def cmd_regex(bot: Bot, update: Update):
|
||||||
try:
|
try:
|
||||||
query = update.message.text.split(" ", 1)[1]
|
query = update.message.text.split(" ", 1)[1]
|
||||||
except IndexError:
|
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
|
return
|
||||||
query = query.replace('%', '\\%').replace('_', '\\_')
|
query = query.replace('%', '\\%').replace('_', '\\_')
|
||||||
entries = session.query(db.Diario).filter(db.Diario.text.op("~*")(query)).order_by(db.Diario.id.desc()).all()
|
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"<code>query</code>", entries))
|
try:
|
||||||
|
bot.send_message(update.message.chat.id, generate_search_message(f"<code>{query}</code>", entries), parse_mode="HTML")
|
||||||
|
except (BadRequest, TelegramError):
|
||||||
|
bot.send_message(update.message.chat.id, s(strings.DIARIOSEARCH.ERRORS.RESULTS_TOO_LONG))
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
@ -781,6 +790,7 @@ def process(arg_discord_connection):
|
||||||
u.dispatcher.add_handler(CommandHandler("matchmaking", cmd_mm))
|
u.dispatcher.add_handler(CommandHandler("matchmaking", cmd_mm))
|
||||||
u.dispatcher.add_handler(CommandHandler("search", cmd_search))
|
u.dispatcher.add_handler(CommandHandler("search", cmd_search))
|
||||||
u.dispatcher.add_handler(CommandHandler("regex", cmd_regex))
|
u.dispatcher.add_handler(CommandHandler("regex", cmd_regex))
|
||||||
|
u.dispatcher.add_handler(CommandHandler("start", cmd_start))
|
||||||
u.dispatcher.add_handler(CallbackQueryHandler(on_callback_query))
|
u.dispatcher.add_handler(CallbackQueryHandler(on_callback_query))
|
||||||
logger.info("Handlers registered.")
|
logger.info("Handlers registered.")
|
||||||
u.start_polling()
|
u.start_polling()
|
||||||
|
|
Loading…
Reference in a new issue