Загрузка...

Mandatory subscription doesnt work that way, Ill thank you for your help

Thread in Python created by sskupka Dec 18, 2024. 98 views

  1. sskupka
    sskupka Topic starter Dec 18, 2024 209 Oct 12, 2024
    Python
    def check_subscription(user_id, channel_ids):
    if not channel_ids:
    return True, [] # Если нет каналов для проверки, считаем, что подписка выполнена

    not_subscribed_links = [] # Список для хранения ссылок на каналы, на которые пользователь не подписан

    for channel_id in channel_ids:
    try:
    chat_member = bot.get_chat_member(channel_id, user_id)
    if chat_member.status not in ['member', 'administrator', 'creator']:
    invite_link = bot.create_chat_invite_link(channel_id, member_limit=1).invite_link
    if invite_link: # Проверяем, что ссылка действительная
    not_subscribed_links.append(invite_link)
    except Exception as e:
    logging.error(f"Ошибка при проверке подписки для пользователя {user_id} на канале {channel_id}: {e}")

    if not_subscribed_links:
    return False, not_subscribed_links # Возвращаем статус подписки и список ссылок

    return True, [] # Пользователь подписан на все каналы


    @bot.message_handler(commands=['start'])
    def handle_start(message):
    user_id = message.from_user.id
    username = message.from_user.username or f"User{user_id}"

    channel_links = [
    "https://t.me/+BD5mUDw_OcYwNsf",
    "https://t.me/+BD5mUDw_OcYwNjgy"
    ]

    channel_ids = [-1002362227020, -1002350517914] # Ваши каналы
    is_subscribed, invite_links = check_subscription(user_id, channel_ids)

    if not is_subscribed:
    markup = types.InlineKeyboardMarkup()

    # Добавляем кнопки для подписки на статичные ссылки
    for link in channel_links:
    subscribe_button = types.InlineKeyboardButton("Подписаться", url=link)
    markup.add(subscribe_button)

    check_subscription_button = types.InlineKeyboardButton("✅ Проверить подписку", callback_data='check_subscription')
    markup.add(check_subscription_button)

    bot.send_message(user_id, "<b> Добро пожаловать!\n\nПодпишитесь на каналы, чтобы продолжить!</b>", parse_mode='HTML', reply_markup=markup)
    return # Завершаем выполнение функции

    # Если пользователь уже существует, просто отправляем приветственное сообщение
    if user_exists(user_id):
    ref_link = f"https://t.me/{bot.get_me().username}?start={user_id}" # Генерируем реферальную ссылку
    send_welcome_message(user_id, ref_link)
    return

    referral_id = None

    # Обработка реферального ID
    args = message.text.split()
    if len(args) > 1 and args[1].isdigit():
    referral_id = int(args[1])
    if user_exists(referral_id):
    bot.send_message(referral_id, f"<b>☑ По вашей реферальной ссылке перешел новый пользователь.\n\nНа ваш баланс зачислено \n\nПерешли ссылку — {ref_link}</b>", parse_mode='HTML')
    increment_referrals(referral_id)
    increment_stars(referral_id, 3.71)

    add_user(user_id, username, referral_id)
    ref_link = generate_referral_link(user_id) # Генерируем реферальную ссылку
    send_welcome_message(user_id, ref_link)

    # Запускаем таймер для отправки сообщения через 10 минут
    threading.Timer(600, send_reminder_if_no_referrals, args=(user_id,)).start()
    сделать что бы это говно начало коректно работать, что бы кнопка проверки подписки работа, если человек подписан не на все каналы то присылать ему только те, на которые он не подписан, кто даст рабочий код закину за помощь на маркет
     
  2. Bellomore
    Bellomore Dec 18, 2024 4274 Mar 13, 2022
    асинхронность в рот ебали
     
Top
Loading...