Setting commands is now scheduled
This commit is contained in:
parent
741a01cff6
commit
f4a2e655a6
@ -3,7 +3,6 @@ from modules.utils import *
|
|||||||
from modules.inline import *
|
from modules.inline import *
|
||||||
from app import app
|
from app import app
|
||||||
|
|
||||||
from modules.commands_register import commands_register
|
|
||||||
from pyrogram import idle
|
from pyrogram import idle
|
||||||
|
|
||||||
pid = getpid()
|
pid = getpid()
|
||||||
@ -71,8 +70,6 @@ if __name__ == "__main__":
|
|||||||
except bad_request_400.PeerIdInvalid:
|
except bad_request_400.PeerIdInvalid:
|
||||||
logWrite(f"Could not send startup message to bot owner. Perhaps user has not started the bot yet.")
|
logWrite(f"Could not send startup message to bot owner. Perhaps user has not started the bot yet.")
|
||||||
|
|
||||||
commands_register(app)
|
|
||||||
|
|
||||||
scheduler.start()
|
scheduler.start()
|
||||||
|
|
||||||
idle()
|
idle()
|
||||||
|
@ -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.")
|
|
@ -1,7 +1,9 @@
|
|||||||
from os import path, sep
|
from os import listdir, path, sep
|
||||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from app import app
|
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 pyrogram.enums.chat_members_filter import ChatMembersFilter
|
||||||
from modules.utils import configGet, locale, logWrite
|
from modules.utils import configGet, locale, logWrite
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
@ -9,18 +11,7 @@ from modules.database import col_applications
|
|||||||
|
|
||||||
scheduler = AsyncIOScheduler()
|
scheduler = AsyncIOScheduler()
|
||||||
|
|
||||||
# for user_file in listdir(f"{configGet('data', 'locations')}{sep}users{sep}"):
|
# Cache the avatars of group members
|
||||||
# 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
|
|
||||||
|
|
||||||
if configGet("enabled", "scheduler", "cache_avatars"):
|
if configGet("enabled", "scheduler", "cache_avatars"):
|
||||||
@scheduler.scheduled_job(trigger="date", run_date=datetime.now()+timedelta(seconds=10))
|
@scheduler.scheduled_job(trigger="date", run_date=datetime.now()+timedelta(seconds=10))
|
||||||
@scheduler.scheduled_job(trigger="interval", hours=configGet("interval", "scheduler", "cache_avatars"))
|
@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")
|
logWrite("Avatars caching performed")
|
||||||
|
|
||||||
|
|
||||||
|
# Check for birthdays
|
||||||
if configGet("enabled", "scheduler", "birthdays"):
|
if configGet("enabled", "scheduler", "birthdays"):
|
||||||
@scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "birthdays"))
|
@scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "birthdays"))
|
||||||
async def check_birthdays():
|
async def check_birthdays():
|
||||||
@ -50,7 +42,76 @@ if configGet("enabled", "scheduler", "birthdays"):
|
|||||||
continue
|
continue
|
||||||
logWrite("Birthdays check performed")
|
logWrite("Birthdays check performed")
|
||||||
|
|
||||||
|
|
||||||
|
# Check for expired sponsorships
|
||||||
if configGet("enabled", "scheduler", "sponsorships"):
|
if configGet("enabled", "scheduler", "sponsorships"):
|
||||||
@scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "sponsorships"))
|
@scheduler.scheduled_job(trigger="cron", hour=configGet("time", "scheduler", "sponsorships"))
|
||||||
async def check_sponsors():
|
async def check_sponsors():
|
||||||
logWrite("Sponsorships check performed")
|
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.")
|
Reference in New Issue
Block a user