Как в Телеграмме сделать бота для канала

Обложка: Создаём бота в Telegram для управления платными подписками на канал

Telegram набирает популярность не только у пользователей, но и у разработчиков. Многие создают там свои каналы и ботов. В этой статье мы создадим приватный канал с фасадом для него — ботом.

Содержание:

  1. Возможности бота
  2. Создание бота
  3. Создание базы данных
  4. Создание бэкенда
  5. Подключение к API Telegram
  6. Создание фронтенда
  7. Вывод

Возможности бота

Через бота можно будет:

  • получить полную информацию о канале;
  • получить демо-доступ на канал. Пользователь в автоматическом режиме получит ссылку на вступление в приватный канал. Через n дней демо-доступа пользователь будет удалён из канала;
  • выдать полный доступ для пользователей. Пользователь сможет отправить данные для получения полного доступа. Данные могут быть проверены как в автоматическом режиме, так и в ручном — самим администратором. По итогам пользователю выдаётся полный доступ.

Дополнительно к этому мы создадим интерфейс на React для управления подписками и сбором аналитики по каналу. Особенность этого решения — простота. Время на его создание — около 4 часов. Все компоненты решения для удобства будут развёрнуты в docker-контейнерах. Схема нашего решения будет выглядеть так:

Как создать и настроить канал в Telegram/Как создать бота в Телеграм

Схема работы бота

Создание бота

Начнём с самого простого шага — создания бота в Telegram. Для этого достаточно написать команду /newbot боту по созданию других ботов BotFather и следовать инструкциям:

Создать бота в Telegram

После успешного создания бота вы получите сообщение:

Успешное создание бота в Telegram

Также появится токен, который мы будем использовать для подключения к боту из своего приложения.

Бот для приватного канала с информацией о самых вкусных плюшечках и пирожочках создан. Далее создадим сам канал и добавим туда нашего бота в качестве администратора.

Бот среди администраторов канала

Создание базы данных

Для простоты решения поднимем PostgreSQLв docker-контейнере:

docker network create buns-net docker run -d —network=»buns-net» —name bot-postgres -e POSTGRES_PASSWORD=Pass2020! -p 5432:5432 postgres

Контейнер запущен, БД готова к работе.

Для минимальной аналитики и контроля подписок нам хватит одной таблицы. Заполним её модель и далее в миграции lequibase создадим:

Как сделать бота в телеграмме | Telegram Bot

Таблица для контроля подписок

Создание бэкенда

Перейдём на Spring Initializr и сгенерируем каркас бэкенд-приложения. Достаточно выбрать следующие библиотеки:

Создание приложения на Spring

Развернём сгенерированный проект в среде разработки и добавим туда зависимость для работы с Telegram:

compile «org.telegram:telegrambots-spring-boot-starter:5.0.1»

Также добавим библиотеку для мапинга, которая нам пригодится при мапинге сущностей БД в REST-модели:

compile(«net.rakugakibox.spring.boot:orika-spring-boot-starter:1.9.0»)

Создадим миграцию для таблицы, добавим описание подключения к БД и запустим приложение:

Пример структуры проекта

1-add-tables.yaml databaseChangeLog: — changeSet: id: 1-add-tables author: avolkov changes: — createTable: tableName: subscriber columns: — column: name: id type: bigint autoIncrement: true constraints: primaryKey: true nullable: false — column: name: name type: varchar(255) constraints: nullable: true — column: name: login type: varchar(255) constraints: nullable: true — column: name: telegram_id type: varchar(100) constraints: nullable: false — column: name: start_subscribe type: timestamp constraints: nullable: false — column: name: end_subscribe type: timestamp constraints: nullable: false — column: name: type_subscribe type: varchar(50) constraints: nullable: false — column: name: enable type: boolean constraints: nullable: false db.changelog-master.yaml databaseChangeLog: — include: file: db/changelog/1-add-tables.yaml
application.yaml server: servlet: context-path: /api spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://bot-postgres:5432/postgres — при локальной разработке поменять на localhost username: postgres password: Pass2020! jpa: properties: hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect hibernate.globally_quoted_identifiers: true

