From 91a365067ccbd84213d409a3d01b8e67b626197b Mon Sep 17 00:00:00 2001 From: Rykov7 Date: Sun, 2 Jun 2024 13:05:31 +0300 Subject: [PATCH] Fix logging, fix shelve .db extensions --- src/commands.py | 2 +- src/config.py | 4 +++- src/report.py | 9 ++++----- src/stan.py | 33 +++++++++++++++++---------------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/commands.py b/src/commands.py index cf4f44e..32168e1 100644 --- a/src/commands.py +++ b/src/commands.py @@ -163,7 +163,7 @@ async def translate_layout(message: types.Message): await bot.send_message(message.chat.id, message.reply_to_message.text.translate(ENG_RUS_TABLE)) -@bot.message_handler(commands=["quote", "цитата"]) +@bot.message_handler(commands=["q", "quote", "цитата"]) async def stan_speak(message: types.Message): logging.info( LOG_COMM diff --git a/src/config.py b/src/config.py index abc0794..1e643c1 100644 --- a/src/config.py +++ b/src/config.py @@ -20,5 +20,7 @@ RULES_URL = os.environ.get("rules_url", "https://telegra.ph/pythonchatru-07-07") if not is_url_reachable(RULES_URL): raise LookupError(f"STAN rules url({RULES_URL}) is not reachable") -logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S") +logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S", force=True) logger.setLevel(logging.ERROR) + +logging.critical(f'LOGGER {logging.getLogger()}: ') \ No newline at end of file diff --git a/src/report.py b/src/report.py index 9eb08cd..542a8a1 100644 --- a/src/report.py +++ b/src/report.py @@ -3,7 +3,6 @@ import logging import os import random import shelve -from pathlib import Path from .config import ROLLBACK from .constants import DATA, types @@ -29,9 +28,9 @@ def create_report_text(chat_id): report = "" top_users = "" flooders = [] - spammer_icons = ('🐷', '🐒', '🐔') + spammer_icons = ('🐷', '🐒', '🐔', '👽') current_spammer_face = random.choice(spammer_icons) - if os.path.exists(f"{DATA}{chat_id}.db"): + if os.path.exists(f"{DATA}{chat_id}"): with shelve.open(f"{DATA}{chat_id}", writeback=True) as s: for user_id in ROLLBACK: if user_id in s["Messages"] and s["Messages"][user_id]["Count"] > 10: @@ -68,7 +67,7 @@ def create_report_text(chat_id): """ return report else: - return f"Невозможно получить статистику.\n{DATA}{chat_id}.db не существует, возможно запрос в приватном чате. " + return f"Невозможно получить статистику.\n{DATA}{chat_id} не существует, возможно запрос в приватном чате. " def reset_report_stats(chat_id): @@ -84,7 +83,7 @@ def reset_report_stats(chat_id): def update_stats(message: types.Message): - if not Path(f"{DATA}{message.chat.id}.db").exists(): + if not os.path.exists(f"{DATA}{message.chat.id}"): reset_report_stats(message.chat.id) with shelve.open(f"{DATA}{message.chat.id}", writeback=True) as shelve_db: if "Messages" not in shelve_db: diff --git a/src/stan.py b/src/stan.py index 02a9b2c..8a44740 100644 --- a/src/stan.py +++ b/src/stan.py @@ -73,22 +73,6 @@ async def add_stan_quote(message: types.Message): await bot.send_message(message.chat.id, f"⛔️ Не добавил, есть токое: {quote}", parse_mode='Markdown') -@bot.message_handler(func=is_white_id, commands=["add_spam"]) -async def add_spam_handler(message: types.Message): - if message.reply_to_message and message.reply_to_message.text: - quote = (message.quote and message.quote.text) or message.reply_to_message.text - logging.error(f'{session.query(BadWord).filter_by(word=quote).first()}') - if not session.query(BadWord).filter_by(word=quote).first(): - add_spam(message.chat.id, quote) - ok_message = await bot.send_message(message.chat.id, f"⭐️ Добавил в спам: {quote}", parse_mode='Markdown') - await bot.delete_message(message.chat.id, message.id) - await asyncio.sleep(3) - await bot.delete_message(message.chat.id, ok_message.id) - logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.full_name, f'[SPAM] {message.reply_to_message.text}')) - else: - await bot.send_message(message.chat.id, f"⛔️ Не добавил, есть токое: {quote}", parse_mode='Markdown') - - @bot.message_handler(func=is_white_id, commands=["remove"]) async def remove_stan_quote(message: types.Message): if message.reply_to_message and message.reply_to_message.text: @@ -103,6 +87,23 @@ async def remove_stan_quote(message: types.Message): else: await bot.send_message(message.chat.id, f"⛔️ Нет такого: {quote}", parse_mode='Markdown') + +@bot.message_handler(func=is_white_id, commands=["add_spam"]) +async def add_spam_handler(message: types.Message): + if message.reply_to_message and message.reply_to_message.text: + quote = (message.quote and message.quote.text) or message.reply_to_message.text + logging.error(f'{session.query(BadWord).filter_by(word=quote).first()}') + if not session.query(BadWord).filter_by(word=quote).first(): + add_spam(message.chat.id, quote) + ok_message = await bot.send_message(message.chat.id, f"⭐️🤬 Добавил в спам: {quote}", parse_mode='Markdown') + await bot.delete_message(message.chat.id, message.id) + await asyncio.sleep(3) + await bot.delete_message(message.chat.id, ok_message.id) + logging.info(LOG_COMM % (message.chat.title, message.from_user.id, message.from_user.full_name, f'[SPAM] {message.reply_to_message.text}')) + else: + await bot.send_message(message.chat.id, f"⛔️🤬 Не добавил, есть такое в спаме: {quote}", parse_mode='Markdown') + + @bot.message_handler(func=is_white_id, commands=["info"]) async def get_user_info(message: types.Message): if replied_message := message.reply_to_message: