From f66f8421c38cec38bd1d3fdfacc0c0d167a09e3c Mon Sep 17 00:00:00 2001 From: profitroll Date: Mon, 3 Apr 2023 16:03:33 +0200 Subject: [PATCH] This commit closes #36 --- locale/uk.json | 4 ++-- modules/callbacks/warnings.py | 26 ++++++++++++++++++++++++++ modules/commands/warnings.py | 11 +++++++++-- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/locale/uk.json b/locale/uk.json index f201d9c..56acec9 100644 --- a/locale/uk.json +++ b/locale/uk.json @@ -76,8 +76,8 @@ "application_invalid_syntax": "Неправильний синтаксис!\nТреба: `/application ID/NAME/USERNAME`", "warned": "Попереджено **{0}** (`{1}`) про порушення правил", "warned_reason": "Попереджено **{0}** (`{1}`)\n\n**Причина:**\n{2}", - "warnings_1": "Користувач **{0}** (`{1}`) має **{2}** попередження\n\nОбрати та зняти попередження:\n`/warnings {3} revoke`", - "warnings_2": "Користувач **{0}** (`{1}`) має **{2}** попереджень\n\nОбрати та зняти попередження:\n`/warnings {3} revoke`", + "warnings_1": "Користувач **{0}** (`{1}`) має **{2}** попередження\n\n{3}\n\nОбрати та зняти попередження:\n`/warnings {4} revoke`", + "warnings_2": "Користувач **{0}** (`{1}`) має **{2}** попереджень\n\n{3}\n\nОбрати та зняти попередження:\n`/warnings {4} revoke`", "warnings_all": "**Список попереджень**\n\n{0}\n\nДля перегляду попереджень окремо взятого користувача слід використовувати `/warnings ID/NAME/USERNAME`", "warnings_entry": "• {0} (`{1}`)\n Попереджень: {2}", "warnings_empty": "Щось тут порожньо...\nЗ іншого боку, це добре!", diff --git a/modules/callbacks/warnings.py b/modules/callbacks/warnings.py index e1aa014..93b5cd0 100644 --- a/modules/callbacks/warnings.py +++ b/modules/callbacks/warnings.py @@ -3,6 +3,7 @@ from app import app from pyrogram import filters from pyrogram.types import CallbackQuery from pyrogram.client import Client +from pykeyboard import InlineKeyboard, InlineButton from modules.utils import configGet, locale from modules.database import col_warnings from bson import ObjectId @@ -31,3 +32,28 @@ async def callback_query_warning_revoke(app: Client, clb: CallbackQuery): warning["user"], warning["date"].strftime("%d.%m.%Y") ), ) + target_id = warning["user"] + if col_warnings.count_documents({"user": target_id, "active": True}) == 0: + await clb.edit_message_text( + locale("no_warnings", "message", locale=clb.from_user).format( + target_id, target_id + ) + ) + return + keyboard = InlineKeyboard() + buttons = [] + warnings = [] + for index, warning in enumerate( + list(col_warnings.find({"user": target_id, "active": True})) + ): + warnings.append( + f'{index+1}. {warning["date"].strftime("%d.%m.%Y, %H:%M")}\n Адмін: {warning["admin"]}\n Причина: {warning["reason"]}' + ) + buttons.append(InlineButton(str(index + 1), f'w_rev_{str(warning["_id"])}')) + keyboard.add(*buttons) + await clb.edit_message_text( + locale("warnings_revoke", "message", locale=clb.from_user).format( + target_id, "\n".join(warnings) + ), + ) + await clb.edit_message_reply_markup(reply_markup=keyboard) diff --git a/modules/commands/warnings.py b/modules/commands/warnings.py index f533ccd..54bafa6 100644 --- a/modules/commands/warnings.py +++ b/modules/commands/warnings.py @@ -123,17 +123,24 @@ async def cmd_warnings(app: Client, msg: Message): quote=should_quote(msg), ) else: + warnings = [] + for index, warning in enumerate( + list(col_warnings.find({"user": target_id, "active": True})) + ): + warnings.append( + f'{index+1}. {warning["date"].strftime("%d.%m.%Y, %H:%M")}\n Адмін: {warning["admin"]}\n Причина: {warning["reason"]}' + ) if warns <= 5: await msg.reply_text( locale("warnings_1", "message", locale=msg.from_user).format( - target_name, target_id, warns, target_id + target_name, target_id, warns, "\n".join(warnings), target_id ), quote=should_quote(msg), ) else: await msg.reply_text( locale("warnings_2", "message", locale=msg.from_user).format( - target_name, target_id, warns, target_id + target_name, target_id, warns, "\n".join(warnings), target_id ), quote=should_quote(msg), )