После успешного запуска приложения накатится миграция и создастся таблица:

Таблица создана, приложение успешно запустилось. Теперь можно приступить к описанию Data Access Layer. Для этого опишем сущность, репозиторий и сервис:

Структура бота

Подключение к API Telegram

Чтобы можно было получать данные из бота в наше приложение, достаточно унаследовать от абстрактного класса org.telegram.telegrambots.bots.TelegramLongPollingBot и реализовать три метода:

public String getBotUsername(); // логин бота, который устанавливался при создании бота public String getBotToken(); // токен, полученный при создании от BotFather public void onUpdateReceived(Update update); // метод срабатывает каждый раз, когда боту отправляется сообщение

Еще по теме:  Realme не проходят звонки а Телеграмм

Добавим в application.yaml данные бота, которые получили от BotFather:

telegram: name: bot_login token: 164024384:AAFHwer2342pVF3zm_wZ45454554JVr_I chanel-id: -1001415979632 — id приватного канала, куда будет даваться доступ

Реализуем поддержку 5 команд:·

  • /info — запрос информации о боте и канале;
  • /start — такая же, как и info. Нужна для первого сообщения с ботом;
  • /demo — получение демо-доступа на канал;
  • /access — запрос на получение информации о полном доступе;
  • /success — запрос на получение полного доступа.

Чтобы всеми этими командами было удобно пользоваться, реализуем их в виде кнопок, используя org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup.

Готово! Теперь бот умеет обрабатывать следующие команды.

Результат ответа на вопрос, о чём канал

Как получить доступ?

Результат ответа на вопрос, как получить доступ

Хочу демо-доступ на 3 дня.

Отправка запроса на получение демо-доступа

После получения демо-доступа информация об этом сохраняется в БД. При повторном запросе на демо-доступ пользователю отобразится ошибка:

Ошибка при повторном запросе демо-доступа

Если пользователи могут получать временный доступ, то появляется задача проверки истечения этого доступа. К сожалению, не получится создать планировщик, который будет раз в день отписывать пользователей с истекшим доступом. Поэтому надо реализовать поддержку ещё одной команды для чистки подписчиков.

Чтобы этой командой мог пользоваться только администратор, его Chat ID надо добавить в application.yaml. Далее этот идентификатор будет использоваться при проверке, от кого пришла команда и имеет ли этот пользователь права на выполнение этой команды.

telegram: name: bot_login token: 164024384:AAFHwer2342pVF3zm_wZ45454554JVr_I chanel-id: -1001415979632 — id приватного канала, куда будет выдаваться доступ support: chat-id: 14334538544

Дополнительно к этому требуется реализовать команду выдачи полного доступа. Класс поменяется следующим образом:

Появилась обработка команд от администратора.

Если пользователь отправит сообщение message please, то администратору от бота придет сообщение:

Пример запроса полного доступа к каналу

После этого администратор может отправить боту команду на выдачу прав пользователю:

Пример выдачи полного доступа пользователю

И пользователю от бота придет сообщение:

Пример сообщения со ссылкой для полного доступа к каналу

Таким образом, мы реализовали следующие возможности для пользователя:

  • пользователь может узнать подробную информацию о канале и понять, подходит ли он ему;
  • пользователь может получить временный доступ к каналу;
  • пользователь может получить информацию о дальнейших действиях для получения полного доступа к каналу;
  • пользователь может отправить запрос на предоставление полного доступа.

В свою очередь, у администратора канала появились следующие возможности:

  • проверить предоставляемые пользователем данные для полного доступа и выдать полный доступ;
  • очистить канал от пользователей с истекшим доступом.

Для удобства развёртывания упакуем наше приложение в Docker и развернём. Добавим в build.gradle:

bootJar
FROM openjdk:8-jdk-alpine COPY build/libs/buns.jar buns.jar EXPOSE 8081 ENTRYPOINT [«java»,»-jar»,»/buns.jar»]

Далее выполним следующие команды для создания образа и запуска его в докере:

Создание фронтенда

