11#(©)CodeXBotz
2-
3-
4-
5-
62import os
73import asyncio
8- from bot import Bot
9- from pyrogram .enums import ParseMode
104from pyrogram import Client , filters , __version__
11- from database .database import add_user , present_user
12- from helper_func import subscribed , encode , decode , get_messages
5+ from pyrogram .enums import ParseMode
136from pyrogram .types import Message , InlineKeyboardMarkup , InlineKeyboardButton , CallbackQuery
14- from config import FORCE_MSG , START_MSG , CUSTOM_CAPTION , DISABLE_CHANNEL_BUTTON , PROTECT_CONTENT
7+ from pyrogram . errors import FloodWait , UserIsBlocked , InputUserDeactivated
158
9+ from bot import Bot
10+ from config import ADMINS , FORCE_MSG , START_MSG , OWNER_ID , CUSTOM_CAPTION , DISABLE_CHANNEL_BUTTON , PROTECT_CONTENT
11+ from helper_func import subscribed , encode , decode , get_messages
12+ from database .database import add_user , del_user , full_userbase , present_user
1613
1714
15+ #=====================================================================================##
1816
17+ WAIT_MSG = """"<b>Processing ...</b>"""
18+
19+ REPLY_ERROR = """<code>Use this command as a replay to any telegram message with out any spaces.</code>"""
20+
21+ #=====================================================================================##
1922
2023
2124@Bot .on_message (filters .command ('start' ) & filters .private & subscribed )
@@ -139,4 +142,56 @@ async def not_joined(client: Client, message: Message):
139142 reply_markup = InlineKeyboardMarkup (buttons ),
140143 quote = True ,
141144 disable_web_page_preview = True
142- )
145+ )
146+
147+ @Bot .on_message (filters .command ('users' ) & filters .private & filters .user (ADMINS ))
148+ async def get_users (client : Bot , message : Message ):
149+ msg = await client .send_message (chat_id = message .chat .id , text = WAIT_MSG )
150+ users = await full_userbase ()
151+ await msg .edit (f"{ len (users )} users are using this bot" )
152+
153+ @Bot .on_message (filters .private & filters .command ('broadcast' ) & filters .user (ADMINS ))
154+ async def send_text (client : Bot , message : Message ):
155+ if message .reply_to_message :
156+ query = await full_userbase ()
157+ broadcast_msg = message .reply_to_message
158+ total = 0
159+ successful = 0
160+ blocked = 0
161+ deleted = 0
162+ unsuccessful = 0
163+
164+ pls_wait = await message .reply ("<i>Broadcasting Message.. This will Take Some Time</i>" )
165+ for chat_id in query :
166+ try :
167+ await broadcast_msg .copy (chat_id )
168+ successful += 1
169+ except FloodWait as e :
170+ await asyncio .sleep (e .x )
171+ await broadcast_msg .copy (chat_id )
172+ successful += 1
173+ except UserIsBlocked :
174+ await del_user (chat_id )
175+ blocked += 1
176+ except InputUserDeactivated :
177+ await del_user (chat_id )
178+ deleted += 1
179+ except :
180+ unsuccessful += 1
181+ pass
182+ total += 1
183+
184+ status = f"""<b><u>Broadcast Completed</u>
185+
186+ Total Users: <code>{ total } </code>
187+ Successful: <code>{ successful } </code>
188+ Blocked Users: <code>{ blocked } </code>
189+ Deleted Accounts: <code>{ deleted } </code>
190+ Unsuccessful: <code>{ unsuccessful } </code></b>"""
191+
192+ return await pls_wait .edit (status )
193+
194+ else :
195+ msg = await message .reply (REPLY_ERROR )
196+ await asyncio .sleep (8 )
197+ await msg .delete ()
0 commit comments