File size: 3,984 Bytes
602b719
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import os
import telebot
from telebot import types
import time

BOT_TOKEN = "8019494761:AAF18VXTr7hg3-lK3qTnRtPOicybhe5pssk"   # ← NAYA TOKEN DAAL DO
ADMIN_ID = 8109723300

bot = telebot.TeleBot(BOT_TOKEN)
blocked_users = set()
spam_tracker = {}       # {user_id: [timestamp1, timestamp2, ...]}
forwarded = {}          # {admin_msg_id: user_id}

@bot.message_handler(commands=['start'])
def start(message):
    if message.chat.id == ADMIN_ID:
        bot.reply_to(message, "βœ… Admin mode FULL ON\nSpam detect + Block/Unblock + Multiple replies ON!")
    else:
        bot.reply_to(message, "πŸ“© Koi bhi message bhejo!")

@bot.message_handler(commands=['blocked'])
def show_blocked(message):
    if message.chat.id != ADMIN_ID:
        return
    if not blocked_users:
        bot.reply_to(message, "Koi blocked user nahi hai.")
    else:
        text = "🚫 Blocked Users:\n" + "\n".join([str(uid) for uid in blocked_users])
        bot.reply_to(message, text)

@bot.message_handler(commands=['unblock'])
def unblock(message):
    if message.chat.id != ADMIN_ID:
        return
    try:
        uid = int(message.text.split()[1])
        if uid in blocked_users:
            blocked_users.remove(uid)
            bot.reply_to(message, f"βœ… User {uid} unblocked!")
        else:
            bot.reply_to(message, "Ye user already unblocked hai.")
    except:
        bot.reply_to(message, "Use: /unblock 123456789")

@bot.message_handler(func=lambda m: True, content_types=['text','photo','video','document','audio','voice','sticker','animation','video_note'])
def handle_all(message):
    user_id = message.from_user.id
    if user_id in blocked_users:
        return

    # Spam detection (3 sec mein 5 messages)
    now = time.time()
    if user_id not in spam_tracker:
        spam_tracker[user_id] = []
    spam_tracker[user_id].append(now)
    # Purane messages hatao (3 sec se zyada)
    spam_tracker[user_id] = [t for t in spam_tracker[user_id] if now - t <= 3]
    
    show_block = len(spam_tracker[user_id]) >= 5

    if user_id == ADMIN_ID:
        # Admin reply (multiple allowed)
        if message.reply_to_message and message.reply_to_message.message_id in forwarded:
            target = forwarded[message.reply_to_message.message_id]
            try:
                bot.copy_message(target, ADMIN_ID, message.message_id)
                bot.reply_to(message, "βœ… Reply bhej diya!")
            except:
                bot.reply_to(message, "❌ User ne bot block kiya.")
        else:
            bot.reply_to(message, "πŸ‘† Kisi buyer ke message ko reply karke jawab do.")
    else:
        # Buyer message β†’ admin ko with info
        name = message.from_user.first_name or "Unknown"
        username = "@" + (message.from_user.username or "NoUsername")
        info = f"πŸ›’ **Buyer Info**\nName: {name}\nUsername: {username}\nID: {user_id}\n\n"

        markup = types.InlineKeyboardMarkup()
        if show_block:
            markup.add(types.InlineKeyboardButton("🚫 Block this Buyer", callback_data=f"block_{user_id}"))

        if message.content_type == 'text':
            sent = bot.send_message(ADMIN_ID, info + message.text, reply_markup=markup, parse_mode="Markdown")
        else:
            sent = bot.copy_message(ADMIN_ID, message.chat.id, message.message_id, 
                                  caption=info + (message.caption or ""), reply_markup=markup)

        forwarded[sent.message_id] = user_id
        bot.reply_to(message, "βœ… Message admin tak pahunch gaya!")

@bot.callback_query_handler(func=lambda call: True)
def handle_block(call):
    if call.data.startswith("block_"):
        uid = int(call.data.split("_")[1])
        blocked_users.add(uid)
        bot.answer_callback_query(call.id, f"User {uid} blocked βœ…")
        bot.send_message(ADMIN_ID, f"🚫 Buyer {uid} permanently blocked!")

print("πŸ€– Advanced Anti-Spam Bot ON βœ…\n5 msg in 3 sec = Block button | /unblock ID | /blocked list")
bot.infinity_polling()