Бот для авторизации в Телеграмме

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

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

Архив с обновлённой библиотекой (работает на версии php >= 8.0):

Первым делом добавляем библиотеку в свой проект и создаём php-файл, в котором, собственно, и будем писать бота. После этого необходимо подключить библиотеку:

Теперь создаём экземпляр класса Bot и инициализируем переменные $data, $chat_id и $message:

$tg = telekotBot::create( ‘токен’ ) ->initData( $data ) ->initChatId( $chat_id ) ->initMessage( $message );

Создаём массив с нужными нам кнопками:

$kbd = [ ‘inline_keyboard’ => [ [ [ ‘text’ => ‘Кнопка #1’, ‘callback_data’ => ‘one’ ], [ ‘text’ => ‘Кнопка #2’, ‘callback_data’ => ‘two’ ] ], [ [ ‘text’ => ‘ Картинка’, ‘callback_data’ => ‘img’ ] ] ] ];

Далее напишем проверку на клик по inline-кнопке. Также я добавлю блок else, в него добавим пару команд для демонстрации обновлений библиотеки:

Авторизации в боте


if ( isset( $data[‘callback_query’] ) ) < // Тут будем обрабатывать нажатие на кнопки >else < // Тут будем обрабатывать обычные команды >

Стоит заметить, что всё содержимое массива $data при наличии callback_query нужно искать уже внутри callback_query ( $data[‘callback_query’][‘*а дальше уже как обычно..*’] ).

Ну, а теперь с помощью конструкции switch-case проверим, на какую из кнопок нажал юзер:

switch ( $data[‘callback_query’][‘data’] ) < case ‘one’: < $tg->sendMessage( $chat_id, ‘Вы нажали на первую кнопку’ ); break; > case ‘two’: < $tg->sendMessage( $chat_id, ‘Вы нажали на вторую кнопку’ ); break; > case ‘img’: < $tg->sendImage( ‘Держи картинку’, ‘https://proprikol.ru/wp-content/uploads/2020/10/kartinki-ozero-45.jpeg’ ); break; > >

При нажатии любую из первых двух кнопок бот просто уведомит пользователя об этом, при нажатии на третью — отправит картинку с помощью метода sendImage().

Еще по теме:  Если переустановить Телеграмм сохранится ли

Да, как и обещал — в блок else добавляем ещё две команды:

if ( $message == ‘/привет’ ) < $tg->reply( ‘Здарова’ ); > else if ( $message == ‘/кнопки’ ) < $tg->sendMessage( $chat_id, ‘Вот твои кнопки:’, $kbd ); >

При вводе команды /кнопки — бот будет отправлять клавиатуру пользователю. При вводе команды /привет — здороваться с ним. Однако для первой команды я использовал метод reply(), а для второй — метод sendMessage(). Почему? Разница, на самом-то деле, небольшая: в метод sendMessage() необходимо передавать ID чата, а в метод reply() айди передавать не нужно (ответ придёт тому, кто написал боту). Поэтому в нашем случае, конечно же, удобнее и проще юзать reply().

initData( $data ) ->initChatId( $chat_id ) ->initMessage( $message ); $kbd = [ ‘inline_keyboard’ => [ [ [ ‘text’ => ‘Кнопка #1’, ‘callback_data’ => ‘one’ ], [ ‘text’ => ‘Кнопка #2’, ‘callback_data’ => ‘two’ ] ], [ [ ‘text’ => ‘ Картинка’, ‘callback_data’ => ‘img’ ] ] ] ]; if ( isset( $data[‘callback_query’] ) ) < switch ( $data[‘callback_query’][‘data’] ) < case ‘one’: < $tg->sendMessage( $chat_id, ‘Вы нажали на первую кнопку’ ); break; > case ‘two’: < $tg->sendMessage( $chat_id, ‘Вы нажали на вторую кнопку’ ); break; > case ‘img’: < $tg->sendImage( ‘Держи картинку’, ‘https://proprikol.ru/wp-content/uploads/2020/10/kartinki-ozero-45.jpeg’ ); break; > > > else < if ( $message == ‘/привет’ ) < $tg->reply( ‘Здарова’ ); > else if ( $message == ‘/кнопки’ ) < $tg->sendMessage( $chat_id, ‘Вот твои кнопки:’, $kbd ); > >

А вот, собственно, как работает бот:

  • 5id15
  • 10.08.2022
  • 7 571
  • 14
  • 9

Источник: kotoff.net

Одноразовые пароли для сайта с помощью бота Телеграм

Для учета клиентов и сайтов мы используем собственную CRM-систему. Конечно, она не такой монстр как популярные crm-системы, типа AmoCRM, но свою задачу выполняет. Для улучшения безопасности и исключения возможности подбора паролей внедрили систему одноразовых паролей, через отправку сообщений Телеграм бота. В данной статье мы объясним, как внедрить эту систему для вашего сайта.

Принцип работы

Прошло около 7 лет после написания статьи об идеальной системе авторизации. Но теперь мы еще упростим процесс входа на сайт. При авторизации в систему появляется поле только с логином.

После ввода логина и нажатия кнопки «Войти» поле логина заменяется на поле ввода пароля, а в Телеграм приходит сообщение с новым паролем. После ввода пароля происходит авторизация.

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

Создание бота Телеграм

Пишем /start и выйдет список всех команд этого бота.
Нужная нам — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

В поисковике много подробных инструкций по созданию ботов, поэтому мы не будем заострять на этом внимания.

Реализация системы

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

Файл login.php

<form action=»login_controller.php» method=»post»> <input type=»text» name=»login» placeholder=»Логин» required> <div >div> <button type=»submit»> Войтиbutton> form>

Обратите внимание на div с id «pass». В него будет вставлено поле с вводом пароля.

Для реализации появления поля с паролем мы воспользовались библиотекой jquery. Не забудьте ее подключить.
Ниже показан скрипт обработки ввода данных.
<script> $(document).ready(function() < $(«#loginform»).on(«submit», function(event) < var $result = $(‘#pass’); var login = $(«#login»).val(); if ((login != ») (login.length > 1)) < event.preventDefault(); $.ajax(< url: ‘login_controller.php’, method: ‘post’, dataType: ‘html’, data: <login: login>, success: function(msg)< $result.html(msg); document.getElementById(«login_block»).remove(); if(msg != ») < $result.fadeIn(); >else < $result.fadeOut(100); >>>); > else < $result.html(»); $result.fadeOut(100); > >) >); script>

Файл login_controller.php

/*Если введен логин*/ if(isset($_POST[‘login’])) < $login = $_POST[‘login’]; if($login == ») unset($login);> /*Очищаем данные от мусора*/ $login = stripslashes($login); $login = htmlspecialchars($login); $login = trim($login); $login = mb_strtolower($login); /*Проверка на существование логина. У нас реализован класс для логина. У вас может быть своя реализация логина, поэтому свой класс приводить не будем*/ $me = new Login(); $login_name = $me->login_name($login); if(empty($login_name[‘id’])) < /*Если не существует такой пользователь, то выводим поле логина снова*/ echo »; >else< //генерация рандомного 6-значного числа для Телеграм $allowedNumbers = range(0, 9); $digits = array_rand($allowedNumbers, 6); $number = »; foreach($digits as $d) < $number .= $allowedNumbers[$d]; >$_SESSION[‘login’], = $login; $me->setLoginPassowrd($login,$number);//установка нового пароля function message_to_telegram($text) < $ch = curl_init(); curl_setopt_array( $ch, array( CURLOPT_URL => ‘https://api.telegram.org/bot99999999:Сюда вводится ваш токен /sendMessage’, CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_TIMEOUT => 10, CURLOPT_POSTFIELDS => array( ‘chat_id’ => 23233432,/*id чата*/ ‘text’ => $text, ), ) ); curl_exec($ch); > message_to_telegram(‘Вход в систему: ‘.$number);//отправка кода в телеграм echo »; > > /*Если введен пароль*/ if(isset($_POST[‘password’])) < $password = $_POST[‘password’]; if($password == ») < unset($password); > $password = stripslashes($password); $password = htmlspecialchars($password); $me = new Login(); $login_pass = $me->password($_SESSION[‘login’],$password); if(empty($login_pass[‘id’])) < echo ‘пароль не верный’; >else< header(«Location: dashboard.php»); > >

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

Вывод

Довольно простой пример и реализация. Реализация данной системы возможна для различных CMS и самописных систем.

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

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

Что такое токен бота в Телеграмме: как получить, узнать и обновить

токен бота Телеграмм

Бот в Телеграме представляет собой приложение, которое используется для автоматизации процесса модерации. Программа может обрабатывать пользовательские команды, собирать информацию о подписчиках или управлять сообществом, вместо администратора. У каждого бота есть уникальный идентификатор, который называется токеном. Поэтому ответим на вопрос многих пользователей, токен бота в Телеграмме — что это такое, зачем нужен и как его узнать.

Как обновить токен чат-бота, если он стал доступен другому человеку?

Если API токен попал в руки другого человека, рекомендуется обновить его, так как вы можете потерять над чат-ботом контроль. Действие выполняется через BotFather:

  1. Запустить Телеграмм чат с BotFather и ввести команду «/mybots».
  2. В перечне выбрать юзернейм программы.
  3. В появившимся списке нажать по кнопке «API Token».
  4. Внизу активировать функцию «Revoke current token».
  5. Идентификатор обновится и затем скопируйте его в удобное место.

Теперь нужно переподключить чат-бота на канале, в чате или группе:

  1. Зайдите в сообщество и тапните по аватарке.
  2. Нажмите на пиктограмму карандаша.
  3. В пункте «Участники» выберете чат-бота.
  4. В правом верхнем углу нажмите на три вертикальные точки.
  5. В контекстном меню активируйте «Остановить».
  6. Вновь откройте чат с ботом и внизу сделайте тап по опции «Перезапустить».

Помощник перезапустится и начнет корректно обрабатывать команды.

Фото: Shubham Dhage Unsplash

Источник: telega-blog.ru

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