mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2026-01-06 11:54:51 +00:00
Testing banned user & chat
This commit is contained in:
parent
f10a6cf016
commit
7980bfdd3f
8 changed files with 166 additions and 143 deletions
|
|
@ -28,7 +28,7 @@ MOD_NOLOAD = ["subscene_dl"]
|
||||||
HELPABLE = {}
|
HELPABLE = {}
|
||||||
cleanmode = {}
|
cleanmode = {}
|
||||||
botStartTime = time.time()
|
botStartTime = time.time()
|
||||||
misskaty_version = "v2.3 - Stable"
|
misskaty_version = "v2.4 - Stable"
|
||||||
|
|
||||||
pymonclient = MongoClient(DATABASE_URI)
|
pymonclient = MongoClient(DATABASE_URI)
|
||||||
|
|
||||||
|
|
|
||||||
157
misskaty/plugins/ban_user_or_chat.py
Normal file
157
misskaty/plugins/ban_user_or_chat.py
Normal file
|
|
@ -0,0 +1,157 @@
|
||||||
|
from pyrogram import filters, Client
|
||||||
|
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
||||||
|
|
||||||
|
from database.users_chats_db import db
|
||||||
|
from misskaty import app
|
||||||
|
from misskaty.helper.localization import use_chat_lang
|
||||||
|
from misskaty.vars import SUPPORT_CHAT
|
||||||
|
|
||||||
|
|
||||||
|
@app.on_message(filters.private & filters.incoming, group=2)
|
||||||
|
async def ban_reply(self: Client, ctx: Message):
|
||||||
|
ban = await db.get_ban_status(ctx.from_user.id)
|
||||||
|
if ban.get("is_banned"):
|
||||||
|
await ctx.reply_msg(f'I am sorry, You are banned to use Me. \nBan Reason: {ban["ban_reason"]}')
|
||||||
|
|
||||||
|
|
||||||
|
@app.on_message(filters.group & filters.incoming, group=3)
|
||||||
|
@use_chat_lang()
|
||||||
|
async def grp_bd(self: Client, ctx: Message, strings):
|
||||||
|
chck = await db.get_chat(ctx.chat.id)
|
||||||
|
if chck:
|
||||||
|
buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
|
||||||
|
reply_markup = InlineKeyboardMarkup(buttons)
|
||||||
|
vazha = await db.get_chat(ctx.chat.id)
|
||||||
|
try:
|
||||||
|
k = await ctx.reply_msg(
|
||||||
|
f"CHAT NOT ALLOWED 🐞\n\nMy owner has restricted me from working here!\nReason : <code>{vazha['reason']}</code>.",
|
||||||
|
reply_markup=reply_markup,
|
||||||
|
)
|
||||||
|
await k.pin()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
await self.leave_chat(ctx.chat.id)
|
||||||
|
else:
|
||||||
|
total = await bot.get_chat_members_count(ctx.chat.id)
|
||||||
|
r_j = ctx.from_user.mention if ctx.from_user else "Anonymous"
|
||||||
|
await self.send_message(
|
||||||
|
LOG_CHANNEL,
|
||||||
|
strings("log_bot_added").format(ttl=ctx.chat.title, cid=ctx.chat.id, tot=total, r_j=r_j),
|
||||||
|
)
|
||||||
|
await db.add_chat(ctx.chat.id, ctx.chat.title)
|
||||||
|
|
||||||
|
|
||||||
|
@Client.on_message(filters.command('banuser') & filters.user(ADMINS))
|
||||||
|
async def ban_a_user(bot, message):
|
||||||
|
if len(message.command) == 1:
|
||||||
|
return await message.reply('Give me a user id / username')
|
||||||
|
r = message.text.split(None)
|
||||||
|
if len(r) > 2:
|
||||||
|
reason = message.text.split(None, 2)[2]
|
||||||
|
chat = message.text.split(None, 2)[1]
|
||||||
|
else:
|
||||||
|
chat = message.command[1]
|
||||||
|
reason = "No reason Provided"
|
||||||
|
try:
|
||||||
|
chat = int(chat)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
k = await bot.get_users(chat)
|
||||||
|
except PeerIdInvalid:
|
||||||
|
return await message.reply("This is an invalid user, make sure i have met him before.")
|
||||||
|
except IndexError:
|
||||||
|
return await message.reply("This might be a channel, make sure its a user.")
|
||||||
|
except Exception as e:
|
||||||
|
return await message.reply(f'Error - {e}')
|
||||||
|
else:
|
||||||
|
jar = await db.get_ban_status(k.id)
|
||||||
|
if jar['is_banned']:
|
||||||
|
return await message.reply(f"{k.mention} is already banned\nReason: {jar['ban_reason']}")
|
||||||
|
await db.ban_user(k.id, reason)
|
||||||
|
await message.reply(f"Successfully banned this {k.mention}!! Reason: jar['ban_reason']")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Client.on_message(filters.command('unbanuser') & filters.user(ADMINS))
|
||||||
|
async def unban_a_user(bot, message):
|
||||||
|
if len(message.command) == 1:
|
||||||
|
return await message.reply('Give me a user id / username')
|
||||||
|
r = message.text.split(None)
|
||||||
|
if len(r) > 2:
|
||||||
|
reason = message.text.split(None, 2)[2]
|
||||||
|
chat = message.text.split(None, 2)[1]
|
||||||
|
else:
|
||||||
|
chat = message.command[1]
|
||||||
|
reason = "No reason Provided"
|
||||||
|
try:
|
||||||
|
chat = int(chat)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
k = await bot.get_users(chat)
|
||||||
|
except PeerIdInvalid:
|
||||||
|
return await message.reply("This is an invalid user, make sure ia have met him before.")
|
||||||
|
except IndexError:
|
||||||
|
return await message.reply("This might be a channel, make sure its a user.")
|
||||||
|
except Exception as e:
|
||||||
|
return await message.reply(f'Error - {e}')
|
||||||
|
else:
|
||||||
|
jar = await db.get_ban_status(k.id)
|
||||||
|
if not jar['is_banned']:
|
||||||
|
return await message.reply(f"{k.mention} is not yet banned.")
|
||||||
|
await db.remove_ban(k.id)
|
||||||
|
await message.reply(f"Successfully unbanned ! Sudhrr ja babu {k.mention}")
|
||||||
|
|
||||||
|
|
||||||
|
@app.on_message(filters.command("disablechat") & filters.user(SUDO))
|
||||||
|
async def disable_chat(bot, message):
|
||||||
|
if len(message.command) == 1:
|
||||||
|
return await message.reply("Give me a chat id")
|
||||||
|
r = message.text.split(None)
|
||||||
|
if len(r) > 2:
|
||||||
|
reason = message.text.split(None, 2)[2]
|
||||||
|
chat = message.text.split(None, 2)[1]
|
||||||
|
else:
|
||||||
|
chat = message.command[1]
|
||||||
|
reason = "No reason Provided"
|
||||||
|
try:
|
||||||
|
chat_ = int(chat)
|
||||||
|
except:
|
||||||
|
return await message.reply("Give Me A Valid Chat ID")
|
||||||
|
cha_t = await db.get_chat(chat_)
|
||||||
|
if not cha_t:
|
||||||
|
return await message.reply("Chat Not Found In DB")
|
||||||
|
if cha_t["is_disabled"]:
|
||||||
|
return await message.reply(f"This chat is already disabled:\nReason-<code> {cha_t['reason']} </code>")
|
||||||
|
await db.disable_chat(chat_, reason)
|
||||||
|
await message.reply("Chat Succesfully Disabled")
|
||||||
|
try:
|
||||||
|
buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
|
||||||
|
reply_markup = InlineKeyboardMarkup(buttons)
|
||||||
|
await bot.send_message(
|
||||||
|
chat_id=chat_,
|
||||||
|
text=f"<b>Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group.</b> \nReason : <code>{reason}</code>",
|
||||||
|
reply_markup=reply_markup,
|
||||||
|
)
|
||||||
|
await bot.leave_chat(chat_)
|
||||||
|
except Exception as e:
|
||||||
|
await message.reply(f"Error - {e}")
|
||||||
|
|
||||||
|
|
||||||
|
@app.on_message(filters.command("enablechat") & filters.user(SUDO))
|
||||||
|
async def re_enable_chat(bot: Client, ctx: Message):
|
||||||
|
if len(ctx.command) == 1:
|
||||||
|
return await ctx.reply("Give me a chat id")
|
||||||
|
chat = ctx.command[1]
|
||||||
|
try:
|
||||||
|
chat_ = int(chat)
|
||||||
|
except:
|
||||||
|
return await ctx.reply("Give Me A Valid Chat ID")
|
||||||
|
sts = await db.get_chat(int(chat))
|
||||||
|
if not sts:
|
||||||
|
return await ctx.reply("Chat Not Found In DB !")
|
||||||
|
if not sts.get("is_disabled"):
|
||||||
|
return await ctx.reply("This chat is not yet disabled.")
|
||||||
|
await db.re_enable_chat(chat_)
|
||||||
|
await ctx.reply("Chat Succesfully re-enabled")
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
from pyrogram import filters, Client
|
|
||||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
|
||||||
|
|
||||||
from database.users_chats_db import db
|
|
||||||
from misskaty import app
|
|
||||||
from misskaty.vars import SUPPORT_CHAT
|
|
||||||
from utils import temp
|
|
||||||
|
|
||||||
|
|
||||||
async def banned_users(_, client, message: Message):
|
|
||||||
return message.from_user and message.from_user.id in temp.BANNED_USERS
|
|
||||||
|
|
||||||
|
|
||||||
banned_user = filters.create(banned_users)
|
|
||||||
|
|
||||||
|
|
||||||
async def disabled_chat(_, client, message: Message):
|
|
||||||
return message.chat.id in temp.BANNED_CHATS
|
|
||||||
|
|
||||||
|
|
||||||
disabled_group = filters.create(disabled_chat)
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.private & banned_user & filters.incoming)
|
|
||||||
async def ban_reply(self: Client, ctx: Message):
|
|
||||||
ban = await db.get_ban_status(message.from_user.id)
|
|
||||||
await ctx.reply_msg(f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}')
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.group & disabled_group & filters.incoming)
|
|
||||||
async def grp_bd(self: Client, ctx: Message):
|
|
||||||
buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
|
|
||||||
reply_markup = InlineKeyboardMarkup(buttons)
|
|
||||||
vazha = await db.get_chat(ctx.chat.id)
|
|
||||||
k = await ctx.reply_msg(
|
|
||||||
f"CHAT NOT ALLOWED 🐞\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..\nReason : <code>{vazha['reason']}</code>.",
|
|
||||||
reply_markup=reply_markup,
|
|
||||||
)
|
|
||||||
try:
|
|
||||||
await k.pin()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await self.leave_chat(message.chat.id)
|
|
||||||
|
|
@ -22,7 +22,7 @@ async def bard_chatbot(self: Client, ctx: Message, strings):
|
||||||
if len(ctx.command) == 1:
|
if len(ctx.command) == 1:
|
||||||
return await ctx.reply_msg(strings("no_question").format(cmd=ctx.command[0]), quote=True, del_in=5)
|
return await ctx.reply_msg(strings("no_question").format(cmd=ctx.command[0]), quote=True, del_in=5)
|
||||||
msg = await ctx.reply_msg(strings("find_answers_str"), quote=True)
|
msg = await ctx.reply_msg(strings("find_answers_str"), quote=True)
|
||||||
data = {'message': ctx.input, 'session_id':'XAjzKUFvf_nQtNg4bt0pG54rCLnaWeJFE1_FXuQnVjNyfmjDhkKZyoqXqW5cgBmmnf8Eqg.'}
|
data = {'message': ctx.input, 'session_id':'XQjzKRYITZ7fhplF-rXa_GTynUwdctKq4aGm-lqUCCJzF98xqDulL9UKopIadNpQn0lvnA.'}
|
||||||
try:
|
try:
|
||||||
req = await http.post("https://bard-api-rho.vercel.app/ask", json=data)
|
req = await http.post("https://bard-api-rho.vercel.app/ask", json=data)
|
||||||
await msg.edit_msg(req.json().get("content"))
|
await msg.edit_msg(req.json().get("content"))
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,10 @@ __HELP__ = """
|
||||||
/logs [int] - Check logs bot
|
/logs [int] - Check logs bot
|
||||||
/shell [args] - Run Exec/Terminal CMD
|
/shell [args] - Run Exec/Terminal CMD
|
||||||
/download [link/reply_to_telegram_file] - Download file from Telegram
|
/download [link/reply_to_telegram_file] - Download file from Telegram
|
||||||
|
/disablechat [chat id] - Remove blacklist group
|
||||||
|
/enablechat [chat id] - Add Blacklist group
|
||||||
|
/banuser [chat id] - Ban user and block user so cannot use bot
|
||||||
|
/unbanuser [chat id] - Unban user and make their can use bot again
|
||||||
|
|
||||||
**For Public Use**
|
**For Public Use**
|
||||||
/stats - Check statistic bot
|
/stats - Check statistic bot
|
||||||
|
|
|
||||||
|
|
@ -135,47 +135,9 @@ async def member_has_joined(c: app, member: ChatMemberUpdated, strings):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.new_chat_members & filters.group)
|
@app.on_message(filters.new_chat_members & filters.group, group=4)
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def save_group(bot, message, strings):
|
async def greet_group(bot, message, strings):
|
||||||
r_j_check = [u.id for u in message.new_chat_members]
|
|
||||||
if temp.ME in r_j_check:
|
|
||||||
if not await db.get_chat(message.chat.id):
|
|
||||||
total = await bot.get_chat_members_count(message.chat.id)
|
|
||||||
r_j = message.from_user.mention if message.from_user else "Anonymous"
|
|
||||||
await bot.send_message(
|
|
||||||
LOG_CHANNEL,
|
|
||||||
strings("log_bot_added").format(ttl=message.chat.title, cid=message.chat.id, tot=total, r_j=r_j),
|
|
||||||
)
|
|
||||||
|
|
||||||
await db.add_chat(message.chat.id, message.chat.title)
|
|
||||||
if message.chat.id in temp.BANNED_CHATS:
|
|
||||||
# Inspired from a boat of a banana tree
|
|
||||||
buttons = [[InlineKeyboardButton(strings("support_btn"), url=f"https://t.me/{SUPPORT_CHAT}")]]
|
|
||||||
reply_markup = InlineKeyboardMarkup(buttons)
|
|
||||||
k = await message.reply(
|
|
||||||
text=strings("chat_not_allowed"),
|
|
||||||
reply_markup=reply_markup,
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
await k.pin()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
await bot.leave_chat(message.chat.id)
|
|
||||||
return
|
|
||||||
buttons = [
|
|
||||||
[
|
|
||||||
InlineKeyboardButton(strings("help_btn"), url=f"https://t.me/{temp.U_NAME}?start=help"),
|
|
||||||
InlineKeyboardButton(strings("update_btn"), url="https://t.me/YasirPediaChannel"),
|
|
||||||
]
|
|
||||||
]
|
|
||||||
reply_markup = InlineKeyboardMarkup(buttons)
|
|
||||||
await message.reply_text(
|
|
||||||
text=strings("welcome_thanks").format(ttl=message.chat.title),
|
|
||||||
reply_markup=reply_markup,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
for u in message.new_chat_members:
|
for u in message.new_chat_members:
|
||||||
try:
|
try:
|
||||||
pic = await app.download_media(u.photo.big_file_id, file_name=f"pp{u.id}.png")
|
pic = await app.download_media(u.photo.big_file_id, file_name=f"pp{u.id}.png")
|
||||||
|
|
@ -245,61 +207,6 @@ async def leave_a_chat(bot, message):
|
||||||
await bot.leave_chat(chat)
|
await bot.leave_chat(chat)
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.command("disable") & filters.user(SUDO))
|
|
||||||
async def disable_chat(bot, message):
|
|
||||||
if len(message.command) == 1:
|
|
||||||
return await message.reply("Give me a chat id")
|
|
||||||
r = message.text.split(None)
|
|
||||||
if len(r) > 2:
|
|
||||||
reason = message.text.split(None, 2)[2]
|
|
||||||
chat = message.text.split(None, 2)[1]
|
|
||||||
else:
|
|
||||||
chat = message.command[1]
|
|
||||||
reason = "No reason Provided"
|
|
||||||
try:
|
|
||||||
chat_ = int(chat)
|
|
||||||
except:
|
|
||||||
return await message.reply("Give Me A Valid Chat ID")
|
|
||||||
cha_t = await db.get_chat(chat_)
|
|
||||||
if not cha_t:
|
|
||||||
return await message.reply("Chat Not Found In DB")
|
|
||||||
if cha_t["is_disabled"]:
|
|
||||||
return await message.reply(f"This chat is already disabled:\nReason-<code> {cha_t['reason']} </code>")
|
|
||||||
await db.disable_chat(chat_, reason)
|
|
||||||
temp.BANNED_CHATS.append(chat_)
|
|
||||||
await message.reply("Chat Succesfully Disabled")
|
|
||||||
try:
|
|
||||||
buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
|
|
||||||
reply_markup = InlineKeyboardMarkup(buttons)
|
|
||||||
await bot.send_message(
|
|
||||||
chat_id=chat_,
|
|
||||||
text=f"<b>Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group.</b> \nReason : <code>{reason}</code>",
|
|
||||||
reply_markup=reply_markup,
|
|
||||||
)
|
|
||||||
await bot.leave_chat(chat_)
|
|
||||||
except Exception as e:
|
|
||||||
await message.reply(f"Error - {e}")
|
|
||||||
|
|
||||||
|
|
||||||
@app.on_message(filters.command("enable") & filters.user(SUDO))
|
|
||||||
async def re_enable_chat(bot, message):
|
|
||||||
if len(message.command) == 1:
|
|
||||||
return await message.reply("Give me a chat id")
|
|
||||||
chat = message.command[1]
|
|
||||||
try:
|
|
||||||
chat_ = int(chat)
|
|
||||||
except:
|
|
||||||
return await message.reply("Give Me A Valid Chat ID")
|
|
||||||
sts = await db.get_chat(int(chat))
|
|
||||||
if not sts:
|
|
||||||
return await message.reply("Chat Not Found In DB !")
|
|
||||||
if not sts.get("is_disabled"):
|
|
||||||
return await message.reply("This chat is not yet disabled.")
|
|
||||||
await db.re_enable_chat(chat_)
|
|
||||||
temp.BANNED_CHATS.remove(chat_)
|
|
||||||
await message.reply("Chat Succesfully re-enabled")
|
|
||||||
|
|
||||||
|
|
||||||
# Not to be used
|
# Not to be used
|
||||||
# @app.on_message(filters.command('invite') & filters.user(SUDO))
|
# @app.on_message(filters.command('invite') & filters.user(SUDO))
|
||||||
async def gen_invite(bot, message):
|
async def gen_invite(bot, message):
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ This feature inspired from SangMata Bot. I'm created simple detection to check u
|
||||||
# Check user that change first_name, last_name and usernaname
|
# Check user that change first_name, last_name and usernaname
|
||||||
@app.on_message(
|
@app.on_message(
|
||||||
filters.group & ~filters.bot & ~filters.via_bot,
|
filters.group & ~filters.bot & ~filters.via_bot,
|
||||||
group=3,
|
group=5,
|
||||||
)
|
)
|
||||||
@use_chat_lang()
|
@use_chat_lang()
|
||||||
async def cek_mataa(self: Client, ctx: Message, strings):
|
async def cek_mataa(self: Client, ctx: Message, strings):
|
||||||
|
|
|
||||||
2
utils.py
2
utils.py
|
|
@ -55,8 +55,6 @@ async def auto_clean():
|
||||||
|
|
||||||
# temp db for banned
|
# temp db for banned
|
||||||
class temp(object):
|
class temp(object):
|
||||||
BANNED_USERS = []
|
|
||||||
BANNED_CHATS = []
|
|
||||||
ME = None
|
ME = None
|
||||||
CURRENT = int(os.environ.get("SKIP", 2))
|
CURRENT = int(os.environ.get("SKIP", 2))
|
||||||
CANCEL = False
|
CANCEL = False
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue