diff --git a/cm_bot_hal.py b/cm_bot_hal.py index 60f2232..7bee02b 100644 --- a/cm_bot_hal.py +++ b/cm_bot_hal.py @@ -41,6 +41,12 @@ class CM_BOT_HAL: result = self.db.query(query, query_params) return result[0] if len(result) else None + def get_all_available_acc(self): + query = "SELECT username, password, link FROM acc WHERE status = %s ORDER BY username ASC" + query_params = [''] + result = self.db.query(query, query_params) + return result + def get_max_username(self, prefix: str): query = "SELECT username FROM acc WHERE username LIKE %s ORDER BY username DESC LIMIT 1" query_params = [f'{prefix}%'] diff --git a/cm_telegram.py b/cm_telegram.py index 47d7988..975c7b6 100644 --- a/cm_telegram.py +++ b/cm_telegram.py @@ -1,4 +1,4 @@ -import logging +import threading, logging, time from telegram import ForceReply, Update from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters @@ -12,6 +12,8 @@ logging.getLogger("httpx").setLevel(logging.WARNING) logger = logging.getLogger(__name__) +creating_acc_now = False + async def menu_cmd_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: menu = [ 'MENU', @@ -22,6 +24,10 @@ async def menu_cmd_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) - await update.message.reply_text('\n'.join(menu)) async def get_acc_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + while creating_acc_now == True: + await update.message.reply_text('CM account creation is running, queuing ...') + time.sleep(60) + creating_acc_now = True await update.message.reply_text('Start Getting CM Account ...') try: bot = CM_BOT_HAL() @@ -34,6 +40,8 @@ async def get_acc_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> await update.message.reply_text('\n'.join(msg)) except Exception as e: await update.message.reply_text(f'Error: {e}') + finally: + creating_acc_now = False async def set_security_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: if len(context.args) == 0 or len(context.args) > 1: @@ -67,6 +75,20 @@ async def insert_to_user_table_handler(update: Update, context: ContextTypes.DEF ) await update.message.reply_text(f'Done insert {f_username} into user table.') +def monitor_amount_of_available_acc(): + max_available = 20 + while True: + bot = CM_BOT_HAL() + available_size = len(bot.get_all_available_acc()) + print(available_size) + + if available_size <= max_available: + for i in range(available_size, max_available): + bot.create_new_acc() + time.sleep(10 * 60) + del bot + + def main() -> None: """Start the bot.""" @@ -80,6 +102,7 @@ def main() -> None: # Start the Telegram bot print("Starting Telegram bot...") + threading.Thread(target=monitor_amount_of_available_acc, args=()).start() application.run_polling(allowed_updates=Update.ALL_TYPES) if __name__ == "__main__":