После того, как мы создали handler для обработки команд бота, хочется визуально контролировать подписки и смотреть графики по приросту подписок в разрезе месяца. Для этого создадим отдельное приложение на React с использованием Ant Design. Выполним команду:

npx create-react-app my-app

После этого у нас будет сгенерировано приложение с минимальной функциональностью. Однако требуется установить ещё несколько библиотек:

После этого основной компонент надо изменить на:

App.js import ‘./App.css’; import < QueryClient, QueryClientProvider >from ‘react-query’ import SubscriberTable from «./SubscriberTable»; import React from «react»; import ‘antd/dist/antd.css’; const queryClient = new QueryClient(); function App() < return > ; > export default App;

И добавить новый компонент:

Дополнительно к этому добавить функции для выполнения запросов:

axiosInstance.js import axios from ‘axios’; const host = process.env.REACT_APP_API_ENDPOINT; export const baseUrl = `http://localhost:8080/api/`; const instance = axios.create(< baseURL: `$`, withCredentials: true, headers: < ‘Cache-Control’: ‘no-store, no-cache, must-revalidate’, Pragma: ‘no-cache’, >, >); instance.defaults.headers.common[‘Accept-Language’] = ‘ru-RU, ru’; instance.interceptors.request.use(config => < return < . config, url: encodeURI(config.url), >; >); export default instance;
subscribersApi.js import * as log from ‘loglevel’; import instance from ‘./axiosInstance’; const SUBSCRIBER_PATH = ‘/subscribers’; const SubscribersApi = < name: ‘SubscribersApi’, async getAll() < return instance .get(`$`, < auth: < username: ‘admin’, password: ‘admin’ >>) .then(response => < log.info(`All Lines`, response); return response.data; >) .catch([]); >, async getStatistic() < return instance .get(`$/stat`) .then(response => < return response.data; >) .catch([]); >, >; export default SubscribersApi;

Это личный проект, аутентификация зашита, можно с ней особо не заморачиваться. Также в бэкенд требуется добавить конфигурацию Spring Security:

В итоге после выполнения команды npm start
откроется http://localhost:3000/ с отображением списка подписок и статистикой. Статистику можно выводить в любом разрезе. В текущей реализации показывается, в каком месяце сколько полных подписок было оформлено.

Еще по теме:  Как посмотреть кто посмотрел пост в Телеграмм канале с телефона

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

А теперь для удобства упакуем и развернём UI в docker-контейнере. Для этого создадим DockerFile:

Dockerfile FROM nginx:1.19.5 COPY build /usr/share/nginx/html/ COPY nginx.conf /etc/nginx/ RUN chown -R nginx:nginx /var/cache/nginx /etc/nginx/ /var/run/ USER nginx EXPOSE 80 ENTRYPOINT [«nginx», «-g», «daemon off;»]
nginx.conf worker_processes 1; pid /tmp/nginx.pid; events < worker_connections 1024; >http < proxy_temp_path /tmp/proxy_temp; client_body_temp_path /tmp/client_temp; fastcgi_temp_path /tmp/fastcgi_temp; uwsgi_temp_path /tmp/uwsgi_temp; scgi_temp_path /tmp/scgi_temp; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main ‘$remote_addr — $remote_user [$time_local] ‘ ‘$server_name to: $proxy_host [$upstream_addr] «$request» ‘ ‘$status $body_bytes_sent «$http_referer» ‘ ‘»$http_user_agent» «$http_x_forwarded_for»‘; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; >

И выполним команды для сборки и развертывания:

Вывод

Используя Spring Вoot, React и Docker, можно быстро создать небольшую систему для контроля подписок и подписчиков на канале в Telegram. Исходный код двух приложений можно посмотреть здесь и здесь.

Источник: tproger.ru

Как создать и подключить чат-бот в Телеграм-канал

Для того, чтобы успешно и систематически вести свой Telegram-канал и при этом не тратить на публикации уйму времени, существуют боты, которые помогут упростить вашу жизнь. Мы расскажем, как правильно создать и подключить бота, а также как управлять каналом с его помощью. Давайте начнем!

05 августа 2021

