Перехват пароля по api ТГ бота

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

В этой инструкции опишем процесс создания бота в Telegram на Python . В качестве примера создадим Telegram-бот компании Timeweb Cloud, который будет приветствовать пользователя и предлагать ему перейти на сайт компании.

Как создать бота в Telegram на Python пошагово

Шаг 1. Регистрация бота в BotFather

После нажмите кнопку «Запустить» в нижней части окна и выберите в открывшемся списке команду /newbot . Бот предложит указать имя создаваемого бота. В нашем случае укажем TimewebCloudBot, и его же продублируем в качестве короткого имени.

После этого бот будет создан.

Пишем Telegram бота, который говорит с ChatGPT API

Надежно сохраните токен бота — в будущем он понадобится для авторизации и работы с ботом.

Шаг 2. Подготовка необходимых компонентов

Переходим к подготовке необходимых компонентов. На вашем компьютере должен быть установлен Python и среда разработки (в нашем случае это PyCharm).

Установить Python на Windows 10 можно по нашей инструкции, а после скачать PyCharm с сайта разработчика и установить его.

В качестве библиотеки мы будем использовать pyTelegramBotAPI . Установить ее можно, с помощью следующей команды:

pip install pyTelegramBotAPI

Все необходимые компоненты установлены. Переходим к следующему шагу.

Шаг 3. Написание кода

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

import telebot

botTimeWeb = telebot.TeleBot(‘Уникальный токен’)

from telebot import types

Вместо Уникальный токен укажите токен, который вы получили при регистрации бота. Кавычки необходимо сохранить.

Теперь реализуем так называемые обработчики сообщений. Они отвечают за фильтрацию входящих сообщений бота и вызов указанной функции для этих сообщений.

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

Разберем написанный выше код по порядку.

Первые две строчки объявляют метод обработки входящих сообщений. В нашем случае в качестве параметра передается команда /start .

Далее объявляется переменная first_mess , хранящая указанную строку. Она будет отображаться пользователю после вызова команды /start . Здесь также используется объект Message , необходимый для определения имени ( first_name ) и фамилии ( last_name ) пользователя.

Далее следуют 3 строчки кода, отвечающие за добавление кнопки, которая в будущем будет перенаправлять пользователя на следующее сообщение. Тип данной кнопки — Inline. Это значит, что такая кнопка будет отображаться прямо под сообщением. Для ее создания необходимо использовать метод InlineKeyboardButton . Параметр text отвечает за имя кнопки, а callback_data — за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.

И наконец, добавляется метод send_message , необходимый для отправки сообщения пользователю. У него указаны 4 параметра:

  • message.chat.id отвечает за синхронизацию сообщения с чатом бота;
  • first_mess передает ранее указанное сообщение;
  • parse_mode необходим для указания режима разметки сообщений;
  • reply_markup отвечает за добавление созданной кнопки.

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

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

В начале объявляется метод для обработки запросов обратного вызова. Выполняется проверка на соответствие строки, указанной после == и возвращенной после нажатия кнопки. Так как ранее мы указали значение параметра callback_data = ‘yes’ , то проверка пройдет успешно.

После проверки реализован функционал кнопки. Переменная second_mess хранит текст ответного сообщения. А далее описана реализация кнопки, которая хранит ссылку на сайт компании Timeweb Cloud.

Последним шагом будет указать боту на то, что обработка команды закончена. Для этого указываем команду answer_callback_query .

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

botTimeWeb.infinity_polling()

Бот создан. Сохраните файл с кодом и переходите к его запуску.

Шаг 4. Запуск бота

Откройте терминал и выполните запуск проекта:

python main.py

Теперь бот запущен, можно переходить в Telegram и тестировать его.

Для дополнительной безопасности и стабильности рекомендуется запускать бота на виртуальном сервере. Арендовать надежный облачный сервер можно на Timeweb Cloud .

Шаг 5. Тестирование бота

Откроем Telegram и перейдем к созданному боту, используя поиск и короткое имя, которое указывалось на первом шаге.

Для начала работы нажмем «Запустить» внизу экрана.

Бот обработает команду и выведет приветственное сообщение.

Для продолжения работы с ботом нажмем кнопку под сообщением.

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

