Skip to content

Commit 60fae95

Browse files
authored
Update To V0.0.5 🔥
1 parent b7fa669 commit 60fae95

File tree

4 files changed

+215
-0
lines changed

4 files changed

+215
-0
lines changed

Rkn_Bots/Caption.py

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# (c) @RknDeveloperr
2+
# Rkn Developer
3+
# Don't Remove Credit 😔
4+
# Telegram Channel @RknDeveloper & @Rkn_Bots
5+
# Developer @RknDeveloperr
6+
7+
from pyrogram import Client, filters, errors
8+
from Config import Rkn_Bots
9+
import asyncio, re, time, sys
10+
from .database import *
11+
from pyrogram.errors import FloodWait
12+
13+
@Client.on_message(filters.private & filters.user(Rkn_Bots.ADMIN) & filters.command(["rknusers"]))
14+
async def all_db_users_here(client,message):
15+
x = await message.reply_text("Please Wait....")
16+
total = await total_user()
17+
await x.edit(f"Tᴏᴛᴀʟ Usᴇʀ :- `{total}`")
18+
19+
@Client.on_message(filters.private & filters.user(Rkn_Bots.ADMIN) & filters.command(["broadcast"]))
20+
async def broadcast(bot, message):
21+
if (message.reply_to_message):
22+
rkn = await message.reply_text("Geting All ids from database..\n Please wait")
23+
ids = await getid()
24+
tot = await total_user()
25+
success = 0
26+
failed = 0
27+
deactivated = 0
28+
blocked = 0
29+
await rkn.edit(f"ʙʀᴏᴀᴅᴄᴀsᴛɪɴɢ...")
30+
for id in ids:
31+
try:
32+
time.sleep(1)
33+
await message.reply_to_message.copy(id)
34+
success += 1
35+
except errors.InputUserDeactivated:
36+
deactivated +=1
37+
await delete({"_id": id})
38+
except errors.UserIsBlocked:
39+
blocked +=1
40+
await delete({"_id": id})
41+
except Exception as e:
42+
failed += 1
43+
await delete({"_id": bot_id})
44+
pass
45+
try:
46+
await rkn.edit(f"<u>ʙʀᴏᴀᴅᴄᴀsᴛ ᴘʀᴏᴄᴇssɪɴɢ</u>\n\n• ᴛᴏᴛᴀʟ ᴜsᴇʀs: {tot}\n• sᴜᴄᴄᴇssғᴜʟ: {success}\n• ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs: {blocked}\n• ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs: {deactivated}\n• ᴜɴsᴜᴄᴄᴇssғᴜʟ: {failed}")
47+
except FloodWait as e:
48+
await asyncio.sleep(t.x)
49+
await rkn.edit(f"<u>ʙʀᴏᴀᴅᴄᴀsᴛ ᴄᴏᴍᴘʟᴇᴛᴇᴅ</u>\n\n• ᴛᴏᴛᴀʟ ᴜsᴇʀs: {tot}\n• sᴜᴄᴄᴇssғᴜʟ: {success}\n• ʙʟᴏᴄᴋᴇᴅ ᴜsᴇʀs: {blocked}\n• ᴅᴇʟᴇᴛᴇᴅ ᴀᴄᴄᴏᴜɴᴛs: {deactivated}\n• ᴜɴsᴜᴄᴄᴇssғᴜʟ: {failed}")
50+
51+
#Restart to cancell all process
52+
@Client.on_message(filters.private & filters.user(Rkn_Bots.ADMIN) & filters.command("restart"))
53+
async def restart_bot(b, m):
54+
msg = await b.send_message(text="**🔄 𝙿𝚁𝙾𝙲𝙴𝚂𝚂𝙴𝚂 𝚂𝚃𝙾𝙿𝙴𝙳. 𝙱𝙾𝚃 𝙸𝚂 𝚁𝙴𝚂𝚃𝙰𝚁𝚃𝙸𝙽𝙶...**", chat_id=m.chat.id)
55+
await asyncio.sleep(3)
56+
await msg.edit("**✅️ 𝙱𝙾𝚃 𝙸𝚂 𝚁𝙴𝚂𝚃𝙰𝚁𝚃𝙴𝙳. 𝙽𝙾𝚆 𝚈𝙾𝚄 𝙲𝙰𝙽 𝚄𝚂𝙴 𝙼𝙴**")
57+
os.execl(sys.executable, sys.executable, *sys.argv)
58+
59+
@Client.on_message(filters.command("start") & filters.private)
60+
async def start_cmd(bot, message):
61+
user_id = int(message.from_user.id)
62+
user_det = {"_id": user_id)
63+
await users.insert_one(user_det)
64+
await message.reply(
65+
f"<b>Hey, {message.from_user.mention}\n\nI'm an auto-caption bot. I automatically edit captions for videos, audio files, and documents posted on channels.\n\nuse <code>/set_caption</code> to set caption\nUse<code>/delcaption</code> To delete caption and set caption to default.\n\nNote:All commands works on channels only</b>"
66+
)
67+
68+
69+
@Client.on_message(filters.command("set_caption") & filters.channel)
70+
async def setCap(bot, message):
71+
if len(message.command) < 2:
72+
return await message.reply(
73+
"Usage: /set_caption <code>your caption (use {file_name} to show file name</code>)"
74+
)
75+
chnl_id = message.chat.id
76+
caption = (
77+
message.text.split(" ", 1)[1] if len(message.text.split(" ", 1)) > 1 else None
78+
)
79+
chkData = await chnl_ids.find_one({"chnl_id": chnl_id})
80+
if chkData:
81+
await updateCap(chnl_id, caption)
82+
return await message.reply(f"Your New Caption: {caption}")
83+
else:
84+
await addCap(chnl_id, caption)
85+
return await message.reply(f"Your New Caption: {caption}")
86+
87+
88+
@Client.on_message(filters.command(["delcaption", "del_caption", "delete_caption"]) & filters.channel)
89+
async def delCap(_, msg):
90+
chnl_id = msg.chat.id
91+
try:
92+
await chnl_ids.delete_one({"chnl_id": chnl_id})
93+
return await msg.reply("<b>Success..From now i will use my default caption</b>")
94+
except Exception as e:
95+
e_val = await msg.replay(f"ERR I GOT: {e}")
96+
await asyncio.sleep(5)
97+
await e_val.delete()
98+
return
99+
100+
101+
@Client.on_message(filters.channel)
102+
async def auto_edit_caption(bot, message):
103+
chnl_id = message.chat.id
104+
if message.media:
105+
for file_type in ("video", "audio", "document", "voice"):
106+
obj = getattr(message, file_type, None)
107+
if obj and hasattr(obj, "file_name"):
108+
file_name = obj.file_name
109+
file_name = (
110+
re.sub(r"@\w+\s*", "", file_name)
111+
.replace("_", " ")
112+
.replace(".", " ")
113+
)
114+
cap_dets = await chnl_ids.find_one({"chnl_id": chnl_id})
115+
try:
116+
if cap_dets:
117+
cap = cap_dets["caption"]
118+
replaced_caption = cap.format(file_name=file_name)
119+
await message.edit(replaced_caption)
120+
else:
121+
replaced_caption = Rkn_Bots.DEF_CAP.format(file_name=file_name)
122+
await message.edit(replaced_caption)
123+
except FloodWait as e:
124+
await asyncio.sleep(e.x)
125+
continue
126+
return
127+
128+
# Rkn Developer
129+
# Don't Remove Credit 😔
130+
# Telegram Channel @RknDeveloper & @Rkn_Bots
131+
# Developer @RknDeveloperr

