Исходник телеграмм бот для скама на ответы ОГЭ (а может и нет)

sh1r0

Псевдо Хакер
Сообщения
74
Реакции
4
В боте есть реферальная система, и система проверки подписки на канал
Чтобы система проверки на подписку канала заработала нужно в свой канал пригласить вашего бота и дать админа ему

Python:
import telebot
from telebot import types
import json

BOT_TOKEN = 'токен'
CHANNEL_ID = '@канал_на_который_должны_подписаться'
VIP_CHANNEL_ID = 'канал_с_ответами_можете_просто_убрать_и_все'

bot = telebot.TeleBot(BOT_TOKEN)

INVITED_USERS_FILE = 'invited_users.json'

try:
    with open(INVITED_USERS_FILE, 'r') as f:
        invited_users = json.load(f)
except FileNotFoundError:
    invited_users = {}


def check_subscription(chat_id):
    try:
        member = bot.get_chat_member(CHANNEL_ID, chat_id)
        return member.status in ['member', 'creator', 'administrator']
    except telebot.apihelper.ApiException:
        return False

def handle_invitation(user_id, referral_id):
    user_id = str(user_id)
    referral_id = str(referral_id)

    if referral_id not in invited_users:
        invited_users[referral_id] = {"invited_count": 0, "used_links": []}

    if user_id not in invited_users[referral_id]["used_links"]:
        invited_users[referral_id]["invited_count"] += 1
        invited_users[referral_id]["used_links"].append(user_id)
        
        bot.send_message(referral_id,
                         f"🎉 Вы пригласили ещё одного пользователя!\n"
                         f"Всего приглашено: {invited_users[referral_id]['invited_count']} / 15")

        if invited_users[referral_id]["invited_count"] >= 15:
            bot.send_message(referral_id,
                             f"🥳 Вы пригласили 15 человек! "
                             f"Вот ссылка на VIP канал: {VIP_CHANNEL_ID}")

        with open(INVITED_USERS_FILE, 'w') as f:
            json.dump(invited_users, f)
    else:
        bot.send_message(user_id, "Вы уже переходили по этой реферальной ссылке.")


@bot.message_handler(commands=['start'])
def start(message):
    chat_id = message.chat.id
    user_id = str(chat_id)
    
    referral_id = None
    if len(message.text.split()) > 1:
        referral_id = message.text.split()[1]

        if referral_id:
            handle_invitation(user_id, referral_id)

    if not referral_id and not check_subscription(chat_id):
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        check_button = types.InlineKeyboardButton(text="Проверить подписку ✅", callback_data='check_subscription')
        subscribe_button = types.InlineKeyboardButton(text="Подписаться на канал 📢", url=f"https://t.me/{CHANNEL_ID[1:]}")
        keyboard.add(check_button, subscribe_button)
        bot.send_message(chat_id, 'Для продолжения работы с ботом подпишись на наш канал!', reply_markup=keyboard)
    else:
        show_referral_info(message)


@bot.callback_query_handler(func=lambda call: True)
def handle_callback(call):
    chat_id = call.message.chat.id

    if call.data == 'check_subscription':
        if check_subscription(chat_id):
            bot.delete_message(chat_id, call.message.message_id)

            show_referral_info(call.message)
        else:
            bot.answer_callback_query(call.id, text="Ты всё ещё не подписался на канал. Попробуй снова!", show_alert=True)

def show_referral_info(message):
    chat_id = message.chat.id
    user_id = str(chat_id)

    if user_id not in invited_users:
        invited_users[user_id] = {"invited_count": 0, "used_links": []}

    referral_link = f"https://t.me/ссылка_на_вашего_бота?start={user_id}"

    message_text = (
        f"Приведи 15 человек по ссылке ниже и тогда тебе дадут бесплатный доступ в VIP ОГЭ\n\n"
        f"Приглашено: {invited_users[user_id]['invited_count']} / 15\n\n"
        f"Твоя персональная ссылка: {referral_link}"
    )
    bot.send_message(chat_id, message_text)

    with open(INVITED_USERS_FILE, 'w') as f:
        json.dump(invited_users, f)


@bot.message_handler(func=lambda message: True)
def handle_message(message):
    pass

bot.polling(none_stop=True)
 
Верх Низ