+ Add create acc thread

This commit is contained in:
Wong Yiek Heng 2025-10-05 18:39:47 +08:00
parent 297186ae8a
commit 412c2f2736
2 changed files with 30 additions and 1 deletions

View File

@ -41,6 +41,12 @@ class CM_BOT_HAL:
result = self.db.query(query, query_params) result = self.db.query(query, query_params)
return result[0] if len(result) else None 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): def get_max_username(self, prefix: str):
query = "SELECT username FROM acc WHERE username LIKE %s ORDER BY username DESC LIMIT 1" query = "SELECT username FROM acc WHERE username LIKE %s ORDER BY username DESC LIMIT 1"
query_params = [f'{prefix}%'] query_params = [f'{prefix}%']

View File

@ -1,4 +1,4 @@
import logging import threading, logging, time
from telegram import ForceReply, Update from telegram import ForceReply, Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
@ -12,6 +12,8 @@ logging.getLogger("httpx").setLevel(logging.WARNING)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
creating_acc_now = False
async def menu_cmd_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: async def menu_cmd_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
menu = [ menu = [
'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)) await update.message.reply_text('\n'.join(menu))
async def get_acc_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: 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 ...') await update.message.reply_text('Start Getting CM Account ...')
try: try:
bot = CM_BOT_HAL() 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)) await update.message.reply_text('\n'.join(msg))
except Exception as e: except Exception as e:
await update.message.reply_text(f'Error: {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: async def set_security_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
if len(context.args) == 0 or len(context.args) > 1: 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.') 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: def main() -> None:
"""Start the bot.""" """Start the bot."""
@ -80,6 +102,7 @@ def main() -> None:
# Start the Telegram bot # Start the Telegram bot
print("Starting Telegram bot...") print("Starting Telegram bot...")
threading.Thread(target=monitor_amount_of_available_acc, args=()).start()
application.run_polling(allowed_updates=Update.ALL_TYPES) application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__": if __name__ == "__main__":