В ответ на нажатие кнопки бот предложит перейти по ссылке. Нажимаем «Перейти» и переходим на сайт компании.

Заключение

Защита вашего бота NodeJS Telegram с помощью одноразового пароля

В настоящее время боты Telegram довольно часто выполняют различные операции — обновление заголовков, создание опросов, добавление или удаление участников — в каналах или групповых чатах автоматически. У некоторых из вас, читателей, могут быть даже боты, которые могут инициировать внутренние функции сервера (возможно, ping 8.8.8.8 ?) или отображать аналитические данные и т. д.

Администратору легко управлять своим ботом: отправьте сообщение боту, и он обработает команду в соответствии с инструкциями — просто и понятно. Либо это? Что, если ваша учетная запись Telegram была взломана, что позволило злоумышленнику получить доступ ко всем вашим командам администратора? Как бы вы предотвратили доступ злоумышленника к командам административного бота в случае захвата вашей учетной записи?

С небольшим количеством JavaScript вы можете реализовать аутентификацию TOTP для защиты своего бота Telegram!

Базовые требования

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

В этом примере будут использоваться эти модули:

  • node-telegram-bot-api (Bot Framework)
  • node-telegram-operation-manager (менеджер ответов)
  • deathmoon-totp-generator (генератор TOTP)

После того, как все вышеперечисленное установлено и подключено, структура кода уже должна выглядеть примерно так:

//app.js const TelegramBot = require(‘node-telegram-bot-api’); const ReplyManager = require(‘node-telegram-operation-manager’).ReplyManager; const totp = require(‘deathmoon-totp-generator’); // config const token = “TELEGRAM_BOT_TOKEN”; const chatID = “123456789”; const secret = «0123456789ABCDEF» const bot = new TelegramBot(token, ); const reply = new ReplyManager(); /* . some functions . other functions . more functions */ bot.on(‘message’, (msg) => < if (reply.expects(chatID)) < let < text, entities >= msg; reply.execute(chatID, < text, entities >); > >);

Примечание

Я объявил константу chatID , так как хочу, чтобы бот взаимодействовал исключительно со мной. Таким образом, вы можете создать своего рода белый список, чтобы предоставить доступ большему количеству пользователей. Вы могли также заметить, что я объявил константу secret ; эта переменная включает пример 16-битных буквенно-цифровых токенов для механизма аутентификации TOTP.

Генерация токена

Используйте генератор паролей KeePass для быстрого создания 16-битных токенов. Сочетание прописных букв и цифр должно помочь.

Аутентификаторы

Кроме того, обязательно храните свой секретный токен в аутентификаторе. Я бы порекомендовал KeePassOTP plugin для генерации OTP-кодов. Однако, если вы используете Android, используйте AndOTP!

Настройка ТОТП

Теперь перейдем к сути этой статьи: с нашим секретным токеном, сгенерированным и настроенным, как указано выше, давайте приступим к реализации аутентификации.

Еще по теме:  Телеграмм не грузит чаты Андроид

Создать функцию входа

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

//. bot.onText(//admin/, (msg) => < if((msg.from.id).toString() == chatID)< const otp = totp(secret, < time: new Date() >); bot.sendMessage(chatID, ‘Please enter OTP.’); > >);

При этом шестизначный OTP генерируется в тот момент, когда бот получает «/admin» от администратора. Затем бот генерирует одноразовый пароль на основе предоставленного времени и токена.

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

//. bot.onText(//admin/, (msg) => < if((msg.from.id).toString() == chatID)< const otp = totp(secret, < time: new Date() >); bot.sendMessage(chatID, ‘Please enter OTP.’); reply.register(chatID, (result) => < if(result.text == otp)< bot.sendMessage(chatID, ‘Auth successful!’); >else < bot.sendMessage(chatID, ‘Auth failed!’); >return < repeat: false >; >); > >);

Простые серверные функции

Довольно просто, верно? Теперь давайте расширим его еще больше. Здесь я добавил функции startWebServer() , stopWebServer() .

