2023-04-02 23:17:54 +03:00
|
|
|
from datetime import datetime
|
|
|
|
from app import app
|
|
|
|
from pyrogram import filters
|
|
|
|
from pyrogram.types import CallbackQuery
|
|
|
|
from pyrogram.client import Client
|
2023-04-03 17:03:33 +03:00
|
|
|
from pykeyboard import InlineKeyboard, InlineButton
|
2023-04-03 16:47:17 +03:00
|
|
|
from modules.utils import configGet, locale
|
2023-04-02 23:17:54 +03:00
|
|
|
from modules.database import col_warnings
|
|
|
|
from bson import ObjectId
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_callback_query(filters.regex("w_rev_[\s\S]*"))
|
|
|
|
async def callback_query_warning_revoke(app: Client, clb: CallbackQuery):
|
|
|
|
warning = col_warnings.find_one({"_id": ObjectId(str(clb.data).split("_")[2])})
|
|
|
|
if warning is None:
|
|
|
|
await clb.answer(
|
|
|
|
text=locale("warning_not_found", "callback", locale=clb.from_user),
|
|
|
|
show_alert=True,
|
|
|
|
)
|
|
|
|
return
|
|
|
|
col_warnings.update_one(
|
|
|
|
{"_id": warning["_id"]},
|
|
|
|
{"$set": {"active": False, "revoke_date": datetime.now()}},
|
|
|
|
)
|
|
|
|
await clb.answer(
|
|
|
|
text=locale("warning_revoked", "callback", locale=clb.from_user).format(),
|
|
|
|
show_alert=True,
|
|
|
|
)
|
2023-04-03 16:47:17 +03:00
|
|
|
await app.send_message(
|
|
|
|
configGet("admin", "groups"),
|
|
|
|
locale("warning_revoked_auto", "message").format(
|
|
|
|
warning["user"], warning["date"].strftime("%d.%m.%Y")
|
|
|
|
),
|
|
|
|
)
|
2023-04-03 17:03:33 +03:00
|
|
|
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)
|