- 20.06.2022
- 23 847
- 218
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Способ 1: Cкрипт проверки подписки на каналы Telegram
Cкрипт проверки подписки на каналы Telegram
ЯП : Python
Модули : aiogram, SQLAlchemy, gino
База : PostgreSQL
Бот для проверки на подписку канала. Добавляете в чат специальной командой и там же добавляете каналы, на которые нужно подписаться. Инструкция есть внутри скрипта. Делал давно, поэтому не пинайте за плохую структуру проекта и gino
Способ 2: Кусок кода для проверки подписки через бота
Написано на telebot
Что бы всё работало, бота нужно добавить в админы канала
Способ 3 : Бот для проверки подписки на канал или группу
Проверка подписан ли пользователь на канал или группу производится с помощью запроса к Telegram API методом . Для этого в конструкторе ботов Botmother предусмотрен такой сценарий.
1. Создадим экран запроса с компонентом «Запрос», метод Post.
2. Пропишем URL запроса:
где «ТОКЕН» — токен вашего бота в Телеграм (получен от BotFather).
3. В настройках компонента добавим тело запроса:
где id канала/группы — идентификатор канала/группы, на который проверяется подписка,
user_id — id пользователя, у которого проверяется подписка. Можно оставить как есть.
4. Выберем «Экран, который выпролнится при удачном выполнении запроса» — следующий шаг по сценарию (п. 5).
5. Добавим экран с компонентом "Развилка", чтобы распределять по разным сценариям пользователей в зависимости от того, подписан юзер или нет, или имеет другой статус, например, заблокирован.
Статус пользователя сообщит Телеграм, ответ попадет в переменные пользователя. Эти переменные можно посмотреть в разделе «Состояния пользователей».
Ответы от Телеграм приходят такие:
member - пользователь является подписчиком;
left — пользователь не подписан;
kicked — пользователь заблокирован;
administrator - админ;
creator — создатель.
В боте ответ попадет в переменную last_request. result. status, значит ее значение мы и проверим в Развилке.
left - не подписан
member - подписан
Пишем last_request. result. status в «Имя переменной, откуда развилка возьмет значение».
6. Добавляем Цели развилки (кнопка «Добавить цель» в настройках Развилки), т. е. куда перейдет пользователь в зависимости от его статуса, подписан или нет.
В целом схема экранов может быть такой.
7. И назначаем бота админом канала или группы.
Теперь после старта бот будет проверять, является пользователь подписчиком или нет. Если нет, то предложить подписаться на канал или вступить в группу. Можно включить такую проверку на любом этапе пользования ботом, например, после триала или для получения расширенного функционала.
Протестить такого бота со стороны пользователя можно тут: . Хотя подобные проверки на подписки наверняка встречались не раз.
Cкрипт проверки подписки на каналы Telegram
ЯП : Python
Модули : aiogram, SQLAlchemy, gino
База : PostgreSQL
Бот для проверки на подписку канала. Добавляете в чат специальной командой и там же добавляете каналы, на которые нужно подписаться. Инструкция есть внутри скрипта. Делал давно, поэтому не пинайте за плохую структуру проекта и gino
Способ 2: Кусок кода для проверки подписки через бота
Написано на telebot
Что бы всё работало, бота нужно добавить в админы канала
Python:
import telebot
import sqlite3 as sql
#База Данных
con = sql.connect("data.db", check_same_thread=False)
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS users(id INT)")
#Ваш бот
token = ""
bot = telebot.TeleBot(token)
#ID Вашего канала
chan_id =
#Клавиатура для проверки подписки
keyboard = telebot.types.InlineKeyboardMarkup()
subscribe = telebot.types.InlineKeyboardButton(text="Подписаться", url="ссылка на ваш канал")
check = telebot.types.InlineKeyboardButton(text="Проверить", callback_data="check")
keyboard.add(subscribe)
keyboard.add(check)
#Не нужная хуйня, вписал просто для видимости
menu = telebot.types.ReplyKeyboardMarkup(True, True)
menu.add("Вы уже подписаны")
@bot.message_handler(commands=["start"])
def start(message):
users = cur.execute("SELECT id FROM users WHERE id = ?", (message.chat.id, )).fetchone()
con.commit()
if users == None: #Если юзер ещё не в БД
bot.send_message(message.chat.id, "Что-бы продолжить подпишитесь на канал", reply_markup=keyboard)
else: #Уже в бд
bot.send_message(message.chat.id, "Вы уже подписаны", reply_markup=menu)
#Тут мы чекаем подписку
@bot.callback_query_handler(func=lambda call: True)
def c_listener(call):
if call.data == "check":
x = bot.get_chat_member(chan_id, call.message.chat.id)
if x.status == "member" or x.status == "creator" or x.status == "administrator":
bot.send_message(call.message.chat.id, "Добро пожаловать!", reply_markup=menu)
cur.execute("INSERT INTO users VALUES(?)", (call.message.chat.id, ))
con.commit()
else:
bot.send_message(call.message.chat.id, "Вы не подписались!", reply_markup=keyboard)
if __name__ == "__main__":
bot.polling()
Способ 3 : Бот для проверки подписки на канал или группу
Проверка подписан ли пользователь на канал или группу производится с помощью запроса к Telegram API методом . Для этого в конструкторе ботов Botmother предусмотрен такой сценарий.
1. Создадим экран запроса с компонентом «Запрос», метод Post.
2. Пропишем URL запроса:
где «ТОКЕН» — токен вашего бота в Телеграм (получен от BotFather).
3. В настройках компонента добавим тело запроса:
Код:
{
"chat_id": "id канала/группы",
"user_id": "{{this_user.platform_id}}"
}
где id канала/группы — идентификатор канала/группы, на который проверяется подписка,
user_id — id пользователя, у которого проверяется подписка. Можно оставить как есть.
4. Выберем «Экран, который выпролнится при удачном выполнении запроса» — следующий шаг по сценарию (п. 5).
5. Добавим экран с компонентом "Развилка", чтобы распределять по разным сценариям пользователей в зависимости от того, подписан юзер или нет, или имеет другой статус, например, заблокирован.
Статус пользователя сообщит Телеграм, ответ попадет в переменные пользователя. Эти переменные можно посмотреть в разделе «Состояния пользователей».
Ответы от Телеграм приходят такие:
member - пользователь является подписчиком;
left — пользователь не подписан;
kicked — пользователь заблокирован;
administrator - админ;
creator — создатель.
В боте ответ попадет в переменную last_request. result. status, значит ее значение мы и проверим в Развилке.
left - не подписан
member - подписан
Пишем last_request. result. status в «Имя переменной, откуда развилка возьмет значение».
6. Добавляем Цели развилки (кнопка «Добавить цель» в настройках Развилки), т. е. куда перейдет пользователь в зависимости от его статуса, подписан или нет.
В целом схема экранов может быть такой.
7. И назначаем бота админом канала или группы.
Теперь после старта бот будет проверять, является пользователь подписчиком или нет. Если нет, то предложить подписаться на канал или вступить в группу. Можно включить такую проверку на любом этапе пользования ботом, например, после триала или для получения расширенного функционала.
Протестить такого бота со стороны пользователя можно тут: . Хотя подобные проверки на подписки наверняка встречались не раз.
Вложения
Последние темы в этом разделе:
- Скрипт сортировщик файлов
- Скрипт шаблон web приложения Django
- Скрипт рейтинг фильмов/сериалов
- Скрипт Telegram бот парсер товаров с Wildberries
- Скрипт Телеграм бот для анонимного общения
- Скрипт Telegram бот для распаковки архивов
- Слив сборник Телеграм Казино ботов (8 штук)
- Скрипт Телеграм бот автоказино mcduck casino
- Скрипт для слежки за инстаграм аккаунтом
- Скрипт Телеграм бот парсер новостей из habr в свой канал