RenameBot / plugins /admin_panel.py
Thaimozhi
Fixed file not upload
91e9031
Raw History Blame Contribute Delete
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
@Client.on_message(filters.private & filters.command("restart") & filters.user(ADMIN_USER_ID))
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)
@Client.on_message(filters.private & filters.command("tutorial"))
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")]
])
)
@Client.on_message(filters.command(["stats", "status"]) & filters.user(Config.ADMIN))
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}`")
@Client.on_message(filters.command("broadcast") & filters.user(Config.ADMIN) & filters.reply)
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
@Client.on_message(filters.command("authorize") & filters.user(Config.ADMIN))
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}")
@Client.on_message(filters.command("unauthorize") & filters.user(Config.ADMIN))
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}")