bot.onText(//admin/, (msg) => < if((msg.from.id).toString() == chatID)< const otp = totp(secret, < time: new Date() >); bot.sendMessage(chatID, ‘Please enter OTP.’); reply.register(chatID, (result) => < switch(result.text.toLowerCase())< case ‘startwebserver’: startWebServer(); return < repeat: true >; case ‘stopwebserver’: stopWebServer(); return < repeat: true >; case ‘exit’: bot.sendMessage(chatID, ‘Admin commands locked.’) return < repeat: false >default: bot.sendMessage(chatID, ‘Unrecognized command!’) return < repeat: true >; > >); > >); function startWebServer() < bot.sendMessage(chatID, ‘Web server started!’); >function stopWebServer()

Следовательно, когда мы отправляем «startwebserver» боту, он запускает соответствующую функцию. Обратите внимание, что return < repeat: true >; позволяет нам запускать столько функций, сколько мы хотели бы, не загружая нас до предварительной аутентификации. Отправка «Выход» затем вернет нас в состояние до аутентификации, требуя от нас повторного входа в систему.

Тест-драйв

Давайте проверим это — запустим узел и попробуем функцию TOTP. Попробуйте отправить административные команды с входом в систему и без нее.

Успех!

Вы сразу заметите, что любые административные функции недоступны без входа в систему. Теперь, когда вы добавили еще один уровень безопасности, не стесняйтесь добавлять дополнительные функции! Просмотрите полный исходный код на https://github.com/timebotdon/totp-auth-telegram.

Оставьте хлопок или поделитесь, если вам это нравится! И большое спасибо за то, что прочитали мой первый пост на Medium! ❤

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

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

Сегодня поговорим о том, как написать бота для Телеграм на php. Материал рассчитан на программистов начального уровня, владеющих азами php. Итак, начнем.

Подготовка к написанию бота

Прежде чем мы приступим к созданию бота, убедимся в том, что в нашем распоряжении имеются хостинг, домен и SSL-сертификат для него (т.е URL начинается с https).

BotFather. Получение API токена

botfather

Работа с TelegramBotApi

Дабы облегчить себе жизнь, взаимодействовать с API Телеграма будем при помощи TelegramBotApi. Для начала нам нужно будет клонировать проект с Гитхаба при помощи Composer. Важный момент. Composer, как правило, не устанавливается без файла php.exe. Самый простой способ это исправить — установить Open Server на ПК.

Клонирование проекта с Гитхаба

В командной строке, при помощи команды cd открываем папку, в которой планируем разместить файлы с нашим ботом и последовательно прописываем команды:

php -r «copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);» php composer-setup.php php -r «unlink(‘composer-setup.php’);»
php composer.phar require telegram-bot/api

composer

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

Фалы АПИ бота для Телеграм

Далее нам нужно скопировать их на хостинг, в папку, в которой будет располагаться наш бот. Наконец можно приступить к непосредственному кодингу бота.

Кодинг Telegram бота на php

В папке с ботом создаем файл index.php.

Важно! Кодировка индексного php-файла должна быть utf-8 без bom!

Пропишем заголовки и подключим АПИ.

header(‘Content-Type: text/html; charset=utf-8’); // подключаемся к API require_once(«vendor/autoload.php»); // создаем переменную бота $token = «токен, который выдал BotFather»; $bot = new TelegramBotApiClient($token);

Переменная бота $bot создана. С этого момента, мы можем обращаться к api, однако, сначала необходимо зарегистрировать webhook.

Еще по теме:  Как раскрутить Телеграмм бота

Что такое webhook?

WebHook — это механизм по которому выполняется связка бота с telegram’ом. Когда пользователь в вводит команду, ее надо каким-то образом передавать на сервер и получать ответ. Webhook служит как раз для этих целей. Он сообщает телеграму куда передавать команды. Поскольку сейчас Телеграм НЕ ЗНАЕТ, где именно расположен код нашего бота, то нам нужно это исправить.

Воспользуемся командой: $bot->setWebhook

// если Телеграм-бот не зарегистрирован — регистрируем if (!file_exists(«registered.trigger»)) < /** * файл registered.trigger будет создаваться после регистрации бота. * если этого файла не существует, значит бот не * зарегистрирован в Телеграмм */ // URl текущей страницы $page_url = «https://».$_SERVER[«SERVER_NAME»].$_SERVER[«REQUEST_URI»]; $result = $bot->setWebhook($page_url); if ($result) < file_put_contents(«registered.trigger»,time()); // создаем файл дабы остановить повторные регистрации >>

