diff --git a/sources/constants.py b/sources/constants.py index 944a86a..12cbb1d 100644 --- a/sources/constants.py +++ b/sources/constants.py @@ -16,15 +16,18 @@ Version: ''' ############################################################################### -### Imported modules ### +# Imported modules +############################################################################### from os import path as os_path from os import getenv as os_getenv from typing import Any from settings import SETTINGS + +############################################################################### +# Constants ############################################################################### -### Constants ### # Actual constants.py full path directory name SCRIPT_PATH = os_path.dirname(os_path.realpath(__file__)) @@ -33,175 +36,175 @@ SCRIPT_PATH = os_path.dirname(os_path.realpath(__file__)) CONST = { # Bot Public or Private - "BOT_PRIVATE": \ - bool(int(os_getenv("CAPTCHABOT_PRIVATE", \ - SETTINGS["CAPTCHABOT_PRIVATE"]))), + "BOT_PRIVATE": + bool(int(os_getenv("CAPTCHABOT_PRIVATE", + SETTINGS["CAPTCHABOT_PRIVATE"]))), # Bot Token (get it from @BotFather) - "TOKEN": \ + "TOKEN": os_getenv("CAPTCHABOT_TOKEN", SETTINGS["CAPTCHABOT_TOKEN"]), # Bot Owner (i.e. "@JoseTLG" or "123456789") - "BOT_OWNER": \ + "BOT_OWNER": os_getenv("CAPTCHABOT_OWNER", SETTINGS["CAPTCHABOT_OWNER"]), # Bot Webhook Host addres (keep in None for Polling or set to a # valid address for Webhook) - "WEBHOOK_HOST": \ - os_getenv("CAPTCHABOT_WEBHOOK_HOST", \ - SETTINGS["CAPTCHABOT_WEBHOOK_HOST"]), + "WEBHOOK_HOST": + os_getenv("CAPTCHABOT_WEBHOOK_HOST", + SETTINGS["CAPTCHABOT_WEBHOOK_HOST"]), # Bot Webhook Host Port (this is not used if WEBHOOK_HOST is None) - "WEBHOOK_PORT": \ - int(os_getenv("CAPTCHABOT_WEBHOOK_PORT", \ - SETTINGS["CAPTCHABOT_WEBHOOK_PORT"])), + "WEBHOOK_PORT": + int(os_getenv("CAPTCHABOT_WEBHOOK_PORT", + SETTINGS["CAPTCHABOT_WEBHOOK_PORT"])), # Bot Webhook Certificate file path (this is not used if # WEBHOOK_HOST is None) - "WEBHOOK_CERT": \ - os_getenv("CAPTCHABOT_WEBHOOK_CERT", \ - SETTINGS["CAPTCHABOT_WEBHOOK_CERT"]), + "WEBHOOK_CERT": + os_getenv("CAPTCHABOT_WEBHOOK_CERT", + SETTINGS["CAPTCHABOT_WEBHOOK_CERT"]), # Bot Webhook Certificate private key file path (this is not used # if WEBHOOK_HOST is None) - "WEBHOOK_CERT_PRIV_KEY": \ - os_getenv("CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY", \ - SETTINGS["CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY"]), + "WEBHOOK_CERT_PRIV_KEY": + os_getenv("CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY", + SETTINGS["CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY"]), # Bot Webhook Secret Token to verify request from Telegram Server # (don't use the Bot Token, for security reason it must be other) - "WEBHOOK_SECRET_TOKEN": \ - os_getenv("CAPTCHABOT_WEBHOOK_SECRET_TOKEN", \ - SETTINGS["CAPTCHABOT_WEBHOOK_SECRET_TOKEN"]), + "WEBHOOK_SECRET_TOKEN": + os_getenv("CAPTCHABOT_WEBHOOK_SECRET_TOKEN", + SETTINGS["CAPTCHABOT_WEBHOOK_SECRET_TOKEN"]), # Chats directory path - "CHATS_DIR": \ + "CHATS_DIR": os_getenv("CAPTCHABOT_CHATS_DIR", SETTINGS["CAPTCHABOT_CHATS_DIR"]), # Directory where create/generate temporary captchas - "CAPTCHAS_DIR": \ - os_getenv("CAPTCHABOT_CAPTCHAS_DIR", \ - SETTINGS["CAPTCHABOT_CAPTCHAS_DIR"]), + "CAPTCHAS_DIR": + os_getenv("CAPTCHABOT_CAPTCHAS_DIR", + SETTINGS["CAPTCHABOT_CAPTCHAS_DIR"]), # Global allowed users file path (i.e. to allow blind users) - "F_ALLOWED_USERS": \ - os_getenv("CAPTCHABOT_F_ALLOWED_USERS", \ - SETTINGS["CAPTCHABOT_F_ALLOWED_USERS"]), + "F_ALLOWED_USERS": + os_getenv("CAPTCHABOT_F_ALLOWED_USERS", + SETTINGS["CAPTCHABOT_F_ALLOWED_USERS"]), # Allowed groups to use the Bot when it is Private - "F_ALLOWED_GROUPS": \ - os_getenv("CAPTCHABOT_F_ALLOWED_GROUPS", \ - SETTINGS["CAPTCHABOT_F_ALLOWED_GROUPS"]), + "F_ALLOWED_GROUPS": + os_getenv("CAPTCHABOT_F_ALLOWED_GROUPS", + SETTINGS["CAPTCHABOT_F_ALLOWED_GROUPS"]), # Blocked groups to deny Bot usage (i.e. bad groups that misuse Bot # and cause overload) - "F_BAN_GROUPS": \ - os_getenv("CAPTCHABOT_F_BAN_GROUPS", \ - SETTINGS["CAPTCHABOT_F_BAN_GROUPS"]), + "F_BAN_GROUPS": + os_getenv("CAPTCHABOT_F_BAN_GROUPS", + SETTINGS["CAPTCHABOT_F_BAN_GROUPS"]), # Initial enable/disable status at Bot start - "INIT_ENABLE": \ - bool(int(os_getenv("CAPTCHABOT_INIT_ENABLE", \ - SETTINGS["CAPTCHABOT_INIT_ENABLE"]))), + "INIT_ENABLE": + bool(int(os_getenv("CAPTCHABOT_INIT_ENABLE", + SETTINGS["CAPTCHABOT_INIT_ENABLE"]))), # Initial users send URLs enable/disable at Bot start - "INIT_URL_ENABLE": \ - bool(int(os_getenv("CAPTCHABOT_INIT_URL_ENABLE", \ - SETTINGS["CAPTCHABOT_INIT_URL_ENABLE"]))), + "INIT_URL_ENABLE": + bool(int(os_getenv("CAPTCHABOT_INIT_URL_ENABLE", + SETTINGS["CAPTCHABOT_INIT_URL_ENABLE"]))), # Initial config regarding remove all messages sent by a user kicked - "INIT_RM_ALL_MSG": \ - bool(int(os_getenv("CAPTCHABOT_INIT_RM_ALL_MSG", \ - SETTINGS["CAPTCHABOT_INIT_RM_ALL_MSG"]))), + "INIT_RM_ALL_MSG": + bool(int(os_getenv("CAPTCHABOT_INIT_RM_ALL_MSG", + SETTINGS["CAPTCHABOT_INIT_RM_ALL_MSG"]))), # Initial captcha solve time - "INIT_CAPTCHA_TIME": \ - int(os_getenv("CAPTCHABOT_INIT_CAPTCHA_TIME_MIN", \ - SETTINGS["CAPTCHABOT_INIT_CAPTCHA_TIME_MIN"])) * 60, + "INIT_CAPTCHA_TIME": + int(os_getenv("CAPTCHABOT_INIT_CAPTCHA_TIME_MIN", + SETTINGS["CAPTCHABOT_INIT_CAPTCHA_TIME_MIN"])) * 60, # Initial captcha difficult level - "INIT_CAPTCHA_DIFFICULTY_LEVEL": \ - int(os_getenv("CAPTCHABOT_INIT_CAPTCHA_DIFFICULTY_LEVEL", \ - SETTINGS["CAPTCHABOT_INIT_CAPTCHA_DIFFICULTY_LEVEL"])), + "INIT_CAPTCHA_DIFFICULTY_LEVEL": + int(os_getenv("CAPTCHABOT_INIT_CAPTCHA_DIFFICULTY_LEVEL", + SETTINGS["CAPTCHABOT_INIT_CAPTCHA_DIFFICULTY_LEVEL"])), # Initial captcha characters mode (ascii, hex, nums, math or button) - "INIT_CAPTCHA_CHARS_MODE": \ - os_getenv("CAPTCHABOT_INIT_CAPTCHA_CHARS_MODE", \ - SETTINGS["CAPTCHABOT_INIT_CAPTCHA_CHARS_MODE"]), + "INIT_CAPTCHA_CHARS_MODE": + os_getenv("CAPTCHABOT_INIT_CAPTCHA_CHARS_MODE", + SETTINGS["CAPTCHABOT_INIT_CAPTCHA_CHARS_MODE"]), # Maximum configurable captcha time - "MAX_CONFIG_CAPTCHA_TIME": \ - int(os_getenv("CAPTCHABOT_MAX_CONFIG_CAPTCHA_TIME", \ - SETTINGS["CAPTCHABOT_MAX_CONFIG_CAPTCHA_TIME"])), + "MAX_CONFIG_CAPTCHA_TIME": + int(os_getenv("CAPTCHABOT_MAX_CONFIG_CAPTCHA_TIME", + SETTINGS["CAPTCHABOT_MAX_CONFIG_CAPTCHA_TIME"])), # Standard auto-remove messages sent by Bot timeout (in seconds) - "T_DEL_MSG": \ - int(os_getenv("CAPTCHABOT_T_DEL_MSG", \ - SETTINGS["CAPTCHABOT_T_DEL_MSG"])), + "T_DEL_MSG": + int(os_getenv("CAPTCHABOT_T_DEL_MSG", + SETTINGS["CAPTCHABOT_T_DEL_MSG"])), # Fast auto-remove messages sent by Bot timeout (in seconds) - "T_FAST_DEL_MSG": \ - int(os_getenv("CAPTCHABOT_T_FAST_DEL_MSG", \ - SETTINGS["CAPTCHABOT_T_FAST_DEL_MSG"])), + "T_FAST_DEL_MSG": + int(os_getenv("CAPTCHABOT_T_FAST_DEL_MSG", + SETTINGS["CAPTCHABOT_T_FAST_DEL_MSG"])), # Auto-remove custom welcome message timeout (in seconds) - "T_DEL_WELCOME_MSG": \ - int(os_getenv("CAPTCHABOT_T_DEL_WELCOME_MSG", \ - SETTINGS["CAPTCHABOT_T_DEL_WELCOME_MSG"])), + "T_DEL_WELCOME_MSG": + int(os_getenv("CAPTCHABOT_T_DEL_WELCOME_MSG", + SETTINGS["CAPTCHABOT_T_DEL_WELCOME_MSG"])), # Maximum number of users allowed in each chat ignore list - "IGNORE_LIST_MAX": \ - int(os_getenv("CAPTCHABOT_IGNORE_LIST_MAX", \ - SETTINGS["CAPTCHABOT_IGNORE_LIST_MAX"])), + "IGNORE_LIST_MAX": + int(os_getenv("CAPTCHABOT_IGNORE_LIST_MAX", + SETTINGS["CAPTCHABOT_IGNORE_LIST_MAX"])), # Initial new users just allow to send text messages - "INIT_RESTRICT_NON_TEXT_MSG": \ - int(os_getenv("CAPTCHABOT_INIT_RESTRICT_NON_TEXT_MSG", \ - SETTINGS["CAPTCHABOT_INIT_RESTRICT_NON_TEXT_MSG"])), + "INIT_RESTRICT_NON_TEXT_MSG": + int(os_getenv("CAPTCHABOT_INIT_RESTRICT_NON_TEXT_MSG", + SETTINGS["CAPTCHABOT_INIT_RESTRICT_NON_TEXT_MSG"])), # Custom Welcome message max length - "MAX_WELCOME_MSG_LENGTH": \ - int(os_getenv("CAPTCHABOT_MAX_WELCOME_MSG_LENGTH", \ - SETTINGS["CAPTCHABOT_MAX_WELCOME_MSG_LENGTH"])), + "MAX_WELCOME_MSG_LENGTH": + int(os_getenv("CAPTCHABOT_MAX_WELCOME_MSG_LENGTH", + SETTINGS["CAPTCHABOT_MAX_WELCOME_MSG_LENGTH"])), # Initial remove result messages cgroup onfiguration - "INIT_RM_RESULT_MSG": \ - bool(int(os_getenv("CAPTCHABOT_INIT_RM_RESULT_MSG", \ - SETTINGS["CAPTCHABOT_INIT_RM_RESULT_MSG"]))), + "INIT_RM_RESULT_MSG": + bool(int(os_getenv("CAPTCHABOT_INIT_RM_RESULT_MSG", + SETTINGS["CAPTCHABOT_INIT_RM_RESULT_MSG"]))), # Initial remove welcome message group configuration - "INIT_RM_WELCOME_MSG": \ - bool(int(os_getenv("CAPTCHABOT_INIT_RM_WELCOME_MSG", \ - SETTINGS["CAPTCHABOT_INIT_RM_WELCOME_MSG"]))), + "INIT_RM_WELCOME_MSG": + bool(int(os_getenv("CAPTCHABOT_INIT_RM_WELCOME_MSG", + SETTINGS["CAPTCHABOT_INIT_RM_WELCOME_MSG"]))), # Maximum number of allowed captcha Poll options - "MAX_POLL_OPTIONS": \ - int(os_getenv("CAPTCHABOT_MAX_POLL_OPTIONS", \ - SETTINGS["CAPTCHABOT_MAX_POLL_OPTIONS"])), + "MAX_POLL_OPTIONS": + int(os_getenv("CAPTCHABOT_MAX_POLL_OPTIONS", + SETTINGS["CAPTCHABOT_MAX_POLL_OPTIONS"])), # Poll captcha question max length - "MAX_POLL_QUESTION_LENGTH": \ - int(os_getenv("CAPTCHABOT_MAX_POLL_QUESTION_LENGTH", \ - SETTINGS["CAPTCHABOT_MAX_POLL_QUESTION_LENGTH"])), + "MAX_POLL_QUESTION_LENGTH": + int(os_getenv("CAPTCHABOT_MAX_POLL_QUESTION_LENGTH", + SETTINGS["CAPTCHABOT_MAX_POLL_QUESTION_LENGTH"])), # Poll captcha question max length - "MAX_POLL_OPTION_LENGTH": \ - int(os_getenv("CAPTCHABOT_MAX_POLL_OPTION_LENGTH", \ - SETTINGS["CAPTCHABOT_MAX_POLL_OPTION_LENGTH"])), + "MAX_POLL_OPTION_LENGTH": + int(os_getenv("CAPTCHABOT_MAX_POLL_OPTION_LENGTH", + SETTINGS["CAPTCHABOT_MAX_POLL_OPTION_LENGTH"])), # Maximum number of times a user joins a group and fail to solve the # captcha. If a user don't solve the captcha after this, it will be # ban instead kick - "MAX_FAIL_BAN": \ - int(os_getenv("CAPTCHABOT_MAX_FAIL_BAN", \ - SETTINGS["CAPTCHABOT_MAX_FAIL_BAN"])), + "MAX_FAIL_BAN": + int(os_getenv("CAPTCHABOT_MAX_FAIL_BAN", + SETTINGS["CAPTCHABOT_MAX_FAIL_BAN"])), # Maximum number of times a user fail to solve a Poll captcha. # If a user don't solve the captcha after this, it will be ban # instead kick - "MAX_FAIL_BAN_POLL": \ - int(os_getenv("CAPTCHABOT_MAX_FAIL_BAN_POLL", \ - SETTINGS["CAPTCHABOT_MAX_FAIL_BAN_POLL"])), + "MAX_FAIL_BAN_POLL": + int(os_getenv("CAPTCHABOT_MAX_FAIL_BAN_POLL", + SETTINGS["CAPTCHABOT_MAX_FAIL_BAN_POLL"])), # Last session restorable RAM data backup file path "F_SESSION": SCRIPT_PATH + "/session.pkl", @@ -219,14 +222,13 @@ CONST = { "INIT_LINK": "Unknown", # Initial language at Bot start - "INIT_LANG": \ - os_getenv("CAPTCHABOT_INIT_LANG", \ - SETTINGS["CAPTCHABOT_INIT_LANG"]), + "INIT_LANG": + os_getenv("CAPTCHABOT_INIT_LANG", SETTINGS["CAPTCHABOT_INIT_LANG"]), # Time to restrict sending no-text messages - "T_RESTRICT_NO_TEXT_MSG": \ - int(os_getenv("CAPTCHABOT_T_RESTRICT_NO_TEXT_MSG", \ - SETTINGS["CAPTCHABOT_T_RESTRICT_NO_TEXT_MSG"])), + "T_RESTRICT_NO_TEXT_MSG": + int(os_getenv("CAPTCHABOT_T_RESTRICT_NO_TEXT_MSG", + SETTINGS["CAPTCHABOT_T_RESTRICT_NO_TEXT_MSG"])), # Number of seconds in a minute "T_SECONDS_IN_MIN": 60, @@ -317,77 +319,77 @@ CONST = { # Supported languages list TEXT: dict = { - "AR": {}, # Arabic - "BE": {}, # Belarusian - "CA": {}, # Catalan - "DE": {}, # German - "EL": {}, # Greek - "EN": {}, # English - "EO": {}, # Esperanto - "ES": {}, # Spanish - "EU": {}, # Basque - "FA": {}, # Persian - "FI": {}, # Finnish - "FR": {}, # French - "GL": {}, # Galician - "HE": {}, # Hebrew - "ID": {}, # Indonesian - "IT": {}, # Italian - "KN": {}, # Kannada - "KO": {}, # Korean - "NL": {}, # Dutch - "PL": {}, # Polish - "PT_BR": {}, # Portuguese (Brasil) - "RU": {}, # Rusian - "SK": {}, # Slovak - "TR": {}, # Turkish - "UK": {}, # Ukrainian - "UZ": {}, # Uzbek - "ZH_CN": {} # Chinese (Mainland) + "AR": {}, # Arabic + "BE": {}, # Belarusian + "CA": {}, # Catalan + "DE": {}, # German + "EL": {}, # Greek + "EN": {}, # English + "EO": {}, # Esperanto + "ES": {}, # Spanish + "EU": {}, # Basque + "FA": {}, # Persian + "FI": {}, # Finnish + "FR": {}, # French + "GL": {}, # Galician + "HE": {}, # Hebrew + "ID": {}, # Indonesian + "IT": {}, # Italian + "KN": {}, # Kannada + "KO": {}, # Korean + "NL": {}, # Dutch + "PL": {}, # Polish + "PT_BR": {}, # Portuguese (Brasil) + "RU": {}, # Rusian + "SK": {}, # Slovak + "TR": {}, # Turkish + "UK": {}, # Ukrainian + "UZ": {}, # Uzbek + "ZH_CN": {} # Chinese (Mainland) } # Bot Commands -CMD : dict[str, Any] = { - "START": { "KEY": "start" }, - "HELP": { "KEY": "help" }, - "COMMANDS": { "KEY": "commands" }, - "CHECKCFG": { "KEY": "checkcfg" }, - "CONNECT": { "KEY": "connect" }, - "DISCONNECT": { "KEY": "disconnect" }, - "LANGUAGE": { "KEY": "language" }, - "DIFFICULTY": { "KEY": "difficulty" }, - "WELCOME_MSG": { "KEY": "welcome_msg" }, - "WELCOME_MSG_TIME": { "KEY": "welcome_msg_time" }, - "CAPTCHA_POLL": { "KEY": "captcha_poll" }, - "RESTRICT_NON_TEXT": { "KEY": "restrict_non_text" }, - "ADD_IGNORE": { "KEY": "add_ignore" }, - "REMOVE_IGNORE": { "KEY": "remove_ignore" }, - "IGNORE_LIST": { "KEY": "ignore_list" }, - "REMOVE_SOLVE_KICK_MSG": { "KEY": "remove_solve_kick_msg" }, - "REMOVE_WELCOME_MSG": { "KEY": "remove_welcome_msg" }, - "REMOVE_ALL_MSG_KICK_ON": { "KEY": "remove_all_msg_kick_on" }, - "REMOVE_ALL_MSG_KICK_OFF": { "KEY": "remove_all_msg_kick_off" }, - "URL_ENABLE": { "KEY": "url_enable" }, - "URL_DISABLE": { "KEY": "url_disable" }, - "ENABLE": { "KEY": "enable" }, - "DISABLE": { "KEY": "disable" }, - "CHATID": { "KEY": "chatid" }, - "VERSION": { "KEY": "version" }, - "ABOUT": { "KEY": "about" }, - "CAPTCHA": { "KEY": "captcha" }, - "ALLOWUSERLIST": { "KEY": "allowuserlist" }, - "ALLOWGROUP": { "KEY": "allowgroup" }, +CMD: dict[str, Any] = { + "START": {"KEY": "start"}, + "HELP": {"KEY": "help"}, + "COMMANDS": {"KEY": "commands"}, + "CHECKCFG": {"KEY": "checkcfg"}, + "CONNECT": {"KEY": "connect"}, + "DISCONNECT": {"KEY": "disconnect"}, + "LANGUAGE": {"KEY": "language"}, + "DIFFICULTY": {"KEY": "difficulty"}, + "WELCOME_MSG": {"KEY": "welcome_msg"}, + "WELCOME_MSG_TIME": {"KEY": "welcome_msg_time"}, + "CAPTCHA_POLL": {"KEY": "captcha_poll"}, + "RESTRICT_NON_TEXT": {"KEY": "restrict_non_text"}, + "ADD_IGNORE": {"KEY": "add_ignore"}, + "REMOVE_IGNORE": {"KEY": "remove_ignore"}, + "IGNORE_LIST": {"KEY": "ignore_list"}, + "REMOVE_SOLVE_KICK_MSG": {"KEY": "remove_solve_kick_msg"}, + "REMOVE_WELCOME_MSG": {"KEY": "remove_welcome_msg"}, + "REMOVE_ALL_MSG_KICK_ON": {"KEY": "remove_all_msg_kick_on"}, + "REMOVE_ALL_MSG_KICK_OFF": {"KEY": "remove_all_msg_kick_off"}, + "URL_ENABLE": {"KEY": "url_enable"}, + "URL_DISABLE": {"KEY": "url_disable"}, + "ENABLE": {"KEY": "enable"}, + "DISABLE": {"KEY": "disable"}, + "CHATID": {"KEY": "chatid"}, + "VERSION": {"KEY": "version"}, + "ABOUT": {"KEY": "about"}, + "CAPTCHA": {"KEY": "captcha"}, + "ALLOWUSERLIST": {"KEY": "allowuserlist"}, + "ALLOWGROUP": {"KEY": "allowgroup"}, "TIME": { "KEY": "time", - "ARGV": [ "m", "min", "mins", "minutes", "s", "sec", "secs", - "seconds" ] + "ARGV": ["m", "min", "mins", "minutes", "s", "sec", "secs", + "seconds"] }, "CAPTCHA_MODE": { "KEY": "captcha_mode", - "ARGV": [ "poll", "button", "nums", "hex", "ascii", "math", - "random" ] + "ARGV": ["poll", "button", "nums", "hex", "ascii", "math", + "random"] }, "RESTRICTION": { diff --git a/sources/join_captcha_bot.py b/sources/join_captcha_bot.py index 33479f2..e8a0612 100644 --- a/sources/join_captcha_bot.py +++ b/sources/join_captcha_bot.py @@ -735,7 +735,8 @@ async def should_manage_captcha(update, bot): async def restrict_user_mute(bot, chat_id, user_id, until_date=None): '''Restrict an user in order to deny it send any kind of message.''' - restrict_success = await tlg_restrict_user(bot, chat_id, user_id, + restrict_success = await tlg_restrict_user( + bot, chat_id, user_id, send_msg=False, send_media=False, send_polls=False, @@ -751,7 +752,8 @@ async def restrict_user_mute(bot, chat_id, user_id, until_date=None): async def restrict_user_media(bot, chat_id, user_id, until_date=None): '''Restrict an user in order to deny it send media messages.''' - restrict_success = await tlg_restrict_user(bot, chat_id, user_id, + restrict_success = await tlg_restrict_user( + bot, chat_id, user_id, send_msg=True, send_media=False, send_polls=False, @@ -817,7 +819,7 @@ async def captcha_fail_member_kick(bot, chat_id, user_id, user_name): # "max_join_retries" if join_retries < max_join_retries: logger.info("[%s] Captcha Fail - Kick - %s (%s)", - chat_id, user_name, user_id) + chat_id, user_name, user_id) # Try to kick the user kick_result = await tlg_kick_user(bot, chat_id, user_id) if kick_result["error"] == "": @@ -849,7 +851,7 @@ async def captcha_fail_member_kick(bot, chat_id, user_id, user_name): # the captcha else: logger.info("[%s] Captcha Fail - Ban - %s (%s)", - chat_id, user_name, user_id) + chat_id, user_name, user_id) # Try to ban the user and notify Admins ban_result = await tlg_ban_user(bot, chat_id, user_id) if ban_result["error"] == "": @@ -903,7 +905,7 @@ async def captcha_fail_member(bot, chat_id, user_id): await captcha_fail_member_mute(bot, chat_id, user_id, user_name) elif restriction == CMD["RESTRICTION"]["MEDIA"]: await captcha_fail_member_no_media(bot, chat_id, user_id, user_name) - else: # restriction == CMD["RESTRICTION"]["KICK"] + else: # restriction == CMD["RESTRICTION"]["KICK"] await captcha_fail_member_kick(bot, chat_id, user_id, user_name) # Remove join messages try: @@ -1244,7 +1246,7 @@ async def chat_member_status_change( # that requires it if captcha_mode in ["poll", "button"]: await restrict_user_mute(bot, chat_id, join_user_id) - else: # Restrict user to only allow send text messages + else: # Restrict user to only allow send text messages await restrict_user_media(bot, chat_id, join_user_id) logger.info("[%s] Captcha send process completed.", chat_id) @@ -3948,11 +3950,11 @@ async def tlg_app_exit(app: Application) -> None: Global.force_exit = True if Global.async_captcha_timeout is not None: if not Global.async_captcha_timeout.done(): - logger.info("Waiting end of coroutine: captcha_timeout()") + logger.info("Waiting coroutine end: captcha_timeout()") await Global.async_captcha_timeout if Global.async_auto_delete_messages is not None: if not Global.async_auto_delete_messages.done(): - logger.info("Waiting end of coroutine: async_auto_delete_messages()") + logger.info("Waiting coroutine end: async_auto_delete_messages()") await Global.async_auto_delete_messages # Save current session data save_session() diff --git a/sources/langcheck.py b/sources/langcheck.py index 4e9c14c..bc79de3 100644 --- a/sources/langcheck.py +++ b/sources/langcheck.py @@ -19,7 +19,8 @@ Version: ''' ############################################################################### -### Imported modules +# Imported modules +############################################################################### # JSON Library import json @@ -33,8 +34,10 @@ from sys import exit as sys_exit # Local Constants Library from constants import CONST + +############################################################################### +# Auxiliary Functions ############################################################################### -### Auxiliary Functions def is_valid(lang_name, lang_to_check, reference_lang): ''' @@ -62,8 +65,10 @@ def is_valid(lang_name, lang_to_check, reference_lang): print(f"{lang_name} - OK") return True + +############################################################################### +# Main Function ############################################################################### -### Main Function def main(): '''Main Function.''' @@ -92,7 +97,8 @@ def main(): ############################################################################### -### Runnable Main Script Detection +# Runnable Main Script Detection +############################################################################### if __name__ == "__main__": sys_exit(main()) diff --git a/sources/settings.py b/sources/settings.py index c1e2acb..8fdff48 100644 --- a/sources/settings.py +++ b/sources/settings.py @@ -20,7 +20,7 @@ Version: ############################################################################### from os import path as os_path -from os import environ as os_environ +# from os import environ as os_environ # Actual settings.py full path directory name SCRIPT_PATH = os_path.dirname(os_path.realpath(__file__)) @@ -51,15 +51,15 @@ SETTINGS = { # Bot Webhook Certificate file path (this is not used if # WEBHOOK_HOST is None) - "CAPTCHABOT_WEBHOOK_CERT" : SCRIPT_PATH + "/cert.pem", + "CAPTCHABOT_WEBHOOK_CERT": SCRIPT_PATH + "/cert.pem", # Bot Webhook Certificate private key file path (this is not used # if WEBHOOK_HOST is None) - "CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY" : SCRIPT_PATH + "/private.key", + "CAPTCHABOT_WEBHOOK_CERT_PRIV_KEY": SCRIPT_PATH + "/private.key", # Bot Webhook Secret Token to verify request from Telegram Server # (don't use the Bot Token, for security reason it must be other) - "CAPTCHABOT_WEBHOOK_SECRET_TOKEN" : None, + "CAPTCHABOT_WEBHOOK_SECRET_TOKEN": None, # Chats directory path "CAPTCHABOT_CHATS_DIR": SCRIPT_PATH + "/data/chats",