Когда запускаю код и в телеграм боте нажимаю кнопку "проверить" подписку то бот просто грузит и в итоге не отправляет нкиакого сообщения в овтет

import telebot
from telebot import types

bot = telebot.TeleBot('Токен скрыл, в нем нет ошибки')

@bot.message_handler(commands=['start'])
def main(message):
    markup = types.InlineKeyboardMarkup()
    btn1 = types.InlineKeyboardButton('1win', url='https://1wowei.xyz/casino/list?open=register#lp1t')
    markup.row(btn1)
    btn2 = types.InlineKeyboardButton('Продолжить', callback_data='delete')
    markup.row(btn2)
    bot.send_message(message.chat.id, "Привет, чтобы продолжить зарегистрируйся на 1win", reply_markup=markup)

@bot.callback_query_handler(func=lambda call:True)
def callback(call):
    if call.message:
        if call.data == 'delete':
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text='Отлично! Теперь напиши команду /next')

def start_markup():
    markup = types.InlineKeyboardMarkup(row_width=True)
    link_keyboard1 = types.InlineKeyboardButton("Канал", url="https://t.me/winteam777")
    check_keyboard = types.InlineKeyboardButton("Проверить✅", callback_data="check")
    markup.add(link_keyboard1, check_keyboard)
    return markup

@bot.message_handler(commands=['next'])
def start(message):
    chat_id = message.chat.id
    bot.send_message(chat_id, "Чтобы продолжить подпишись на наш канал!", reply_markup=start_markup())

def check(call):
    status = ['creator', 'administrator', 'member']
    for i in status:
        if i == bot.get_chat_member(chat_id="-1002022836960", user_id=call.message.chat.id).status:
            bot.send_message(call.message.chat.id, "Вы успешно подписались на канал!")
            break
    else:
        bot.send_message(call.message.chat.id, "Подписка на канал обязательна!", reply_markup=start_markup())

@bot.callback_query_handler(func=lambda call:True)
def callback_handler(call):
    if call.data == "check":
        check(call)

bot.polling(none_stop=True)

Ответы (1 шт):

Автор решения: Nqweqweqwe

В функции check в chat_id нужно заменить на call.message.chat.id или call.message.from_user.id. Вот измененный код:

def check(call):
    status = ['creator', 'administrator', 'member']
    for i in status:
        if i == bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.message.chat.id).status:
            bot.send_message(call.message.chat.id, "Вы успешно подписались на канал!")
            break
    else:
        bot.send_message(call.message.chat.id, "Подписка на канал обязательна!", reply_markup=start_markup())

Если не помогло то проверьте добавили вы бота в канал, на который нужно подписаться? Если да, то при нажатии на аватар канала будет видно вашего бота. Если нет, то добавьте его по инструкции ниже:

  1. Откройте ТГ перейти в нужный канал
  2. Коснитесь аватарки канала и выберите строку Администраторы, а далее добавить администратора
  3. Наберите символ собачки @ и введите название бота, например @test
  4. В появившемся списке найдите своего бота, нажмите по нему и поставьте галочки на против всех функций, но если нужно только проверка подписки, то хватит и одной галки Администратор.

И возможно, если вы будете в chat_id писать user_id в формате string, а не integer, то может вызываться ошибка, если память не подводит

→ Ссылка