Сохраняем индексный файл в том виде, в каком он есть сейчас, а после обратимся к этому файлу по прямому URL. После первого такого обращения в папке с ботом должен появиться registered.trigger — файл, наличие которого подтверждает, что Телеграм знает, где лежит наш бот.

Регистрация Telegram-бота

Обязательные команды для Телеграм-ботов

По правилам Телеграм — все боты должны уметь работать с двумя обязательными командами /start и /help. Займемся этим:

// обязательное. Запуск бота $bot->command(‘start’, function ($message) use ($bot) < $answer = ‘Добро пожаловать!’; $bot->sendMessage($message->getChat()->getId(), $answer); >); // помощь $bot->command(‘help’, function ($message) use ($bot) < $answer = ‘Команды: /help — помощь’; $bot->sendMessage($message->getChat()->getId(), $answer); >); // запускаем обработку $bot->run();

Cохраняем индексный файл и тестировать нашего бота! Ура! Все прекрасно работает! Дальнейший кодинг зависит исключительно от стоящих перед Вами задач. Мне лишь остается ознакомить вас с общим принципом работы библиотеки TelegramBotApi.

Как работает библиотека TelegramBotApi

Все команды TelegramBotApi задаются блоком:

$bot->command(‘start’, function ($message) use ($bot) < . >);

Где $message — объект Message. Советую ознакомиться со всми возможными полями здесь — Types/Message.php

Второй момент. Команды перечисляются до вызова $bot->run(); , если прописать какую-то из команд ниже $bot->run(); — она не будет выполняться. Т.е. $bot->run(); должен замыкать наш код.

Отправка сообщения в TelegramBot API

Отправка сообщения выполняется командой:

$bot->sendMessage(id пользователя которому отправляем, текст сообщения);

Отправка картинок в TelegramBot API

Чтобы переслать пользователю картинку — достаточно передать ее URL. Мессенджер самостоятельно скачает, сконвертирует, а затем перешлет изображение пользователю. В качестве примера запрограммируем команду /getpic.

// передаем картинку $bot->command(‘getpic’, function ($message) use ($bot) < $pic = «https://icopydoc.ru/wp-content/uploads/fortelegrambot.jpg»; $bot->sendPhoto($message->getChat()->getId(), $pic); >);

Отправка документов и голосовых сообщений

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

Отправлять документ будем так:

// передаем документ $bot->command(‘getdoc’, function ($message) use ($bot) < $document = new CURLFile(‘sendfrombot.txt’); $bot->sendDocument($message->getChat()->getId(), $document); >);

Обратите внимание, что строчка

$document = new CURLFile(‘sendfrombot.txt’);

предполагает размещение txt-файла sendfrombot в в корневой папке бота. Однако, можно передавать в переменную и обычный урл. Передачей войсов (голосовых сообщения) осуществляется точно также:

// передаем войс $bot->command(‘getvoice’, function ($message) use ($bot) < $voice = «https://icopydoc.ru/wp-content/uploads/maxim_glazunov-prividenie.mp3»; $bot->sendVoice( $message->getChat()->getId(), $voice //, //$duration, //$replyToMessageId, //$replyMarkup, //$disableNotification ); >);

Получение сообщений из чата

Для получения данных из чата в API используется команда .on():

// болталка $bot->on(function($Update) use ($bot) < $message = $Update->getMessage(); $mtext = $message->getText(); $cid = $message->getChat()->getId(); if (mb_stripos($mtext,»привет») !== false) < $bot->sendMessage($message->getChat()->getId(), «Привет, чувак!»); > >, function($message) use ($name) < return true; // когда тут true — команда проходит >);

Теперь, если написать «привет», то бот ответит «Привет, чувак!».

Сообщаем Botfather-у список наших команд

После того, как все необходимые команды написаны — сообщим об их существовании в Botfather. Данный шаг не обязательный, но лучше сделать. Все просто. Открываем чат с Botfather, вводим /setcommands . Если про вводе команд совершим опечатку — повторно введем /setcommands и переопределим все команды по новой.

Протестируем получившегося бота.

Тест телеграм-бота на пхп

Наш бот работает! Надеюсь, что смог объяснить как создать своего бота на php для телеграмма. Успехов в разработке!

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

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