2022-12-15 14:52:08 +02:00
from datetime import datetime
2022-12-05 19:49:51 +02:00
from app import app
2022-12-27 14:36:54 +02:00
from pyrogram . types import InlineKeyboardMarkup , InlineKeyboardButton , CallbackQuery
2022-12-05 19:53:09 +02:00
from pyrogram import filters
2022-12-27 14:36:54 +02:00
from pyrogram . client import Client
2022-12-15 14:52:08 +02:00
from classes . holo_user import HoloUser
from modules . utils import configGet , locale , logWrite
from modules . database import col_tmp , col_applications
2022-12-17 01:58:33 +02:00
from modules . commands . rules import DefaultRulesMarkup
2022-12-05 19:49:51 +02:00
# Callbacks application ========================================================================================================
2022-12-06 11:26:22 +02:00
@app.on_callback_query ( filters . regex ( " sub_yes_[ \ s \ S]* " ) )
2022-12-27 14:36:54 +02:00
async def callback_query_accept ( app : Client , clb : CallbackQuery ) :
2022-12-05 19:49:51 +02:00
fullclb = clb . data . split ( " _ " )
2022-12-15 14:52:08 +02:00
holo_user = HoloUser ( int ( fullclb [ 2 ] ) )
2022-12-05 19:49:51 +02:00
2023-01-04 20:14:02 +02:00
await app . send_message ( configGet ( " admin " , " groups " ) , locale ( " approved_by " , " message " ) . format ( clb . from_user . first_name , holo_user . id ) , disable_notification = True )
2022-12-15 14:52:08 +02:00
logWrite ( f " User { holo_user . id } got approved by { clb . from_user . id } " )
2022-12-05 19:49:51 +02:00
need_link = True
2023-01-04 20:59:09 +02:00
async for member in app . get_chat_members ( configGet ( " users " , " groups " ) ) :
2022-12-15 14:52:08 +02:00
if member . user . id == holo_user . id :
2022-12-05 19:49:51 +02:00
need_link = False
if need_link :
2023-01-04 20:59:09 +02:00
link = await app . create_chat_invite_link ( configGet ( " users " , " groups " ) , name = f " Invite for { holo_user . id } " , member_limit = 1 ) #, expire_date=datetime.now()+timedelta(days=1))
2022-12-05 19:49:51 +02:00
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " read_rules " , " message " , locale = holo_user ) )
2022-12-05 19:49:51 +02:00
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " rules_msg " , locale = holo_user ) , disable_web_page_preview = True , reply_markup = DefaultRulesMarkup ( holo_user ) . keyboard )
2022-12-05 19:49:51 +02:00
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " approved " , " message " , locale = holo_user ) , reply_markup = InlineKeyboardMarkup (
2022-12-05 19:49:51 +02:00
[ [
2022-12-17 01:58:33 +02:00
InlineKeyboardButton ( str ( locale ( " join " , " button " , locale = holo_user ) ) , url = link . invite_link )
2022-12-05 19:49:51 +02:00
] ]
) )
2022-12-15 14:52:08 +02:00
holo_user . set ( " link " , link . invite_link )
logWrite ( f " User { holo_user . id } got an invite link { link . invite_link } " )
2022-12-05 19:49:51 +02:00
else :
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " approved_joined " , " message " , locale = holo_user ) )
2022-12-05 19:49:51 +02:00
2022-12-15 14:52:08 +02:00
col_applications . insert_one ( { " user " : holo_user . id , " date " : datetime . now ( ) , " admin " : clb . from_user . id , " application " : col_tmp . find_one ( { " user " : { " $eq " : holo_user . id } , " type " : { " $eq " : " application " } } ) [ " application " ] } )
col_tmp . update_one ( { " user " : { " $eq " : holo_user . id } , " type " : { " $eq " : " application " } } , { " $set " : { " state " : " approved " , " sent " : False } } )
2022-12-05 19:49:51 +02:00
edited_markup = [ [ InlineKeyboardButton ( text = str ( locale ( " accepted " , " button " ) ) , callback_data = " nothing " ) ] ]
await clb . message . edit ( text = clb . message . text , reply_markup = InlineKeyboardMarkup ( edited_markup ) )
2022-12-17 01:58:33 +02:00
await clb . answer ( text = locale ( " sub_accepted " , " callback " , locale = clb . from_user ) . format ( holo_user . id ) , show_alert = True )
2022-12-05 19:49:51 +02:00
2022-12-15 14:52:08 +02:00
@app.on_callback_query ( filters . regex ( " sub_no_[ \ s \ S]* " ) )
2022-12-27 14:36:54 +02:00
async def callback_query_reject ( app : Client , clb : CallbackQuery ) :
2022-12-05 19:49:51 +02:00
fullclb = clb . data . split ( " _ " )
2022-12-15 14:52:08 +02:00
holo_user = HoloUser ( int ( fullclb [ 2 ] ) )
2022-12-05 19:49:51 +02:00
2023-01-04 20:14:02 +02:00
await app . send_message ( configGet ( " admin " , " groups " ) , locale ( " rejected_by " , " message " ) . format ( clb . from_user . first_name , holo_user . id ) , disable_notification = True )
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " rejected " , " message " , locale = holo_user ) )
2022-12-15 14:52:08 +02:00
logWrite ( f " User { holo_user . id } got rejected by { clb . from_user . id } " )
2022-12-05 19:49:51 +02:00
2022-12-15 14:52:08 +02:00
col_tmp . update_one ( { " user " : { " $eq " : holo_user . id } , " type " : { " $eq " : " application " } } , { " $set " : { " state " : " rejected " , " sent " : False } } )
2022-12-05 19:49:51 +02:00
edited_markup = [ [ InlineKeyboardButton ( text = str ( locale ( " declined " , " button " ) ) , callback_data = " nothing " ) ] ]
await clb . message . edit ( text = clb . message . text , reply_markup = InlineKeyboardMarkup ( edited_markup ) )
2022-12-17 01:58:33 +02:00
await clb . answer ( text = locale ( " sub_rejected " , " callback " , locale = clb . from_user ) . format ( holo_user . id ) , show_alert = True )
2022-12-05 19:49:51 +02:00
2022-12-15 14:52:08 +02:00
@app.on_callback_query ( filters . regex ( " sub_russian_[ \ s \ S]* " ) )
2022-12-27 14:36:54 +02:00
async def callback_query_reject_russian ( app : Client , clb : CallbackQuery ) :
2022-12-05 19:49:51 +02:00
fullclb = clb . data . split ( " _ " )
2022-12-15 14:52:08 +02:00
holo_user = HoloUser ( int ( fullclb [ 2 ] ) )
2022-12-05 19:49:51 +02:00
2023-01-04 20:14:02 +02:00
await app . send_message ( configGet ( " admin " , " groups " ) , locale ( " rejected_by_rus " , " message " ) . format ( clb . from_user . first_name , holo_user . id ) , disable_notification = True )
2022-12-17 01:58:33 +02:00
await app . send_message ( holo_user . id , locale ( " rejected_russian " , " message " , locale = holo_user ) )
2022-12-15 14:52:08 +02:00
logWrite ( f " User { holo_user . id } got rejected by { clb . from_user . id } due to being russian " )
2022-12-05 19:49:51 +02:00
2022-12-15 14:52:08 +02:00
col_tmp . update_one ( { " user " : { " $eq " : holo_user . id } , " type " : { " $eq " : " application " } } , { " $set " : { " state " : " rejected " , " sent " : False } } )
2022-12-05 19:49:51 +02:00
edited_markup = [ [ InlineKeyboardButton ( text = str ( locale ( " declined " , " button " ) ) , callback_data = " nothing " ) ] ]
await clb . message . edit ( text = clb . message . text , reply_markup = InlineKeyboardMarkup ( edited_markup ) )
2022-12-17 01:58:33 +02:00
await clb . answer ( text = locale ( " sub_russian " , " callback " , locale = clb . from_user ) . format ( holo_user . id ) , show_alert = True )
2022-12-05 19:49:51 +02:00
# ==============================================================================================================================