Download FileStream/bot/plugins/admin.py from AZLABS/telegbot: direct link, hf CLI and curl.
- Browser
- Download file 6.06 kB
-
https://huggingface.co/spaces/AZLABS/telegbot/resolve/main/FileStream/bot/plugins/admin.py
- Command line
-
hf download hf://spaces/AZLABS/telegbot/FileStream/bot/plugins/admin.py
-
curl -L -o admin.py https://huggingface.co/spaces/AZLABS/telegbot/resolve/main/FileStream/bot/plugins/admin.py
6.06 kB
| import os | |
| import time | |
| import string | |
| import random | |
| import asyncio | |
| import aiofiles | |
| import datetime | |
| from FileStream.utils.broadcast_helper import send_msg | |
| from FileStream.utils.database import Database | |
| from FileStream.bot import FileStream | |
| from FileStream.server.exceptions import FIleNotFound | |
| from FileStream.config import Telegram, Server | |
| from pyrogram import filters, Client | |
| from pyrogram.types import Message | |
| from pyrogram.enums.parse_mode import ParseMode | |
| db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME) | |
| broadcast_ids = {} | |
| async def sts(c: Client, m: Message): | |
| await m.reply_text(text=f"""**Total Users in DB:** `{await db.total_users_count()}` | |
| **Banned Users in DB:** `{await db.total_banned_users_count()}` | |
| **Total Links Generated: ** `{await db.total_files()}`""" | |
| , parse_mode=ParseMode.MARKDOWN, quote=True) | |
| async def sts(b, m: Message): | |
| id = m.text.split("/ban ")[-1] | |
| if not await db.is_user_banned(int(id)): | |
| try: | |
| await db.ban_user(int(id)) | |
| await db.delete_user(int(id)) | |
| await m.reply_text(text=f"`{id}`** is Banned** ", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| if not str(id).startswith('-100'): | |
| await b.send_message( | |
| chat_id=id, | |
| text="**Your Banned to Use The Bot**", | |
| parse_mode=ParseMode.MARKDOWN, | |
| disable_web_page_preview=True | |
| ) | |
| except Exception as e: | |
| await m.reply_text(text=f"**something went wrong: {e}** ", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| else: | |
| await m.reply_text(text=f"`{id}`** is Already Banned** ", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| async def sts(b, m: Message): | |
| id = m.text.split("/unban ")[-1] | |
| if await db.is_user_banned(int(id)): | |
| try: | |
| await db.unban_user(int(id)) | |
| await m.reply_text(text=f"`{id}`** is Unbanned** ", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| if not str(id).startswith('-100'): | |
| await b.send_message( | |
| chat_id=id, | |
| text="**Your Unbanned now Use can use The Bot**", | |
| parse_mode=ParseMode.MARKDOWN, | |
| disable_web_page_preview=True | |
| ) | |
| except Exception as e: | |
| await m.reply_text(text=f"** something went wrong: {e}**", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| else: | |
| await m.reply_text(text=f"`{id}`** is not Banned** ", parse_mode=ParseMode.MARKDOWN, quote=True) | |
| async def broadcast_(c, m): | |
| all_users = await db.get_all_users() | |
| broadcast_msg = m.reply_to_message | |
| while True: | |
| broadcast_id = ''.join([random.choice(string.ascii_letters) for i in range(3)]) | |
| if not broadcast_ids.get(broadcast_id): | |
| break | |
| out = await m.reply_text( | |
| text=f"Broadcast initiated! You will be notified with log file when all the users are notified." | |
| ) | |
| start_time = time.time() | |
| total_users = await db.total_users_count() | |
| done = 0 | |
| failed = 0 | |
| success = 0 | |
| broadcast_ids[broadcast_id] = dict( | |
| total=total_users, | |
| current=done, | |
| failed=failed, | |
| success=success | |
| ) | |
| async with aiofiles.open('broadcast.txt', 'w') as broadcast_log_file: | |
| async for user in all_users: | |
| sts, msg = await send_msg( | |
| user_id=int(user['id']), | |
| message=broadcast_msg | |
| ) | |
| if msg is not None: | |
| await broadcast_log_file.write(msg) | |
| if sts == 200: | |
| success += 1 | |
| else: | |
| failed += 1 | |
| if sts == 400: | |
| await db.delete_user(user['id']) | |
| done += 1 | |
| if broadcast_ids.get(broadcast_id) is None: | |
| break | |
| else: | |
| broadcast_ids[broadcast_id].update( | |
| dict( | |
| current=done, | |
| failed=failed, | |
| success=success | |
| ) | |
| ) | |
| try: | |
| await out.edit_text(f"Broadcast Status\n\ncurrent: {done}\nfailed:{failed}\nsuccess: {success}") | |
| except: | |
| pass | |
| if broadcast_ids.get(broadcast_id): | |
| broadcast_ids.pop(broadcast_id) | |
| completed_in = datetime.timedelta(seconds=int(time.time() - start_time)) | |
| await asyncio.sleep(3) | |
| await out.delete() | |
| if failed == 0: | |
| await m.reply_text( | |
| text=f"broadcast completed in `{completed_in}`\n\nTotal users {total_users}.\nTotal done {done}, {success} success and {failed} failed.", | |
| quote=True | |
| ) | |
| else: | |
| await m.reply_document( | |
| document='broadcast.txt', | |
| caption=f"broadcast completed in `{completed_in}`\n\nTotal users {total_users}.\nTotal done {done}, {success} success and {failed} failed.", | |
| quote=True | |
| ) | |
| os.remove('broadcast.txt') | |
| async def sts(c: Client, m: Message): | |
| file_id = m.text.split(" ")[-1] | |
| try: | |
| file_info = await db.get_file(file_id) | |
| except FIleNotFound: | |
| await m.reply_text( | |
| text=f"**File Already Deleted**", | |
| quote=True | |
| ) | |
| return | |
| await db.delete_one_file(file_info['_id']) | |
| await db.count_links(file_info['user_id'], "-") | |
| await m.reply_text( | |
| text=f"**Fɪʟᴇ Dᴇʟᴇᴛᴇᴅ Sᴜᴄᴄᴇssғᴜʟʟʏ !** ", | |
| quote=True | |
| ) | |