diff --git a/holochecker.py b/holochecker.py index 6062371..422ca70 100644 --- a/holochecker.py +++ b/holochecker.py @@ -3,7 +3,6 @@ from modules.utils import * from modules.inline import * from app import app -from modules.commands_register import commands_register from pyrogram import idle pid = getpid() @@ -71,8 +70,6 @@ if __name__ == "__main__": except bad_request_400.PeerIdInvalid: logWrite(f"Could not send startup message to bot owner. Perhaps user has not started the bot yet.") - commands_register(app) - scheduler.start() idle() diff --git a/modules/commands_register.py b/modules/commands_register.py deleted file mode 100644 index 84f6c34..0000000 --- a/modules/commands_register.py +++ /dev/null @@ -1,62 +0,0 @@ -from os import listdir -from modules.logging import logWrite -from modules.utils import configGet, locale -from pyrogram.types import BotCommand, BotCommandScopeChat -from pyrogram.errors import bad_request_400 - -def commands_register(app): - - valid_locales = [] - files_locales = listdir(f'{configGet("locale", "locations")}') - for entry in files_locales: - valid_locales.append(".".join(entry.split(".")[:-1])) - - # Registering user commands - commands_list = [] - for command in locale("commands"): - commands_list.append(BotCommand(command, locale("commands")[command])) - app.set_bot_commands(commands_list) - - # Registering user commands for each locale - for lc in valid_locales: - commands_list = [] - for command in locale("commands", locale=lc): - commands_list.append(BotCommand(command, locale("commands",locale=lc)[command])) - app.set_bot_commands(commands_list, language_code=lc) - - # Registering admin commands - commands_admin_list = [] - for command in locale("commands"): - commands_admin_list.append(BotCommand(command, locale("commands")[command])) - - for command in locale("commands_admin"): - commands_admin_list.append(BotCommand(command, locale("commands_admin")[command])) - - for admin in configGet("admins"): - try: - app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=admin)) - except bad_request_400.PeerIdInvalid: - pass - - try: - app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=configGet("owner"))) - except bad_request_400.PeerIdInvalid: - logWrite(f"Could not register commands for bot owner. Perhaps user has not started the bot yet.") - - # Registering admin group commands - commands_group_admin_list = [] - for command in locale("commands_group_admin"): - commands_group_admin_list.append(BotCommand(command, locale("commands_group_admin")[command])) - try: - app.set_bot_commands(commands_group_admin_list, scope=BotCommandScopeChat(chat_id=configGet("admin_group"))) - except bad_request_400.ChannelInvalid: - logWrite(f"Could not register commands for admin group. Bot is likely not in the group.") - - # Registering destination group commands - commands_group_destination_list = [] - for command in locale("commands_group_destination"): - commands_group_destination_list.append(BotCommand(command, locale("commands_group_destination")[command])) - try: - app.set_bot_commands(commands_group_destination_list, scope=BotCommandScopeChat(chat_id=configGet("destination_group"))) - except bad_request_400.ChannelInvalid: - logWrite(f"Could not register commands for destination group. Bot is likely not in the group.") \ No newline at end of file diff --git a/modules/scheduled.py b/modules/scheduled.py index 14c416b..81c5ce6 100644 --- a/modules/scheduled.py +++ b/modules/scheduled.py @@ -1,7 +1,9 @@ -from os import path, sep +from os import listdir, path, sep from apscheduler.schedulers.asyncio import AsyncIOScheduler from datetime import datetime, timedelta from app import app +from pyrogram.types import BotCommand, BotCommandScopeChat +from pyrogram.errors import bad_request_400 from pyrogram.enums.chat_members_filter import ChatMembersFilter from modules.utils import configGet, locale, logWrite from dateutil.relativedelta import relativedelta @@ -9,18 +11,7 @@ from modules.database import col_applications scheduler = AsyncIOScheduler() -# for user_file in listdir(f"{configGet('data', 'locations')}{sep}users{sep}"): -# filename = fsdecode(f"{configGet('data', 'locations')}{sep}users{sep}{user_file}") -# if filename.endswith(".json"): -# user = jsonLoad(filename) -# if isinstance(user["application"]["2"], str): -# try: -# if ".".join([((user["application"]["2"]).split("."))[0], ((user["application"]["2"]).split("."))[1]]) == datetime.now().strftime("%d.%m"): -# tg_user = await app.get_users(int(user_file.replace(".json", ""))) -# await app.send_message( configGet("admin_group"), locale("birthday", "message").format(str(tg_user.first_name), str(tg_user.username), str(relativedelta(datetime.now(), datetime.strptime(user["application"]["2"], '%d.%m.%Y')).years)) ) -# except AttributeError: -# continue - +# Cache the avatars of group members if configGet("enabled", "scheduler", "cache_avatars"): @scheduler.scheduled_job(trigger="date", run_date=datetime.now()+timedelta(seconds=10)) @scheduler.scheduled_job(trigger="interval", hours=configGet("interval", "scheduler", "cache_avatars")) @@ -36,6 +27,7 @@ if configGet("enabled", "scheduler", "cache_avatars"): logWrite("Avatars caching performed") +# Check for birthdays if configGet("enabled", "scheduler", "birthdays"): @scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "birthdays")) async def check_birthdays(): @@ -50,7 +42,76 @@ if configGet("enabled", "scheduler", "birthdays"): continue logWrite("Birthdays check performed") + +# Check for expired sponsorships if configGet("enabled", "scheduler", "sponsorships"): @scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "sponsorships")) async def check_sponsors(): - logWrite("Sponsorships check performed") \ No newline at end of file + logWrite("Sponsorships check performed") + + +# Register all bot commands +@scheduler.scheduled_job(trigger="date", run_date=datetime.now()+timedelta(seconds=3)) +async def commands_register(): + + valid_locales = [] + files_locales = listdir(f'{configGet("locale", "locations")}') + for entry in files_locales: + if entry.endswith(".json"): + valid_locales.append(".".join(entry.split(".")[:-1])) + + # Registering user commands + commands_list = [] + for command in locale("commands"): + commands_list.append(BotCommand(command, locale("commands")[command])) + await app.set_bot_commands(commands_list) + logWrite("Registered user commands for default locale") + + # Registering user commands for each locale + for lc in valid_locales: + commands_list = [] + for command in locale("commands", locale=lc): + commands_list.append(BotCommand(command, locale("commands",locale=lc)[command])) + await app.set_bot_commands(commands_list, language_code=lc) + logWrite(f"Registered user commands for locale {lc}") + + # Registering admin commands + commands_admin_list = [] + for command in locale("commands"): + commands_admin_list.append(BotCommand(command, locale("commands")[command])) + + for command in locale("commands_admin"): + commands_admin_list.append(BotCommand(command, locale("commands_admin")[command])) + + for admin in configGet("admins"): + try: + await app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=admin)) + logWrite(f"Registered admin commands for admin {admin}") + except bad_request_400.PeerIdInvalid: + pass + + try: + await app.set_bot_commands(commands_admin_list, scope=BotCommandScopeChat(chat_id=configGet("owner"))) + logWrite(f"Registered admin commands for owner {configGet('owner')}") + except bad_request_400.PeerIdInvalid: + logWrite(f"Could not register commands for bot owner. Perhaps user has not started the bot yet.") + + # Registering admin group commands + commands_group_admin_list = [] + for command in locale("commands_group_admin"): + commands_group_admin_list.append(BotCommand(command, locale("commands_group_admin")[command])) + try: + await app.set_bot_commands(commands_group_admin_list, scope=BotCommandScopeChat(chat_id=configGet("admin_group"))) + logWrite("Registered admin group commands for default locale") + except bad_request_400.ChannelInvalid: + logWrite(f"Could not register commands for admin group. Bot is likely not in the group.") + + # Registering destination group commands + commands_group_destination_list = [] + for command in locale("commands_group_destination"): + commands_group_destination_list.append(BotCommand(command, locale("commands_group_destination")[command])) + try: + await app.set_bot_commands(commands_group_destination_list, scope=BotCommandScopeChat(chat_id=configGet("destination_group"))) + logWrite("Registered destination group commands") + except bad_request_400.ChannelInvalid: + logWrite(f"Could not register commands for destination group. Bot is likely not in the group.") \ No newline at end of file