Все начинается с ControllerBot, который является базовым инструментом для создателей каналов в Telegram. Просто установите его и вы сможете планировать отложенные посты, форматировать текст, отслеживать базовую статистику, добавлять визуальный контент и прикреплять к постам реакции и встроенные ссылки.

Как настроить чат-бот

Для того, чтобы настроить чат-бот:

img

Чат-бот в управлении канала

Разберем основные операции, которые можно выполнить с помощью чат-бота.

1. Создание публикации

Нажимаем на команду «Создать пост» и выбираем интересующий нас канал, после чего бот предложит вам несколько функций. Напомним, что вы можете использовать горячие клавиши для форматирования текста. Подробнее мы уже рассказывали о них, а вот несколько основных команд:

  • жирный шрифт — «Ctrl+B»;
  • курсив — «Ctrl+I»;
  • залинковать ссылку — «Ctrl+K».

Форматирование текста в Telegram

Форматирование текста в Telegram
22 апреля 2021

2. Добавление изображения

Нажимаем на команду «Прикрепить медиафайл» и добавляем фото. Если вас не устраивает, как выглядит готовый вариант — нажмите на «Открепить медиафайл» и повторите действие с нужной картинкой.

3. Добавление реакций к посту

Все просто — нажимаем на команду «Добавить реакцию» и выбираем не более 6 эмодзи, для этого нужно разделить каждое эмодзи «/». После этого вы увидите рядом с постом эмодзи для голосования и количество кликов по ним.

4. Добавление URL-кнопок

Просто выбираем «Добавить URL-кнопки» и отправляем боту сообщение, в котором будут указано название кнопки и ссылка, разделенные дефисом «-». Вуаля! При нажатии на кнопку пользователь автоматически перейдет на указанный сайт.

Как быстро сократить ссылку: обзор 10 сервисов

Как быстро сократить ссылку: обзор 10 сервисов
13 января 2021

5. Публикация постов

Пост подготовлен — нажимаем «Далее». Теперь в меню отображается несколько вариантов публикаций:

  • «Опубликовать» — если нажать на эту команду, то пост публикуется автоматически после повторного подтверждения;
  • «Задать таймер для удаления» — устанавливаем время, через которое пост автоматически удалится;
  • «Отложить» — отложенная публикация в указанное время и день;
  • «Редактируем опубликованный пост» — перешлите боту сообщение, в котором необходимо внести правки, внесите их, отправьте готовый вариант, сохраните изменения, и все автоматически обновится.

6. Просмотр статистики

Нажимаем кнопку «Статистика» и нажимаем на название канала. Бот автоматически сгенерирует количество тех, кто отписался, и тех, кто подписался, за последний месяц и за неделю.

Ура, вы уже умеете создавать боты в Telegram!

Источник: para.school

Как создать бота для Телеграм — подробная инструкция

картинка: как создать бота в телеграм

Многие рутинные процессы в Телеграм можно автоматизировать. В связи с этим у пользователей часто возникает вопрос о том, как создать бота в Телеграм.

Эти знания будут полезными тем, кто только начинает осваивать мессенджер, а также могут пригодиться владельцам раскрученных аккаунтов. Еще не все знаете о ботах?

Начнем разбираться по порядку.

Содержание:

  • Бот в Телеграм: что это
  • Как создать бота в Телеграм
  • Как создать бота в Телеграм: что еще нужно знать

Бот в Телеграм: что это

На этот вопрос можно ответить одним словом: это робот. Он выполняет то, что записано в его программе.

Еще по теме:  Как люди знакомятся в Телеграмме

Боты могут совершать разные действия: от самых простых (ответить на приветствие, поддержать диалог по прописанному сценарию, сообщить курс валют) до более-менее сложных (сыграть с пользователем в игру, подобрать список новостей).

Чтобы узнать подробнее о том, как работают роботы в Телеграм, рекомендуем нашу подробную статью.

Для организации бизнеса в Телеграм создание ботов — настоящее спасение. Они сокращают трудозатраты и вполне способны разгрузить или вовсе заменить несколько сотрудников сразу.

Многие думают, что создать такого робота сможет только программист. Это правда, но только отчасти.

