Skip to content

Commit c18f532

Browse files
authored
Fixed bug
1 parent 602a00c commit c18f532

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed

start.py

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
#(©)Codexbotz
2+
import os
3+
import asyncio
4+
from pyrogram import Client, filters, __version__
5+
from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
6+
from pyrogram.errors import FloodWait
7+
8+
from bot import Bot
9+
from config import ADMINS, FORCE_MSG, START_MSG, OWNER_ID, CUSTOM_CAPTION, DISABLE_CHANNEL_BUTTON
10+
from helper_func import subscribed, encode, decode, get_messages
11+
from database.support import users_info
12+
from database.sql import add_user, query_msg
13+
14+
15+
#=====================================================================================##
16+
17+
USERS_LIST = """<b>⭕️Total:</b>\n\n⭕️Subscribers - {}\n⭕️Blocked- {}"""
18+
19+
WAIT_MSG = """"<b>Processing ...</b>"""
20+
21+
REPLY_ERROR = """<code>Use this command as a replay to any telegram message with out any spaces.</code>"""
22+
23+
24+
#=====================================================================================##
25+
26+
27+
@Bot.on_message(filters.command('start') & filters.private & subscribed)
28+
async def start_command(client: Client, message: Message):
29+
id = message.from_user.id
30+
user_name = '@' + message.from_user.username if message.from_user.username else None
31+
await add_user(id, user_name)
32+
text = message.text
33+
if len(text)>7:
34+
try:
35+
base64_string = text.split(" ", 1)[1]
36+
except:
37+
return
38+
string = await decode(base64_string)
39+
argument = string.split("-")
40+
if len(argument) == 3:
41+
try:
42+
start = int(int(argument[1]) / abs(client.db_channel.id))
43+
end = int(int(argument[2]) / abs(client.db_channel.id))
44+
except:
45+
return
46+
if start <= end:
47+
ids = range(start,end+1)
48+
else:
49+
ids = []
50+
i = start
51+
while True:
52+
ids.append(i)
53+
i -= 1
54+
if i < end:
55+
break
56+
elif len(argument) == 2:
57+
try:
58+
ids = [int(int(argument[1]) / abs(client.db_channel.id))]
59+
except:
60+
return
61+
temp_msg = await message.reply("Please wait...")
62+
try:
63+
messages = await get_messages(client, ids)
64+
except:
65+
await message.reply_text("Something went wrong..!")
66+
return
67+
await temp_msg.delete()
68+
69+
for msg in messages:
70+
71+
if bool(CUSTOM_CAPTION) & bool(msg.document):
72+
caption = CUSTOM_CAPTION.format(previouscaption = "" if not msg.caption else msg.caption.html, filename = msg.document.file_name)
73+
else:
74+
caption = "" if not msg.caption else msg.caption.html
75+
76+
if DISABLE_CHANNEL_BUTTON:
77+
reply_markup = msg.reply_markup
78+
else:
79+
reply_markup = None
80+
81+
try:
82+
await msg.copy(chat_id=message.from_user.id, caption = caption, parse_mode = 'html', reply_markup = reply_markup)
83+
await asyncio.sleep(0.5)
84+
except FloodWait as e:
85+
await asyncio.sleep(e.x)
86+
await msg.copy(chat_id=message.from_user.id, caption = caption, parse_mode = 'html', reply_markup = reply_markup)
87+
except:
88+
pass
89+
return
90+
else:
91+
reply_markup = InlineKeyboardMarkup(
92+
[
93+
[
94+
InlineKeyboardButton("😊 About Me", callback_data = "about"),
95+
InlineKeyboardButton("🔒 Close", callback_data = "close")
96+
]
97+
]
98+
)
99+
await message.reply_text(
100+
text = START_MSG.format(
101+
first = message.from_user.first_name,
102+
last = message.from_user.last_name,
103+
username = None if not message.from_user.username else '@' + message.from_user.username,
104+
mention = message.from_user.mention,
105+
id = message.from_user.id
106+
),
107+
reply_markup = reply_markup,
108+
disable_web_page_preview = True,
109+
quote = True
110+
)
111+
return
112+
113+
@Bot.on_message(filters.command('start') & filters.private)
114+
async def not_joined(client: Client, message: Message):
115+
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton("Join Channel", url = client.invitelink)]])
116+
await message.reply(
117+
text = FORCE_MSG.format(
118+
first = message.from_user.first_name,
119+
last = message.from_user.last_name,
120+
username = None if not message.from_user.username else '@' + message.from_user.username,
121+
mention = message.from_user.mention,
122+
id = message.from_user.id
123+
),
124+
reply_markup = reply_markup,
125+
quote = True,
126+
disable_web_page_preview = True
127+
)
128+
129+
@Bot.on_message(filters.private & filters.command('users'))
130+
async def subscribers_count(bot, m: Message):
131+
id = m.from_user.id
132+
if id not in ADMINS:
133+
return
134+
msg = await m.reply_text(WAIT_MSG)
135+
messages = await users_info(bot)
136+
active = messages[0]
137+
blocked = messages[1]
138+
await m.delete()
139+
await msg.edit(USERS_LIST.format(active, blocked))
140+
141+
142+
143+
@Bot.on_message(filters.private & filters.command('broadcast'))
144+
async def send_text(bot, m: Message):
145+
id = m.from_user.id
146+
if id not in ADMINS:
147+
return
148+
if (" " not in m.text) and ("broadcast" in m.text) and (m.reply_to_message is not None):
149+
query = await query_msg()
150+
for row in query:
151+
chat_id = int(row[0])
152+
try:
153+
await bot.copy_message(
154+
chat_id=chat_id,
155+
from_chat_id=m.chat.id,
156+
message_id=m.reply_to_message.message_id,
157+
caption=m.caption,
158+
reply_markup=m.reply_markup
159+
)
160+
except FloodWait as e:
161+
await asyncio.sleep(e.x)
162+
except Exception:
163+
pass
164+
else:
165+
msg = await m.reply_text(REPLY_ERROR, m.message_id)
166+
await asyncio.sleep(8)
167+
await msg.delete()

0 commit comments

Comments
 (0)