import re import asyncio import logging from pyrogram import * from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton from config import * from database import db from helper_regex import is_blocked_markdown_code logging.basicConfig( format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S", ) logging.getLogger("pyrogram").setLevel(logging.WARNING) eval_regex = r"^(\.e(?:val)?|\.exec|\.sh|\.term|\.python|\.ex|\.bash|\.ls)(\s|$)" bot = Client( "antibot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN, ) @bot.on_message(filters.command("start") & filters.private) async def start(client, message): reply_markup = InlineKeyboardMarkup( # type: ignore [ [ InlineKeyboardButton( # type: ignore "TAMBAH KE GRUP LU SEKARANG 🔥", url=f"https://t.me/{client.me.username}?startgroup=true" ) ] ] ) await db.antieval.update_one( {"bot_id": client.me.id}, {"$addToSet": {"user_id": message.from_user.id}}, upsert=True, ) await client.send_message( -1002407639480, f"Mention {message.from_user.mention} ({message.from_user.id}) has started the bot.", reply_markup=InlineKeyboardMarkup( [ [ InlineKeyboardButton( # type: ignore "View User", url=f"tg://openmessage?user_id={message.from_user.id}" ) ] ] ) ) await client.reply_text( "**GUE BOT ANTI EVAL ‼️**\n\n" "GRUP YANG MASIH PAKE `.e`, `.eval`, `.sh`, `.term`, `.exec` BAKAL DIHAPUS SAMA GUE!\n" "LU SOK JAGO PAKE USERBOT? EVAL MULU? SANA BELAJAR CODING DULU DI VS CODE‼️\n\n" "**TAMBAH GUE KE GRUP MUTUALAN LU LANGSUNG AUTO DELETED YANG PAKE EVAL 💀**", reply_markup=reply_markup, ) @bot.on_chat_member_updated(filters.group) async def group_join(client, message): if message.new_chat_member.user.id == client.me.id: privileges = message.new_chat_member.privileges if not privileges or not privileges.can_restrict_members or not privileges.can_delete_messages: await client.send_message( message.chat.id, "GUA KELUAR DULU YA! LU NARIK BOT TAPI GAK KASIH IZIN BANNED! 💥\n" "BIKIN BOT BUAT APA KALO CUMA JADI PAJANGAN?" ) await client.leave_chat(message.chat.id) logging.info(f"Left group: {message.chat.title} ({message.chat.id})") return if message.new_chat_member.user.id == client.me.id: if message.chat.id in LEAVE_GROUP_LIST: await client.leave_chat(message.chat.id) await message.reply_text( "GUA KELUAR DULU YA! LU TARIK BOT KE GRUP DEVELOPER YANG SUDAH DIBLACKLIST! 💥\n" "GAK MALU APA TARIK BOT TAPI GAK TAU ATURAN?\n" "INI BUKAN BOT PAJANGAN, INI BOT ANTI EVAL! 🚫🧠" ) return await db.antieval.update_one( {"bot_id": client.me.id}, {"$addToSet": {"chat_id": message.chat.id}}, upsert=True, ) logging.info(f"Added to group: {message.chat.title} ({message.chat.id})") @bot.on_message(filters.via_bot) async def block_inline_via_bot(client, message): if message.via_bot: if message.chat.id in [-1002407639480]: return username = message.via_bot.username.lower() if any(ok in username for ok in BLOCKED_INLINE_BOTS): logging.info(f"Blocked message from {message.from_user.first_name} in {message.chat.title}") return await message.delete() if message.via_bot and "eval" in message.via_bot.username.lower(): logging.info(f"Blocked message from {message.from_user.first_name} in {message.chat.title}") return await message.delete() @bot.on_message(filters.group, group=-1) async def markdown_code(client, message): if message.chat.id in [-1002407639480]: return check = (await client.get_chat_member(message.chat.id, client.me.id)).privileges if not check or not check.can_restrict_members or not check.can_delete_messages: await message.reply_text( "GUA KELUAR DULU YA! LU NARIK BOT TAPI GAK KASIH IZIN BANNED! 💥\n" "BIKIN BOT BUAT APA KALO CUMA JADI PAJANGAN?" ) await client.leave_chat(message.chat.id) logging.info(f"Left group: {message.chat.title} ({message.chat.id})") return if message.text.markdown is None: return if is_blocked_markdown_code(message.text.markdown or ""): logging.info(f"Blocked message from {message.from_user.first_name} in {message.chat.title}") await message.delete() return @bot.on_message(filters.regex(eval_regex) & filters.group) async def block_userbot_eval(client, message): if message.chat.id in [-1002407639480]: return check = (await client.get_chat_member(message.chat.id, client.me.id)).privileges if not check or not check.can_restrict_members or not check.can_delete_messages: await message.reply_text( "GUA KELUAR DULU YA! LU NARIK BOT TAPI GAK KASIH IZIN BANNED! 💥\n" "BIKIN BOT BUAT APA KALO CUMA JADI PAJANGAN?" ) await client.leave_chat(message.chat.id) logging.info(f"Left group: {message.chat.title} ({message.chat.id})") return logging.info(f"Blocked message from {message.from_user.first_name} in {message.chat.title}") await message.delete() async def main(): await db.connect() await bot.start() me_user = await bot.get_me() me_user = me_user.first_name logging.info(f"Info Bot: user {me_user} started!") await idle() if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(main())