Подробная инструкция о том, как создать бота для предоставления демо-доступа и контроля подписок на приватный канал в Telegram.
Александр Волков
Руководитель отдела разработки программного обеспечения компании «Синимекс»
Telegram набирает популярность не только у пользователей, но и у разработчиков. Многие создают там свои каналы и ботов. В этой статье мы создадим приватный канал с фасадом для него — ботом.
Возможности бота
Через бота можно будет:
- получить полную информацию о канале;
- получить демо-доступ на канал. Пользователь в автоматическом режиме получит ссылку на вступление в приватный канал. Через n дней демо-доступа пользователь будет удалён из канала;
- выдать полный доступ для пользователей. Пользователь сможет отправить данные для получения полного доступа. Данные могут быть проверены как в автоматическом режиме, так и в ручном — самим администратором. По итогам пользователю выдаётся полный доступ.
Дополнительно к этому мы создадим интерфейс на React для управления подписками и сбором аналитики по каналу. Особенность этого решения — простота. Время на его создание — около 4 часов. Все компоненты решения для удобства будут развёрнуты в docker-контейнерах. Схема нашего решения будет выглядеть так:
Как Накрутить Живых Подписчиков в Телеграм 2022
Создание бота
Начнём с самого простого шага — создания бота в Telegram. Для этого достаточно написать команду /newbot боту по созданию других ботов BotFather и следовать инструкциям:
После успешного создания бота вы получите сообщение:
Также появится токен, который мы будем использовать для подключения к боту из своего приложения.
Бот для приватного канала с информацией о самых вкусных плюшечках и пирожочках создан. Далее создадим сам канал и добавим туда нашего бота в качестве администратора.
Создание базы данных
Для простоты решения поднимем 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 создадим:
Создание бэкенда
Перейдём на Spring Initializr и сгенерируем каркас бэкенд-приложения. Достаточно выбрать следующие библиотеки:
Развернём сгенерированный проект в среде разработки и добавим туда зависимость для работы с 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); // метод срабатывает каждый раз, когда боту отправляется сообщение
Добавим в 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: подробная инструкция
Telegram — это одна из самых популярных мессенджеров, используемых для общения и обмена информацией. Одним из его удобных инструментов является возможность создания чата или канала. Чат предназначен для общения и обмена сообщениями между небольшой группой пользователей, а канал представляет собой публичную площадку для публикации контента и получения подписчиков.
Однако, бывают ситуации, когда необходимо перенести подписчиков из чата в канал. Это может быть связано с тем, что в канале можно отправлять неограниченное количество сообщений, а также использовать рассылку, что делает его более удобным для массовой коммуникации. В данной инструкции мы расскажем, как осуществить перенос подписчиков из чата в канал Telegram.
Шаг 1: Начните с создания необходимого канала в Telegram. Для этого нажмите на значок «Бабочки» в правом нижнем углу главного экрана приложения Telegram. В появившемся окне выберите пункт «Создать канал». Затем укажите название канала, его описание и выберите тип канала: публичный или приватный.
Шаг 2: После создания канала перейдите в настройки канала, нажав на значок «Шестеренки» в правом верхнем углу экрана канала. В разделе «Управление» выберите пункт «Добавить участников». Затем нажмите на кнопку «Пригласить в канал» и выберите пункт «Пригласить из контактов». В появившемся списке выберите нужные контакты и нажмите на кнопку «Пригласить». Теперь выбранные контакты станут подписчиками канала.
Перенос подписчиков чата в канал Telegram: подробная инструкция
Telegram — это популярный мессенджер, который позволяет создавать чаты и каналы для общения с людьми. Часто возникает ситуация, когда необходимо перенести подписчиков из одного чата в канал Telegram. Это может быть полезно, если вы хотите объединить множество чатов в один канал или просто перенести активную аудиторию из чата в более удобный формат коммуникации.
Шаг 1: Создание канала Telegram
Первым шагом необходимо создать канал Telegram, в который вы будете переносить подписчиков чата. Для этого откройте приложение Telegram и нажмите на значок «Создать новый чат» в нижней части экрана. Выберите опцию «Новый канал» и следуйте инструкциям по созданию канала. Укажите имя и описание канала, а также настройте его настройки приватности и доступа.
Шаг 2: Приглашение подписчиков
После создания канала необходимо пригласить подписчиков из чата. Для этого откройте настройки канала, нажав на его название в верхней части экрана, а затем выберите опцию «Пригласить в канал». Выберите опцию «Пригласить в чат» и найдите чат, из которого вы хотите перенести подписчиков. Выберите нужный чат и нажмите «Пригласить Участников».
Шаг 3: Уведомление подписчиков
Перед переносом подписчиков из чата в канал, рекомендуется уведомить участников чата о вашем намерении. Это можно сделать, отправив сообщение в сам чат, в котором вы сообщите о создании канала и пригласите подписчиков в него. Таким образом, вы предупредите подписчиков и дадите им возможность согласиться на перенос или остаться в чате.
Итак, перенос подписчиков чата в канал Telegram — это простой процесс, который позволяет объединить аудиторию и облегчить коммуникацию. Следуйте инструкции и в несколько шагов вы сможете успешно перенести подписчиков из чата в канал и продолжить общение в новом формате.
Выбор и создание канала Telegram
Если вы хотите перенести подписчиков из чата в канал Telegram, то в первую очередь вам потребуется создать канал. Для этого выполните следующие действия:
- Откройте приложение Telegram и нажмите на иконку «Каналы» в нижней панели навигации.
- Затем нажмите на кнопку «Создать канал».
- Выберите тип канала, который подходит для вашей цели: публичный (любой пользователь может присоединиться по ссылке) или частный (только по приглашению).
- Придумайте название и уникальный адрес для вашего канала. Обратите внимание, что адрес канала должен быть уникальным и содержать только латинские буквы, цифры и подчеркивания.
- После выбора типа и указания названия канала, нажмите на кнопку «Создать».
Поздравляю, ваш канал создан! Теперь вы можете пригласить подписчиков из чата в канал и начать публиковать контент, который будет виден всем подписчикам вашего канала.
Создание чата и привлечение подписчиков
Чтобы начать перенос подписчиков из чата в канал Telegram, вам необходимо сначала создать чат. Для этого откройте приложение Telegram на своем устройстве и нажмите на значок «Создать новый чат». Введите название чата, выберите тип чата (личный или групповой) и добавьте нужных участников.
После создания чата, вам следует привлекать подписчиков. Начните с приглашения своих друзей или коллег в чат, чтобы они могли участвовать в обсуждении и получать актуальную информацию. Также можно поделиться ссылкой на чат в других социальных сетях или медиа-платформах, чтобы привлечь новых участников.
Не забывайте делиться ссылкой на ваш чат или приглашать людей в него при каждом удобном случае. Это может быть ваших других аккаунтах в социальных сетях, блогах, в комментариях под статьями или видео. Чем больше людей узнает о вашем чате, тем больше подписчиков вы сможете привлечь.
Также, чтобы привлечь подписчиков из других чатов, вы можете вести активное участие в обсуждениях и предлагать полезную информацию. Помните, что ваше участие должно быть конструктивным и ценным для участников чата, чтобы они захотели перейти в ваш чат и получать больше полезной информации.
Экспорт подписчиков из чата
Экспорт подписчиков из чата Telegram — это процесс, позволяющий переместить всех участников чата в канал Telegram. Это полезно, например, в случае, когда вы хотите создать канал для вашего бизнеса или проекта и оставить там доступ только для определенной аудитории.
Чтобы экспортировать подписчиков из чата в канал Telegram, вам понадобится быть администратором обоих – чата и канала. Помимо этого, необходимо иметь специальные навыки программирования или использовать сторонние сервисы, которые предоставляют эту функцию.
Одним из популярных способов экспорта подписчиков является использование ботов в Telegram. Существуют специальные боты, которые помогают автоматизировать процесс переноса подписчиков из чата в канал. Такие боты предлагают различные функции, такие как: выбор чата и канала, отслеживание подписчиков, автоматическое перемещение и другие.
Если вы не хотите использовать ботов, можно попробовать другие способы экспорта подписчиков из чата в канал Telegram, такие как использование API Telegram или сторонних программ. Однако, эти способы могут быть более сложными и требовать больше времени и усилий.
В любом случае, перед экспортом подписчиков из чата в канал Telegram, рекомендуется убедиться, что у вас есть все необходимые разрешения и согласие участников чата на этот процесс. Это поможет избежать возможных проблем и конфликтов в дальнейшем.
Импорт подписчиков в канал
Для импорта подписчиков в канал Telegram можно воспользоваться несколькими способами.
Импорт с помощью приглашений
Один из способов импорта подписчиков в канал — использование приглашений. Для этого необходимо создать приглашение, которое будет содержать ссылку на ваш канал. Приглашение можно отправить в личные сообщения своим подписчикам или разместить на различных платформах, таких как социальные сети, блоги или форумы. Когда пользователи перейдут по ссылке, они смогут подписаться на ваш канал.
Импорт с помощью интеграции других платформ
Для удобства импорта подписчиков в канал Telegram можно воспользоваться интеграциями с другими платформами, такими как CRM-системы, социальные сети или почтовые рассылки. С помощью этих интеграций можно автоматически передавать подписчиков из выбранных источников в ваш канал Telegram.
Импорт с помощью экспорта из другого канала или группы
Если у вас уже есть группа или другой канал, в котором есть подписчики, вы можете экспортировать их и импортировать в ваш целевой канал. Для этого можно воспользоваться сторонними сервисами или приложениями, которые позволяют экспортировать подписчиков из Telegram. Полученный файл с подписчиками можно импортировать в ваш канал с помощью специального функционала.
Проверка и подтверждение импорта
После завершения процесса импорта подписчиков из чата в канал Telegram необходимо проверить результаты и подтвердить успешность операции. Для этого следуйте следующим шагам:
1. Проверка количества подписчиков
Проверьте, что количество подписчиков в канале Telegram соответствует ожидаемому результату. Сравните число импортированных подписчиков со списком подписчиков в чате и убедитесь, что все пользователи перенесены успешно.
2. Проверка активности подписчиков
Проверьте активность подписчиков после импорта. Отслеживайте, сколько новых пользователей стало активно в канале Telegram. Сравните активность импортированных подписчиков с активностью пользователей, которые уже были в канале.
3. Подтверждение успешности операции
Если все проверки прошли успешно и вы удовлетворены результатами, подтвердите успешность операции импорта. Уведомите участников чата об успешном переносе подписчиков в канал Telegram. Расскажите им о новых возможностях и преимуществах данного шага.
Удаление подписчиков из исходного чата
При переносе подписчиков из чата в канал Telegram, возникает необходимость удалить этих подписчиков из исходного чата. Это может быть полезно, чтобы избежать дублирования контента и излишнего хлама в чате.
Если вы являетесь администратором исходного чата, то у вас есть возможность удалить подписчиков вручную. Для этого необходимо перейти в настройки чата, найти список участников и выполнить действие «Удалить» для каждого подписчика, которого вы хотите удалить. Однако, это может быть довольно трудоемким и долгим процессом, особенно если в чате находится большое количество подписчиков.
Более эффективным и быстрым способом удаления подписчиков из исходного чата является использование специальных ботов или скриптов. Эти инструменты могут автоматизировать процесс удаления, что значительно упростит и ускорит его.
Некоторые боты и скрипты для удаления подписчиков из исходного чата в Telegram могут предоставляться сторонними разработчиками. Необходимо быть осторожным и внимательным при выборе таких инструментов, чтобы не стать жертвой мошенников или не нарушить правила Telegram. Рекомендуется читать отзывы и рейтинги пользователей, чтобы оценить надежность и безопасность инструмента.
Источник: food-receptkphoto.ru