Рассказываем о полезных ботах и сервисах, с помощью которых ведение, администрация и модерация Telegram-каналов и чатов станет намного проще.
ControllerBot
Это самый известный и популярный бот в Telegram. Его используют для постинга публикаций.
В частности, среди его функций — возможность делать отложенные публикации, редактировать посты, добавлять к ним линки, реакции и другое.
Также у него есть и уникальные функции. Например, добавление кнопки, которая позволяет комментировать пост с помощью сервиса CommentsBot.
FleepBot
Это сервис, с помощью которого можно создавать своих ботов. Они могут заниматься отложенным постингом, а также получать фидбек от подписчиков.
Если выбрать вариант с постингом, то вы получаете возможность планировать публикации, редактировать их, добавлять кнопки и реакции.
У бота также есть ряд функций, которые помогают вести канал. Например, мультипостинг, пересылка постов, детальная статистика, а также учет расходов и доходов канала. К тому же, у него есть удобный календарь, где вы всегда можете просмотреть контент-план с запланированными публикациями.
ТОП-10 ПОЛЕЗНЫХ Ботов Телеграм: Фильмы, Музыка, Книги, Игры, Анонимный чат и др
Combot
Этот сервис поможет вам управлять группами и чатами через сайт.
Среди его возможностей — детальная аналитика, настройки модерации, система репутации, триггеры, предупреждения, а также система антиспам и различные отчеты.
ChatKeeperBot
Еще одна платформа, которая позволяет модерировать чаты.
Здесь можно добавлять антиспам и репутацию, вести различную статистику, добавлять приветствия, триггеры, фильтры и другие функции. Полное взаимодействие с ботом происходит через сайт.
TGStat
Это самый крупный сервис, где есть открытая статистика всех Telegram-каналов, которые добавлены в их каталог. У них есть ежедневная индексация публикаций, рейтинг каналов по разным и темам, а также поиск каналов и постов.
Среди возможностей сервиса — аналитика каналов, которая обновляется каждый день, отслеживание упоминаний, а также прием заявок на рекламу и установление стоимости рекламной публикации.
Telemetr
Еще один крупный сервис, где можно найти публичную аналитику Telegram-каналов. Здесь есть также рейтинг каналов, поиск по каналам и постам, к тому же, искать можно даже Telegraph-статьи.
В сервисе удобно отслеживать публикации, заниматься рекламными заявками и анализировать аудиторию (здесь, например, можно разделять ее по полу). А также изучать почасовую статистику и публикации в других социальных сетях, и искать пересечение аудиторий.
Crosser_Bot
Этот бот дает возможность делать анализ аудитории каналов и чатов, а также смотреть аудиторию, которая пересекается, защищаться от ботов и удалять удаленные и неактивные аккаунты из подписок.
Бот анализирует, сколько подписчиков пересекается, какое количество подписчиков у канала, кто из аудитории бот, кто живой человек и сколько удаленных аккаунтов. А также показывает статистику аудитории по последнему входу и времени жизни на канале.
Shmalala
Это бот, работающий на искусственном интеллекте. Он может общаться с участниками чата с помощью машинного обучения.
Также учит новые фразы из чата, умеет здороваться, собирать статистику, а также заниматься модерацией чата.
Источник: supa.ru
Авторизация на сайт через Телеграм без использования официального виджета
Рассмотрим простой вариант авторизации на сайте с помощью Телеграм без использования официального виджета.
в бот мы передадим значение в параметре start, которое обработаем и запишем в базу вместе с данными пользователя
запустим JS скрипт, который будет с интервалом в 2 секунды делать AJAX запрос на сервер для проверки появления в базе записи переданного в бот значения, и в случае обнаружения произведет авторизацию пользователя
Для начала создадим таблицу users в базе MySQL (используйте кодировку utf8mb4_unicode_ci )
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `telegram_id` bigint(20) DEFAULT NULL, `first_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `last_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `auth_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
index.php
Этот файл будет выводить ссылку на авторизацию через бот в случае, если пользователь не авторизован. JS скрипт вешает на ссылку прослушку на событие click с функцией, которая через 2-х секундный интервал делает запрос на сервер. Когда ответ с сервера возвращается положительный, скрипт перезагружает страницу.
Если у пользователя обнаружена кука token то скрипт делает запрос в бд и получает первое и второе имя пользователя, которые выводит вместе с ссылкой на выход. При обработке действия «Выход», скрипт просто удаляет куку и перезагружаем страницу.
Не забудьте указать ___USERNAME__ВАШЕГО__БОТА___
else < // подключаем соединение с БД require_once(«Db.php»); // создаем объект соединения $db = new Db(); // проверяем на авторизацию if($_COOKIE[‘token’]) < // проверяем на корректность if(!preg_match(‘~^[a-f0-9]+$~’, $_COOKIE[‘token’])) < // выходим если проверка не прошла exit(); >// делаем запрос в БД $order = $db->connect()->prepare(«SELECT * FROM users WHERE auth_key = :key LIMIT 1″); $order->execute([‘key’ => $_COOKIE[‘token’]]); // если запись есть то работаем if ($order->rowCount() > 0) < $orderRaw = $order->fetch(); // Выводим имя echo trim($orderRaw[‘first_name’] .’ ‘.$orderRaw[‘last_name’]).» | «; // ссылка на выход echo «Выход»; > else < // удаляем кукку header(«Location: index.php?act=logout»); >> else < // генерируем ключ $key = md5(rand(0, 1000)); /////////////////////////////////////////////// //// username Bot /////////////////////////////////////////////// $bot = «___USERNAME__ВАШЕГО__БОТА___»; // создаем ссылки на авторизацию echo » jQuery(function ($) < $(«body»).on(«click», «.link_auth», function () < var auth_key = $(this).data(«key»); var timerId = setInterval(function () < $.ajax(< type: «GET», dataType: «json», url: «checkKey.php», data: < key: auth_key >, success: function (data) < if (data.result == «success») < clearInterval(timerId); setTimeout(function () < location.reload(); >, 1000); > > >); >, 2000); >); >); > ?>
webHook.php
init(); ?>
Auth.php
После инициализации объекта, передаем данные от Bot API в роутер, в котором определяем, что делать с данными. Нас интересует объект message с переданным значением параметра start в виде ключа из 32 символов. Его мы передаем в метод авторизации.
По telegram_id узнаем, есть ли такой пользователь у нас в базе, если есть, то обновляем ключ, если нет то добавляем пользователя в базу, при этом записываем все нужные нам данные и ключ для авторизации.
Тут нужно еще учесть тот момент, что если вам нужна актуальная информация о пользователе, то при обновлении ключа обновляйте и все нужные данные, ведь пользователь может поменять свои данные в Телеграм, и после следующей авторизации на вашем сайте вы будете его приветствовать именем, которое получили при его регистрации, но это на ваше усмотрение.
Не забудьте указать ___TOKEN__ВАШЕГО__БОТА___
Db.php
Класс для получения соединения с базой данных. Укажите данные ваших настроек базы данных.
pdo)) < $this->setPdo(); > return $this->pdo; > /** * Создаем соединение с БД */ private function setPdo() < // задаем тип БД, хост, имя базы данных и чарсет $dsn = «mysql:host=».$this->host.»;dbname=».$this->db.»;charset=».$this->charset; // дополнительные опции $opt = [ // способ обработки ошибок — режим исключений PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // тип получаемого результата по-умолчанию — ассоциативный массив PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // отключаем эмуляцию подготовленных запросов PDO::ATTR_EMULATE_PREPARES => false, // определяем кодировку запросов PDO::MYSQL_ATTR_INIT_COMMAND => «SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci» ]; // // записываем объект PDO в свойство $this->pdo $this->pdo = new PDO($dsn, $this->user, $this->pass, $opt); > > ?>
checkKey.php
Этот файл принимает AJAX запрос со страницы index.php когда пользователь нажимает ссылку для авторизации. Он по ключу проверяет наличии записи в базе, и в случае обнаружения обновляет ключ, записывает куки и возвращает положительный результат.
+$~’, $key)) < exit(json_encode([‘result’=>’error’])); > // создаем массив для возврата результата $data = []; // обращаемся в БД — проверяем наличие записи с переданным ключом $order = $db->connect()->prepare(«SELECT * FROM users WHERE auth_key = :key LIMIT 1»); $order->execute([‘key’ => $key]); // если запись есть то работаем if ($order->rowCount() > 0) < $orderRaw = $order->fetch(); // создаем новый ключ $new_key = md5(rand(0, 1000));; // записываем новый ключ в БД $update = $db->connect()->prepare(«UPDATE users SET auth_key = :new_key WHERE // если обновили то авторизуем if ($update->execute([‘id’ => $orderRaw[‘id’], ‘new_key’ => $new_key])) < // ставим куку setcookie(‘token’, $new_key); // возвращаем результат $data[‘result’] = «success»; >else < $data[‘result’] = «error»; >> else < $data[‘result’] = «error»; >// возвращаем результат echo json_encode($data); ?>
По итогу у нас получилась вполне рабочая авторизация на сайт через Телеграм без использования официального виджета Telegram. Файлы можно скачать и использовать на свое усмотрение.
Источник: imakebots.ru