← Вернуться к списку тем

Проверка проверка подписки на канал

Помогите написать код для проверки на подписку на канал на сайте 

Если пользователь подписан показывать контент если нет предлагать подписаться на канал 

Вот код но он не работает правильно

<?php

// Получаем ID пользователя из сессии 
$userId = "чат";
$tokin = "токин";
$kanal = "канал";
// Делаем запрос в Telegram API для получения статуса подписки
$telegramApiUrl = "https://api.telegram.org/bot$tokin/getChatMember?chat_id=$kanal&user_id=".$userId;

$result = file_get_contents($telegramApiUrl);
$userStatus = json_decode($result, true);

// // Проверяем статус
if($userStatus['status'] == 'left' || $userStatus['status'] == 'kicked') {

  // Пользователь не подписан - показываем сообщение
  echo "Пожалуйста, подпишитесь на наш Telegram канал!";

} elseif ($userStatus['status'] == 'member' || $userStatus['status'] == 'administrator') {

  // Пользователь подписан - показываем контент
  include 'index.php';

} else {

  // Статус не определен - тоже показываем сообщение
  echo "Пожалуйста, подпишитесь на наш Telegram канал!"; 

}

Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.

  • iMakeBots [1 год назад]

    Попробуй так - не проверял

    <?php
    	// Получаем ID пользователя из сессии 
    	$userId = "чат";
    	$token = "токен";
    	$kanal = "канал";
    	// Делаем запрос в Telegram API для получения статуса подписки
    	$telegramApiUrl = "https://api.telegram.org/bot" . $token . "/getChatMember?chat_id=" . $kanal . "&user_id=" . $userId;
    
    	$result = file_get_contents($telegramApiUrl);
    	$userStatus = json_decode($result, true);
    
    	// Проверяем статус
    	if(in_array($userStatus['status'], ['member', 'administrator', 'creator']) {
    	  // Пользователь подписан - показываем контент
    	  include 'index.php';
    	} else {
    	  // показываем сообщение
    	  echo "Пожалуйста, подпишитесь на наш Telegram канал!"; 
    	}
  • 🜲 s.ᴋ. [1 год назад → iMakeBots]

    Не работает может проверять на статус  left и выдавать сообщение что нужно подписаться в остальных случаях показывать контент 

  • iMakeBots [1 год назад → 🜲 s.ᴋ.]

    Конечно не будет работать ))

    <?php
    	// Получаем ID пользователя из сессии 
    	$userId = "чат";
    	$token = "токен";
    	$kanal = "канал";
    	// Делаем запрос в Telegram API для получения статуса подписки
    	$telegramApiUrl = "https://api.telegram.org/bot" . $token . "/getChatMember?chat_id=" . $kanal . "&user_id=" . $userId;
    
    	$result = file_get_contents($telegramApiUrl);
    	$userStatus = json_decode($result, false);
    
    	// Проверяем статус - все лежит в объекте result
    	if(in_array($userStatus->result->status, ['member', 'administrator', 'creator']) {
    	  // Пользователь подписан - показываем контент
    	  include 'index.php';
    	} else {
    	  // показываем сообщение
    	  echo "Пожалуйста, подпишитесь на наш Telegram канал!"; 
    	}
  • 🜲 s.ᴋ. [1 год назад]

    Нашёл решение 

    <?php
    // Задаем переменные
    $token = 'токин'; // Замените на свой токен бота
    $user_id = 'чат'; // Замените на ID пользователя, которого нужно проверить
    $channel = 'канал'; // Замените на имя канала, который нужно проверить
    
    // Отправляем запрос на проверку подписки пользователя на канал через Telegram Bot API
    $url = "https://api.telegram.org/bot$token/getChatMember?chat_id=$channel&user_id=$user_id";
    $response = file_get_contents($url);
    $data = json_decode($response, true);
    
    // Проверяем, является ли пользователь участником канала
    $is_member = $data['result']['status'] == 'member' || $data['result']['status'] == 'administrator';
    
    // Если пользователь участник канала, выводим сообщение об этом
    if ($is_member) {
        echo "Пользователь $user_id подписан на канал $channel";
    } else {
        echo "Пользователь $user_id Не подписан на канал $channel";
    }
    ?>
  • iMakeBots [1 год назад → 🜲 s.ᴋ.]

    Можно и так, но лучше переходите на ооп подход

  • iMakeBots [1 год назад → 🜲 s.ᴋ.]

    есть еще роль-статус CREATOR