Compare commits
13 Commits
v1.1
...
717d636497
Author | SHA1 | Date | |
---|---|---|---|
717d636497 | |||
64b0562bc4 | |||
eced1b7984 | |||
da3dd3a2fe | |||
3e166a3fca | |||
d090b18655 | |||
e2d28f442c | |||
496240c48b | |||
|
0bf5ae70eb | ||
|
bcaf80e2e1 | ||
|
21bf460b28 | ||
|
a4bbb837d7 | ||
|
1a438fc32e |
@@ -1,4 +1,5 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from asyncio import sleep
|
||||||
from traceback import format_exc
|
from traceback import format_exc
|
||||||
from app import app, isAnAdmin
|
from app import app, isAnAdmin
|
||||||
from typing import Any, List, Literal, Union
|
from typing import Any, List, Literal, Union
|
||||||
@@ -123,11 +124,11 @@ class HoloUser():
|
|||||||
|
|
||||||
# Check if any text available and log message sending
|
# Check if any text available and log message sending
|
||||||
if text is not None:
|
if text is not None:
|
||||||
logWrite(f"{context.from_user.id} sent message '{text}' to {self.id}")
|
logWrite(f"{context.from_user.id} sent message '{text}' to {self.id} (source message: {context.id})")
|
||||||
elif caption is not None:
|
elif caption is not None:
|
||||||
logWrite(f"{context.from_user.id} sent message '{caption}' to {self.id}")
|
logWrite(f"{context.from_user.id} sent message '{caption}' to {self.id} (source message: {context.id})")
|
||||||
else:
|
else:
|
||||||
logWrite(f"{context.from_user.id} sent message to {self.id}")
|
logWrite(f"{context.from_user.id} sent message to {self.id} (source message: {context.id})")
|
||||||
|
|
||||||
# Add notices for admin or user
|
# Add notices for admin or user
|
||||||
if text is not None:
|
if text is not None:
|
||||||
@@ -164,7 +165,7 @@ class HoloUser():
|
|||||||
elif file is not None:
|
elif file is not None:
|
||||||
if isinstance(file, Document):
|
if isinstance(file, Document):
|
||||||
file = file.file_id
|
file = file.file_id
|
||||||
new_message = await origin.reply_document(file, caption=caption, quote=True)
|
new_message = await origin.reply_cached_media(file, caption=caption, quote=True)
|
||||||
elif animation is not None:
|
elif animation is not None:
|
||||||
if isinstance(animation, Animation):
|
if isinstance(animation, Animation):
|
||||||
animation = animation.file_id
|
animation = animation.file_id
|
||||||
@@ -189,7 +190,7 @@ class HoloUser():
|
|||||||
elif file is not None:
|
elif file is not None:
|
||||||
if isinstance(file, Document):
|
if isinstance(file, Document):
|
||||||
file = file.file_id
|
file = file.file_id
|
||||||
new_message = await app.send_document(self.id, file, caption=caption)
|
new_message = await app.send_cached_media(self.id, file, caption=caption)
|
||||||
elif animation is not None:
|
elif animation is not None:
|
||||||
if isinstance(animation, Animation):
|
if isinstance(animation, Animation):
|
||||||
animation = animation.file_id
|
animation = animation.file_id
|
||||||
@@ -227,6 +228,7 @@ class HoloUser():
|
|||||||
try:
|
try:
|
||||||
await app.promote_chat_member(configGet("users", "groups"), self.id, privileges=ChatPrivileges(can_pin_messages=True, can_manage_video_chats=True))
|
await app.promote_chat_member(configGet("users", "groups"), self.id, privileges=ChatPrivileges(can_pin_messages=True, can_manage_video_chats=True))
|
||||||
if not await isAnAdmin(self.id):
|
if not await isAnAdmin(self.id):
|
||||||
|
await sleep(0.5)
|
||||||
await app.set_administrator_title(configGet("users", "groups"), self.id, label)
|
await app.set_administrator_title(configGet("users", "groups"), self.id, label)
|
||||||
self.set("label", label)
|
self.set("label", label)
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
|
@@ -114,7 +114,6 @@
|
|||||||
"permissions": [
|
"permissions": [
|
||||||
"users",
|
"users",
|
||||||
"admins",
|
"admins",
|
||||||
"group_users",
|
|
||||||
"group_admins"
|
"group_admins"
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules": [
|
||||||
@@ -123,7 +122,7 @@
|
|||||||
},
|
},
|
||||||
"warn": {
|
"warn": {
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"group_users"
|
"group_users_admins"
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules": [
|
||||||
"warnings"
|
"warnings"
|
||||||
|
@@ -3,6 +3,7 @@ from pyrogram import filters
|
|||||||
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
|
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
|
||||||
from pyrogram.client import Client
|
from pyrogram.client import Client
|
||||||
from classes.holo_user import HoloUser
|
from classes.holo_user import HoloUser
|
||||||
|
from modules.logging import logWrite
|
||||||
from modules.utils import configGet, locale, should_quote
|
from modules.utils import configGet, locale, should_quote
|
||||||
from modules.handlers.welcome import welcome_pass
|
from modules.handlers.welcome import welcome_pass
|
||||||
from modules.database import col_tmp
|
from modules.database import col_tmp
|
||||||
@@ -34,14 +35,22 @@ async def cmd_reapply(app: Client, msg: Message):
|
|||||||
await welcome_pass(app, msg, once_again=True)
|
await welcome_pass(app, msg, once_again=True)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
await msg.reply_text(locale("reapply_left_chat", "message", locale=holo_user), reply_markup=InlineKeyboardMarkup([
|
|
||||||
[
|
if holo_user.application_state()[1] is True and holo_user.application_state()[0] != "fill":
|
||||||
InlineKeyboardButton(locale("reapply_old_one", "button", locale=holo_user), f"reapply_old_{msg.id}")
|
|
||||||
],
|
await msg.reply_text(locale("reapply_left_chat", "message", locale=holo_user), reply_markup=InlineKeyboardMarkup([
|
||||||
[
|
[
|
||||||
InlineKeyboardButton(locale("reapply_new_one", "button", locale=holo_user), f"reapply_new_{msg.id}")
|
InlineKeyboardButton(locale("reapply_old_one", "button", locale=holo_user), f"reapply_old_{msg.id}")
|
||||||
]
|
],
|
||||||
]))
|
[
|
||||||
|
InlineKeyboardButton(locale("reapply_new_one", "button", locale=holo_user), f"reapply_new_{msg.id}")
|
||||||
|
]
|
||||||
|
]))
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
holo_user.application_restart(reapply=True)
|
||||||
|
await welcome_pass(app, msg, once_again=True)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
@@ -24,42 +24,35 @@ async def cmd_resetcommands(app: Client, msg: Message):
|
|||||||
if entry.endswith(".json"):
|
if entry.endswith(".json"):
|
||||||
valid_locales.append(".".join(entry.split(".")[:-1]))
|
valid_locales.append(".".join(entry.split(".")[:-1]))
|
||||||
|
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting commands in groups {configGet("admin", "groups")} and {configGet("users", "groups")}', debug=True)
|
||||||
logWrite(f'Resetting commands in groups {configGet("admin", "groups")} and {configGet("users", "groups")}')
|
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("admin", "groups")))
|
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("admin", "groups")))
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("users", "groups")))
|
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("users", "groups")))
|
||||||
|
|
||||||
for admin in configGet("admins"):
|
for admin in configGet("admins"):
|
||||||
try:
|
try:
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting commands for admin {admin}', debug=True)
|
||||||
logWrite(f'Resetting commands for admin {admin}')
|
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=admin))
|
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=admin))
|
||||||
except bad_request_400.PeerIdInvalid:
|
except bad_request_400.PeerIdInvalid:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting commands for owner {configGet("owner")}', debug=True)
|
||||||
logWrite(f'Resetting commands for owner {configGet("owner")}')
|
|
||||||
for lc in valid_locales:
|
for lc in valid_locales:
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting commands for owner {configGet("owner")} [{lc}]', debug=True)
|
||||||
logWrite(f'Resetting commands for owner {configGet("owner")} [{lc}]')
|
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")), language_code=lc)
|
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")), language_code=lc)
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")))
|
await app.delete_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")))
|
||||||
except bad_request_400.PeerIdInvalid:
|
except bad_request_400.PeerIdInvalid:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
for lc in valid_locales:
|
for lc in valid_locales:
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting commands for locale {lc}', debug=True)
|
||||||
logWrite(f'Resetting commands for locale {lc}')
|
|
||||||
await app.delete_bot_commands(scope=BotCommandScopeDefault(), language_code=lc)
|
await app.delete_bot_commands(scope=BotCommandScopeDefault(), language_code=lc)
|
||||||
|
|
||||||
if configGet("debug") is True:
|
logWrite(f'Resetting default commands', debug=True)
|
||||||
logWrite(f'Resetting default commands')
|
|
||||||
await app.delete_bot_commands()
|
await app.delete_bot_commands()
|
||||||
|
|
||||||
await msg.reply_text("OK", quote=should_quote(msg))
|
await msg.reply_text("OK", quote=should_quote(msg))
|
||||||
|
|
||||||
if configGet("debug") is True:
|
logWrite(str(await app.get_bot_commands()), debug=True)
|
||||||
logWrite(str(await app.get_bot_commands()))
|
logWrite(str(await app.get_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")))), debug=True)
|
||||||
logWrite(str(await app.get_bot_commands(scope=BotCommandScopeChat(chat_id=configGet("owner")))))
|
|
||||||
# ==============================================================================================================================
|
# ==============================================================================================================================
|
@@ -33,13 +33,13 @@ async def cmd_start(app: Client, msg: Message):
|
|||||||
try:
|
try:
|
||||||
spoiler = col_spoilers.find_one( {"_id": ObjectId(msg.command[1])} )
|
spoiler = col_spoilers.find_one( {"_id": ObjectId(msg.command[1])} )
|
||||||
if spoiler["photo"] is not None:
|
if spoiler["photo"] is not None:
|
||||||
await msg.reply_document(spoiler["photo"], caption=spoiler["caption"])
|
await msg.reply_cached_media(spoiler["photo"], caption=spoiler["caption"])
|
||||||
if spoiler["video"] is not None:
|
if spoiler["video"] is not None:
|
||||||
await msg.reply_cached_media(spoiler["video"], caption=spoiler["caption"])
|
await msg.reply_cached_media(spoiler["video"], caption=spoiler["caption"])
|
||||||
if spoiler["animation"] is not None:
|
if spoiler["animation"] is not None:
|
||||||
await msg.reply_cached_media(spoiler["animation"], caption=spoiler["caption"])
|
await msg.reply_cached_media(spoiler["animation"], caption=spoiler["caption"])
|
||||||
if spoiler["document"] is not None:
|
if spoiler["document"] is not None:
|
||||||
await msg.reply_document(spoiler["document"], caption=spoiler["caption"])
|
await msg.reply_cached_media(spoiler["document"], caption=spoiler["caption"])
|
||||||
if spoiler["text"] is not None:
|
if spoiler["text"] is not None:
|
||||||
await msg.reply_text(spoiler["text"])
|
await msg.reply_text(spoiler["text"])
|
||||||
except InvalidId:
|
except InvalidId:
|
||||||
|
@@ -15,7 +15,11 @@ async def member_func(_, __, msg: Message):
|
|||||||
return True if (msg.from_user.id in jsonLoad(path.join(configGet("cache", "locations"), "group_members"))) else False
|
return True if (msg.from_user.id in jsonLoad(path.join(configGet("cache", "locations"), "group_members"))) else False
|
||||||
|
|
||||||
async def allowed_func(_, __, msg: Message):
|
async def allowed_func(_, __, msg: Message):
|
||||||
return True if (col_applications.find_one({"user": msg.from_user.id}) is not None) else False
|
output = False
|
||||||
|
output = True if (col_applications.find_one({"user": msg.from_user.id}) is not None) else False
|
||||||
|
if path.exists(path.join(configGet("cache", "locations"), "group_members")) and (msg.from_user.id not in jsonLoad(path.join(configGet("cache", "locations"), "group_members"))):
|
||||||
|
output = False
|
||||||
|
return output
|
||||||
|
|
||||||
async def enabled_general_func(_, __, msg: Message):
|
async def enabled_general_func(_, __, msg: Message):
|
||||||
return configGet("enabled", "features", "general")
|
return configGet("enabled", "features", "general")
|
||||||
|
@@ -117,7 +117,7 @@ async def confirm_yes(app: Client, msg: Message, kind: Literal["application", "s
|
|||||||
else:
|
else:
|
||||||
sponsorship_content.append(f"{locale(f'question_{question}', 'message', 'sponsor_titles')} {tmp_sponsorship['sponsorship'][question]}")
|
sponsorship_content.append(f"{locale(f'question_{question}', 'message', 'sponsor_titles')} {tmp_sponsorship['sponsorship'][question]}")
|
||||||
|
|
||||||
await app.send_cached_media(chat_id=configGet("admin", "groups"), photo=tmp_sponsorship["sponsorship"]["proof"], caption=(locale("sponsor_got", "message")).format(str(holo_user.id), msg.from_user.first_name, msg.from_user.username, "\n".join(sponsorship_content)), parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(
|
await app.send_cached_media(configGet("admin", "groups"), tmp_sponsorship["sponsorship"]["proof"], caption=(locale("sponsor_got", "message")).format(str(holo_user.id), msg.from_user.first_name, msg.from_user.username, "\n".join(sponsorship_content)), parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
InlineKeyboardButton(text=str(locale("sponsor_yes", "button")), callback_data=f"sponsor_yes_{holo_user.id}")
|
InlineKeyboardButton(text=str(locale("sponsor_yes", "button")), callback_data=f"sponsor_yes_{holo_user.id}")
|
||||||
|
@@ -11,7 +11,8 @@ from pyrogram.enums.chat_members_filter import ChatMembersFilter
|
|||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
from classes.errors.holo_user import UserNotFoundError, UserInvalidError
|
from classes.errors.holo_user import UserNotFoundError, UserInvalidError
|
||||||
from classes.holo_user import HoloUser
|
from classes.holo_user import HoloUser
|
||||||
from modules.utils import configGet, locale
|
from modules.logging import logWrite
|
||||||
|
from modules.utils import configGet, jsonLoad, locale
|
||||||
from modules.database import col_applications, col_spoilers
|
from modules.database import col_applications, col_spoilers
|
||||||
from bson.objectid import ObjectId
|
from bson.objectid import ObjectId
|
||||||
from bson.errors import InvalidId
|
from bson.errors import InvalidId
|
||||||
@@ -64,22 +65,33 @@ async def inline_answer(client: Client, inline_query: InlineQuery):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
results_forbidden = [
|
||||||
|
InlineQueryResultArticle(
|
||||||
|
title=locale("title", "inline", "forbidden", locale=inline_query.from_user),
|
||||||
|
input_message_content=InputTextMessageContent(
|
||||||
|
locale("message_content", "inline", "forbidden", locale=inline_query.from_user)
|
||||||
|
),
|
||||||
|
description=locale("description", "inline", "forbidden", locale=inline_query.from_user)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
holo_user = HoloUser(inline_query.from_user)
|
holo_user = HoloUser(inline_query.from_user)
|
||||||
except (UserNotFoundError, UserInvalidError):
|
except (UserNotFoundError, UserInvalidError):
|
||||||
|
logWrite(f"Could not find application of {inline_query.from_user.id}, ignoring inline query", debug=True)
|
||||||
await inline_query.answer(
|
await inline_query.answer(
|
||||||
results=[
|
results=results_forbidden
|
||||||
InlineQueryResultArticle(
|
|
||||||
title=locale("title", "inline", "forbidden", locale=inline_query.from_user),
|
|
||||||
input_message_content=InputTextMessageContent(
|
|
||||||
locale("message_content", "inline", "forbidden", locale=inline_query.from_user)
|
|
||||||
),
|
|
||||||
description=locale("description", "inline", "forbidden", locale=inline_query.from_user)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if path.exists(path.join(configGet("cache", "locations"), "group_members")) and (inline_query.from_user.id not in jsonLoad(path.join(configGet("cache", "locations"), "group_members"))):
|
||||||
|
if path.exists(path.join(configGet("cache", "locations"), "admins")) and (inline_query.from_user.id not in jsonLoad(path.join(configGet("cache", "locations"), "admins"))):
|
||||||
|
logWrite(f"{inline_query.from_user.id} is not an admin and not in members group, ignoring inline query", debug=True)
|
||||||
|
await inline_query.answer(
|
||||||
|
results=results_forbidden
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
if holo_user.application_approved() or (await isAnAdmin(holo_user.id) is True):
|
if holo_user.application_approved() or (await isAnAdmin(holo_user.id) is True):
|
||||||
|
|
||||||
max_results = configGet("inline_preview_count") if inline_query.query != "" else 200
|
max_results = configGet("inline_preview_count") if inline_query.query != "" else 200
|
||||||
@@ -161,5 +173,6 @@ async def inline_answer(client: Client, inline_query: InlineQuery):
|
|||||||
|
|
||||||
await inline_query.answer(
|
await inline_query.answer(
|
||||||
results=results,
|
results=results,
|
||||||
cache_time=10
|
cache_time=10,
|
||||||
)
|
is_personal=True
|
||||||
|
)
|
@@ -6,7 +6,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from ujson import dumps
|
from ujson import dumps
|
||||||
from app import app
|
from app import app
|
||||||
from pyrogram.types import BotCommand, BotCommandScopeChat
|
from pyrogram.types import BotCommand, BotCommandScopeChat, BotCommandScopeChatAdministrators
|
||||||
from pyrogram.errors import bad_request_400
|
from pyrogram.errors import bad_request_400
|
||||||
from pyrogram.enums.chat_members_filter import ChatMembersFilter
|
from pyrogram.enums.chat_members_filter import ChatMembersFilter
|
||||||
from classes.holo_user import HoloUser
|
from classes.holo_user import HoloUser
|
||||||
@@ -22,8 +22,9 @@ if configGet("enabled", "scheduler", "cache_members"):
|
|||||||
list_of_users = []
|
list_of_users = []
|
||||||
async for member in app.get_chat_members(configGet("users", "groups")):
|
async for member in app.get_chat_members(configGet("users", "groups")):
|
||||||
list_of_users.append(member.user.id)
|
list_of_users.append(member.user.id)
|
||||||
makedirs("cache", exist_ok=True)
|
makedirs(configGet("cache", "locations"), exist_ok=True)
|
||||||
jsonSave(list_of_users, path.join(configGet("cache", "locations"), "group_members"))
|
jsonSave(list_of_users, path.join(configGet("cache", "locations"), "group_members"))
|
||||||
|
logWrite("User group caching performed", debug=True)
|
||||||
|
|
||||||
if configGet("enabled", "scheduler", "cache_admins"):
|
if configGet("enabled", "scheduler", "cache_admins"):
|
||||||
@scheduler.scheduled_job(trigger="interval", seconds=configGet("interval", "scheduler", "cache_admins"))
|
@scheduler.scheduled_job(trigger="interval", seconds=configGet("interval", "scheduler", "cache_admins"))
|
||||||
@@ -31,8 +32,9 @@ if configGet("enabled", "scheduler", "cache_admins"):
|
|||||||
list_of_users = []
|
list_of_users = []
|
||||||
async for member in app.get_chat_members(configGet("admin", "groups")):
|
async for member in app.get_chat_members(configGet("admin", "groups")):
|
||||||
list_of_users.append(member.user.id)
|
list_of_users.append(member.user.id)
|
||||||
makedirs("cache", exist_ok=True)
|
makedirs(configGet("cache", "locations"), exist_ok=True)
|
||||||
jsonSave(list_of_users, path.join(configGet("cache", "locations"), "admins"))
|
jsonSave(list_of_users, path.join(configGet("cache", "locations"), "admins"))
|
||||||
|
logWrite("Admin group caching performed", debug=True)
|
||||||
|
|
||||||
# Cache the avatars of group members
|
# Cache the avatars of group members
|
||||||
if configGet("enabled", "scheduler", "cache_avatars"):
|
if configGet("enabled", "scheduler", "cache_avatars"):
|
||||||
@@ -76,7 +78,7 @@ if configGet("enabled", "features", "sponsorships") is True:
|
|||||||
try:
|
try:
|
||||||
tg_user = await app.get_users(entry["user"])
|
tg_user = await app.get_users(entry["user"])
|
||||||
until_expiry = relativedelta(datetime.now(), entry["sponsorship"]["expires"]).days
|
until_expiry = relativedelta(datetime.now(), entry["sponsorship"]["expires"]).days
|
||||||
await app.send_message( tg_user, locale("sponsorships_expires", "message").format(until_expiry) ) # type: ignore
|
await app.send_message( tg_user.id, locale("sponsorships_expires", "message").format(until_expiry) ) # type: ignore
|
||||||
logWrite(f"Notified user that sponsorship expires in {until_expiry} days")
|
logWrite(f"Notified user that sponsorship expires in {until_expiry} days")
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
logWrite(f"Could not find user {entry['user']} notify about sponsorship expiry due to '{exp}'")
|
logWrite(f"Could not find user {entry['user']} notify about sponsorship expiry due to '{exp}'")
|
||||||
@@ -108,6 +110,7 @@ async def commands_register():
|
|||||||
"owner": [],
|
"owner": [],
|
||||||
"group_users": [],
|
"group_users": [],
|
||||||
"group_admins": [],
|
"group_admins": [],
|
||||||
|
"group_users_admins": [],
|
||||||
"locales": {}
|
"locales": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +120,7 @@ async def commands_register():
|
|||||||
"owner": [],
|
"owner": [],
|
||||||
"group_users": [],
|
"group_users": [],
|
||||||
"group_admins": [],
|
"group_admins": [],
|
||||||
|
"group_users_admins": [],
|
||||||
"locales": {}
|
"locales": {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +135,8 @@ async def commands_register():
|
|||||||
"admins": [],
|
"admins": [],
|
||||||
"owner": [],
|
"owner": [],
|
||||||
"group_users": [],
|
"group_users": [],
|
||||||
"group_admins": []
|
"group_admins": [],
|
||||||
|
"group_users_admins": []
|
||||||
}
|
}
|
||||||
if configGet("debug") is True:
|
if configGet("debug") is True:
|
||||||
commands_raw["locales"][".".join(entry.split(".")[:-1])] = {
|
commands_raw["locales"][".".join(entry.split(".")[:-1])] = {
|
||||||
@@ -139,7 +144,8 @@ async def commands_register():
|
|||||||
"admins": [],
|
"admins": [],
|
||||||
"owner": [],
|
"owner": [],
|
||||||
"group_users": [],
|
"group_users": [],
|
||||||
"group_admins": []
|
"group_admins": [],
|
||||||
|
"group_users_admins": []
|
||||||
}
|
}
|
||||||
|
|
||||||
config_modules = configGet("features")
|
config_modules = configGet("features")
|
||||||
@@ -155,8 +161,7 @@ async def commands_register():
|
|||||||
enabled = True
|
enabled = True
|
||||||
|
|
||||||
if enabled is False:
|
if enabled is False:
|
||||||
if configGet("debug") is True:
|
logWrite(f"Not registering {command} at all", debug=True)
|
||||||
logWrite(f"Not registering {command} at all")
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for permission in config_commands[command]["permissions"]:
|
for permission in config_commands[command]["permissions"]:
|
||||||
@@ -216,7 +221,14 @@ async def commands_register():
|
|||||||
except bad_request_400.ChannelInvalid:
|
except bad_request_400.ChannelInvalid:
|
||||||
logWrite(f"Could not register commands for destination group. Bot is likely not in the group.")
|
logWrite(f"Could not register commands for destination group. Bot is likely not in the group.")
|
||||||
|
|
||||||
|
# Registering destination group admin commands
|
||||||
|
try:
|
||||||
|
await app.set_bot_commands(commands["group_users_admins"], scope=BotCommandScopeChatAdministrators(chat_id=configGet("users", "groups")))
|
||||||
|
logWrite("Registered destination group admin commands")
|
||||||
|
except bad_request_400.ChannelInvalid:
|
||||||
|
logWrite(f"Could not register admin commands for destination group. Bot is likely not in the group.")
|
||||||
|
|
||||||
|
|
||||||
if configGet("debug") is True:
|
if configGet("debug") is True:
|
||||||
print(commands, flush=True)
|
print(commands, flush=True)
|
||||||
logWrite(f"Complete commands registration:\n{dumps(commands_raw, indent=4, ensure_ascii=False, encode_html_chars=False)}")
|
logWrite(f"Complete commands registration:\n{dumps(commands_raw, indent=4, ensure_ascii=False, encode_html_chars=False)}", debug=True)
|
Reference in New Issue
Block a user