Загрузка...

Обязательная подписка работает не так , накину за помощь

Тема в разделе Python создана пользователем sskupka 18 дек 2024. 99 просмотров

  1. sskupka
    sskupka Автор темы 18 дек 2024 209 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 18 дек 2024 4274 13 мар 2022
    асинхронность в рот ебали
     
Top
Загрузка...