Спешим вас переубедить: простого Телеграм-бота можно собрать за несколько минут самостоятельно без знания языков программирования и кода.

Как создать бота в Телеграм

Прежде чем приступить к процессу со здания, сначала определитесь, для каких целей будет служить Телеграм-робот и какие именно задачи будет выполнять.

Лучше все это нарисовать в виде схемы, чтобы не запутаться и ничего не забыть.

Прорисовка алгоритма — важный этап, который нужно пройти, прежде чем создать бота в Телеграм. Не пренебрегайте им!

картинка: сделать бота для телеграм

Просто нарисуйте блоки с текстом и стрелочками, чтобы прописать все ответы бота на действия пользователя. По своему опыту скажем, что это значительно упрощает дальнейшие попытки создать и настроить работу бота.

Полезным также будет посмотреть, как работают другие боты из вашей тематики. Для этого порекомендуем два способа:

  • Воспользоваться нашей статьей с лучшими ботами;
  • Посмотреть наш Каталог с множеством ботов.

Пошаговый алгоритм, как создать бота для Телеграм

Для того чтобы создать бота, удобно пользоваться версией мессенджера для компьютера или же веб-версией. С мобильных устройств это тоже абсолютно реально, но опыт показывает, что Телеграм для ПК оказывается практичнее.

картинка: создать бота в телеграм

После прохождения подготовки, необходимо идти строго по сценарию:

Постарайтесь подойти к заданию творчески, так как самые релевантные названия наверняка уже будут кем-то заняты.

  • Выберите имя. Обратите внимание, в конце обязательно должны быть буквы bot.
  • Затем BotFather предложит загрузить аватарку для Телеграм-бота и придумать его описание. В этом же сообщении вам будет выслан токен API.

Наш совет: на всякий случай скопируйте эту комбинацию из цифр и букв в какой-нибудь текстовый файлик, чтобы не потерять.

На этом этапе вас уже можно поздравить с созданием собственного робота. Осталось совсем немного — завершить его настройку.

В принципе, здесь работа по созданию заканчивается. Можно сразу настроить автопостинг из соцсетей: /autoposting .

Рекомендуем нашу статью о Телеграм-ботах для накрутки лайков и сохранения фотографий из соцсети Instagram.

Дальше предстоит настроить бота на выполнение конкретных действий. Для этого просто начинаем диалог с ним.

Пробовали ли вы самостоятельно создать ботов?

Как создать бота в Телеграм: что еще нужно знать

Важно помнить, что успешных ботов периодически пытаются взломать. Подробнее о взломе Телеграм-ботов читайте в нашей статье.

Создать бота можно не только в Телеграм. Уже существуют самостоятельные сервисы, работа с которыми позволяет максимально упростить настройку роботов.

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

Поэтому передавать свои личные данные следует очень осторожно. Если неприятность все-таки произошла и есть риск утечки данных, можно удалить свою страницу.

Однако в таком случае вы не сможете восстановить свои права собственности на ботов и каналы, если таковые создавали.

картинка: создание бота в telegram

Мы не агитируем использовать ни один из сервисов, поскольку создать бота можно при помощи встроенных возможностей Телеграм, а также потому, что сами не тестировали их.

Р асскажем о каждом из них подробнее:

Основное направление сервиса — создание ботов для организации бизнес-процессов. Пользоваться им можно бесплатно, правда, функционал будет очень ограничен.

Это еще один конструктор для того, чтобы создать роботов. Как говорят создатели проекта, на обучение бота уйдет не более 8 минут. Здесь можно получить кучу возможностей бесплатно .

Этот робот подскажет, как создать полноценную витрину товаров в Телеграм. Существует еще и сайт сервиса: здесь можно посмотреть стоимость тарифов и впоследствии отслеживать заказы в личном кабинете.

Если вы занимаетесь продажами в мессенджере, рекомендуем прочесть обо всех секретах создания и продвижения Телеграм-каналов.

Надеемся, наша статья оказалась полезной! Делитесь в комментариях своими ботами и добавляйте их в наш Каталог

Источник: tgrm.su

Рейтинг
( Пока оценок нет )
Загрузка ...