Download plugins/admin_panel.py from Thaimozhi/RenameBot: direct link, hf CLI and curl.
- Browser
- Download file 5.19 kB
-
https://huggingface.co/spaces/Thaimozhi/RenameBot/resolve/main/plugins/admin_panel.py
- Command line
-
hf download hf://spaces/Thaimozhi/RenameBot/plugins/admin_panel.py
-
curl -L -o admin_panel.py https://huggingface.co/spaces/Thaimozhi/RenameBot/resolve/main/plugins/admin_panel.py
5.19 kB
| from config import Config, Txt | |
| from helper.database import codeflixbots | |
| from pyrogram.types import Message | |
| from pyrogram import Client, filters | |
| from pyrogram.errors import FloodWait, InputUserDeactivated, UserIsBlocked, PeerIdInvalid | |
| import os, sys, time, asyncio, logging, datetime | |
| from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup | |
| logger = logging.getLogger(__name__) | |
| logger.setLevel(logging.INFO) | |
| ADMIN_USER_ID = Config.ADMIN | |
| # Flag to indicate if the bot is restarting | |
| is_restarting = False | |
| async def restart_bot(b, m): | |
| global is_restarting | |
| if not is_restarting: | |
| is_restarting = True | |
| await m.reply_text("**Restarting.....**") | |
| # Gracefully stop the bot's event loop | |
| await b.stop() | |
| time.sleep(2) # Adjust the delay duration based on your bot's shutdown time | |
| # Restart the bot process | |
| os.execl(sys.executable, sys.executable, *sys.argv) | |
| async def tutorial(bot: Client, message: Message): | |
| user_id = message.from_user.id | |
| format_template = await codeflixbots.get_format_template(user_id) | |
| await message.reply_text( | |
| text=Txt.FILE_NAME_TXT.format(format_template=format_template), | |
| disable_web_page_preview=True, | |
| reply_markup=InlineKeyboardMarkup([ | |
| [InlineKeyboardButton("• ᴏᴡɴᴇʀ", url="https://t.me/cosmic_freak"), | |
| InlineKeyboardButton("• ᴛᴜᴛᴏʀɪᴀʟ", url="https://t.me/AnimePiratesTamil")] | |
| ]) | |
| ) | |
| async def get_stats(bot, message): | |
| total_users = await codeflixbots.total_users_count() | |
| uptime = time.strftime("%Hh%Mm%Ss", time.gmtime(time.time() - bot.uptime)) | |
| start_t = time.time() | |
| st = await message.reply('**Accessing The Details.....**') | |
| end_t = time.time() | |
| time_taken_s = (end_t - start_t) * 1000 | |
| await st.edit(text=f"**--Bot Status--** \n\n**⌚️ Bot Uptime :** {uptime} \n**🐌 Current Ping :** `{time_taken_s:.3f} ms` \n**👭 Total Users :** `{total_users}`") | |
| async def broadcast_handler(bot: Client, m: Message): | |
| await bot.send_message(Config.LOG_CHANNEL, f"{m.from_user.mention} or {m.from_user.id} Is Started The Broadcast......") | |
| all_users = await codeflixbots.get_all_users() | |
| broadcast_msg = m.reply_to_message | |
| sts_msg = await m.reply_text("Broadcast Started..!") | |
| done = 0 | |
| failed = 0 | |
| success = 0 | |
| start_time = time.time() | |
| total_users = await codeflixbots.total_users_count() | |
| async for user in all_users: | |
| sts = await send_msg(user['_id'], broadcast_msg) | |
| if sts == 200: | |
| success += 1 | |
| else: | |
| failed += 1 | |
| if sts == 400: | |
| await codeflixbots.delete_user(user['_id']) | |
| done += 1 | |
| if not done % 20: | |
| await sts_msg.edit(f"Broadcast In Progress: \n\nTotal Users {total_users} \nCompleted : {done} / {total_users}\nSuccess : {success}\nFailed : {failed}") | |
| completed_in = datetime.timedelta(seconds=int(time.time() - start_time)) | |
| await sts_msg.edit(f"Bʀᴏᴀᴅᴄᴀꜱᴛ Cᴏᴍᴩʟᴇᴛᴇᴅ: \nCᴏᴍᴩʟᴇᴛᴇᴅ Iɴ `{completed_in}`.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nFailed: {failed}") | |
| async def send_msg(user_id, message): | |
| try: | |
| await message.copy(chat_id=int(user_id)) | |
| return 200 | |
| except FloodWait as e: | |
| await asyncio.sleep(e.value) | |
| return send_msg(user_id, message) | |
| except InputUserDeactivated: | |
| logger.info(f"{user_id} : Deactivated") | |
| return 400 | |
| except UserIsBlocked: | |
| logger.info(f"{user_id} : Blocked The Bot") | |
| return 400 | |
| except PeerIdInvalid: | |
| logger.info(f"{user_id} : User ID Invalid") | |
| return 400 | |
| except Exception as e: | |
| logger.error(f"{user_id} : {e}") | |
| return 500 | |
| async def authorize_cmd(client: Client, message: Message): | |
| if len(message.command) < 2: | |
| return await message.reply_text("Usage: `/authorize <user_id>`") | |
| try: | |
| user_id = int(message.command[1]) | |
| await codeflixbots.authorize_user(user_id) | |
| await message.reply_text(f"✅ User `{user_id}` successfully authorized.") | |
| except Exception as e: | |
| await message.reply_text(f"Error: {e}") | |
| async def unauthorize_cmd(client: Client, message: Message): | |
| if len(message.command) < 2: | |
| return await message.reply_text("Usage: `/unauthorize <user_id>`") | |
| try: | |
| user_id = int(message.command[1]) | |
| await codeflixbots.unauthorize_user(user_id) | |
| await message.reply_text(f"✅ User `{user_id}` successfully unauthorized.") | |
| except Exception as e: | |
| await message.reply_text(f"Error: {e}") | |