Rkn_Bots/Force_Sub.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from pyrogram import Client, filters, enums
2+
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
3+
from pyrogram.errors import UserNotParticipant
4+
from config import Rkn_Bots as Config
5+
from .database import *
6+
7+
async def not_subscribed(_, client, message):
8+
user_id = int(message.from_user.id)
9+
user_det = {"_id": user_id)
10+
await users.insert_one(user_det)
11+
if not Config.FORCE_SUB:
12+
return False
13+
try:
14+
user = await client.get_chat_member(Config.FORCE_SUB, message.from_user.id)
15+
if user.status == enums.ChatMemberStatus.BANNED:
16+
return True
17+
else:
18+
return False
19+
except UserNotParticipant:
20+
pass
21+
return True
22+
23+
24+
@Client.on_message(filters.private & filters.create(not_subscribed))
25+
async def forces_sub(client, message):
26+
buttons = [[InlineKeyboardButton(text="📢 Join Update Channel 📢", url=f"https://t.me/{Config.FORCE_SUB}") ]]
27+
text = "**Sᴏʀʀy Dᴜᴅᴇ Yᴏᴜ'ʀᴇ Nᴏᴛ Jᴏɪɴᴇᴅ My Cʜᴀɴɴᴇʟ 😐. Sᴏ Pʟᴇᴀꜱᴇ Jᴏɪɴ Oᴜʀ Uᴩᴅᴀᴛᴇ Cʜᴀɴɴᴇʟ Tᴏ Cᴄᴏɴᴛɪɴᴜᴇ**"
28+
try:
29+
user = await client.get_chat_member(Config.FORCE_SUB, message.from_user.id)
30+
if user.status == enums.ChatMemberStatus.BANNED:
31+
return await client.send_message(message.from_user.id, text="Sᴏʀʀy Yᴏᴜ'ʀᴇ Bᴀɴɴᴇᴅ Tᴏ Uꜱᴇ Mᴇ")
32+
except UserNotParticipant:
33+
return await message.reply_text(text=text, reply_markup=InlineKeyboardMarkup(buttons))
34+
return await message.reply_text(text=text, reply_markup=InlineKeyboardMarkup(buttons))
35+

Rkn_Bots/database.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# (c) @RknDeveloperr
2+
# Rkn Developer
3+
# Don't Remove Credit 😔
4+
# Telegram Channel @RknDeveloper & @Rkn_Bots
5+
# Developer @RknDeveloperr
6+
7+
import motor.motor_asyncio
8+
from config import Rkn_Bots
9+
10+
client = motor.motor_asyncio.AsyncIOMotorClient(Rkn_Bots.DB_URL)
11+
db = client.captions_with_chnl
12+
chnl_ids = db.chnl_ids
13+
users = db.users
14+
15+
# Total User
16+
async def total_user():
17+
user = users.count_documents({})
18+
return user
19+
20+
async def getid():
21+
all_users = users.find({})
22+
return all_users
23+
24+
async def delete(id):
25+
users.delete_one(id)
26+
27+
async def addCap(chnl_id, caption):
28+
dets = {"chnl_id": chnl_id, "caption": caption}
29+
await chnl_ids.insert_one(dets)
30+
31+
async def updateCap(chnl_id, caption):
32+
await chnl_ids.update_one({"chnl_id": chnl_id}, {"$set": {"caption": caption}})
33+
34+
# Rkn Developer
35+
# Don't Remove Credit 😔
36+
# Telegram Channel @RknDeveloper & @Rkn_Bots
37+
# Developer @RknDeveloperr

Rkn_Bots/web_support.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from aiohttp import web
2+
3+
Rkn_AutoCaptionBot = web.RouteTableDef()
4+
5+
@Rkn_AutoCaptionBot.get("/", allow_head=True)
6+
async def root_route_handler(request):
7+
return web.json_response("Rkn_AutoCaptionBot")
8+
9+
async def web_server():
10+
web_app = web.Application(client_max_size=30000000)
11+
web_app.add_routes(Rkn_AutoCaptionBot)
12+
return web_app

0 commit comments

Comments
 (0)