Api Telegram бота пример

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

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

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

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

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

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

Telegram бот и REST 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 — за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.

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

Разработка Telegram Bot на Python. (0.1 — Разбираем API Telegram)

И наконец, добавляется метод 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 и перейдем к созданному боту, используя поиск и короткое имя, которое указывалось на первом шаге.

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

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

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

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

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

Заключение

Отправка сообщений в Telegram

И вот одним из популярных мессенджеров является Telegram. На мой взгляд преимуществ у него много. И наверное каждый пользователь хотел бы получать сообщения с формы прямо в телеграмм! Ведь это круто, на дворе то уже 2017 год))

И как раз в данной статье я хочу показать Вам, как я настроил отправку сообщений с формы обратной связи в Telegram. Конечно всё это я реализовал для MODX, это не сложно реализовать и на каком-нибудь PHPMailer.

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

Схема использования очень проста, и выглядит так:

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

Первым делом необходимо создать бота в Telegram с помощью этой инструкции

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

Отправка запросов

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

https://api.telegram.org/bot/НАЗВАНИЕ_МЕТОДА.

Все методы доступны в Telegram Bot API

Узнать id чата Telegram

Дальше необходимо узнать id чата, чтобы бот присылал сообщения с формы именно Вам!

Для этого необходимо что-нибудь написать своему боту и воспользоваться методом getUpdates.

После того как Вы написали своему боту, прописываем следующий адрес в браузере:

https://api.telegram.org/bot/getUpdates

Вместо необходимо прописать свой токен!

Если всё сделали правильно, то Вы получите ответ в виде массива. Для корректный работы нам необходимо id чата, он как-раз такие есть в этом массиве после «chat»:»>

Так, id чата успешно получен, теперь попробуем отправить тестовое сообщение своему боту с браузера!

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

Чтобы отправить сообщение себе через бота, необходимо воспользоваться методом sendMessage. Для этого прописываем следующий адрес в браузере, вместо и необходимо прописать свои данные!

https://api.telegram.org/bot/sendMessage?chat_id=; $chat_id = «»; $values = $hook->getValues(); #Получаем название формы $formName = $modx->getOption(‘formName’, $formit->config, ‘form-‘.$modx->resource->get(‘id’)); #Получаем ip адрес отправителя $ip = $modx->getOption(‘REMOTE_ADDR’, $_SERVER, »); #Данные с формы $name = $values[‘name-zv’]; $phone = $values[‘phone-zv’]; #Создаем массив $arr = array( «Имя» => $name, «Телефон» => $phone, «Название формы» => $formName, «Айпи» => $ip); /*Цикл по массиву (собираем сообщение) */ foreach($arr as $key => $value) < $txt .= «».$key.»: «.$value.»%0A»; > #Отправляем сообщение $fp=fopen(«https://api.telegram.org/bot/sendMessage?chat_id=text=»,»r»); #Возвращаем true return true;

Указываем токен и id чата!

Наименование полей с формы у вас могут быть другими, я использовал название полей со статьи, где мы настраивали отправку сообщений с модального окна!

К тому-же данные с формы можно получить сразу с помощью метода $hook ->getValues(); но для наглядности я решил расписать всё подробнее))

Кстати строки в телеграмме я переношу с помощью %0A. Почему-то n и
не работали(

И так, теперь там где вызывается Formit, прописываем наш хук FormitTelegram в formName=`Название формы`

Вот и всё, также можно настроить отправку сообщений и себе в ВК!

Если у Вы отправляете форму с помощью PHP, то на блоге smartlanding.biz есть грамотная инструкция, где всё подробно расписано с применением Ajax.

Надеюсь статья понравилась и очень полезная 🙂

Пишите в комментариях, чтобы вы ещё хотели реализовать с помощью ботов для телеграмма!

UPD

Воспользуйтесь методами компонента https://modstore.pro/packages/alerts-mailing/modtelegram
Очень удобно, особенно при отправке изображений 🙂

Написать комментарий

Алексей 25 июля 2022, 15:32 # ↓ 0
А как сделать чтобы приходили данные с чекбоксов формы? Данный скрипт их не выводит
Ильвар 11 января 2023, 15:10 # ↑ ↓ 0
Яна 23 мая 2022, 18:38 # ↓ 0

Еще по теме:  Девочки подростки покажи себя юной Телеграм

Кто захочет подцепить бота в группу, добавьте также в группу бота Get My ID, он выдаст Current chat ID начинающийся с минуса, его и нужно использовать в сниппете

Shahzod 11 января 2022, 13:50 # ↓ 0

Всем привет. Готовы ли вы к этому проекту? По какой-то причине я не мог использовать то, что я сделал. По возможности скиньте .zip

Сергей 27 ноября 2021, 20:58 # ↓ 0

Я перевел своих клиентов на webjack, делает все то же самое, минимальный тариф дешевле.
Можно получить месяц бесплатно по промокоду semen21, напишите его в чат техподдержки на сайте

Jstart 08 ноября 2021, 15:09 (Комментарий был изменён) # ↓ 0

Как возможно прикрепить файлы например фотографии и документы и отправить?
Не где не могу найти материал, как это можно реализовать?
Я думаю эта тема была бы топ если реализовать такое ))
Просто есть sendPhoto — для фото и есть sendDocument — для документов, вопрос такой есть ли общий переменная может как то объединить?
Мой снипет

getValues(); // Получаем название формы $formName = $modx->getOption(‘formName’, $formit->config, ‘form-‘.$modx->resource->get(‘id’)); // Получаем ip адрес отправителя $ip = $modx->getOption(‘REMOTE_ADDR’, $_SERVER, »); // Берем данные с формы $name= $values[name]; $phone= $values[‘phone’]; $email= $values[’email’]; $length= $values[‘length’]; $width= $values[‘width’]; $height= $values[‘height’]; $circulation= $values[‘circulation’]; $arr = array( «IP» => $ip, «Длина» => $length, «Ширина» => $width, «Высота» => $height, «Количество» => $circulation, «Имя» => $name, «Телефон» => $phone, «Email» => $email); if($length){ $arr[«Длина»] = $length; } if($width){ $arr[«Ширина»] = $width; } if($height){ $arr[«Высота»] = $height; } if($circulation){ $arr[«Количество»] = $circulation; } if($email){ $arr[«Email»] = $email; } if($phone){ $arr[«Телефон»] = $phone; } if($email){ $arr[«Email»] = $email; } $txt = ‘Заполнена форма — ‘.$formName.»n»; // Цикл по массиву (собираем сообщение) foreach($arr as $key => $value) { $txt .= «».$key.»: «.$value.» n»; } // Отправляем сообщение посредством cURL $website=»https://api.telegram.org/bot».$token; $params=[ ‘chat_id’ => $chat_id, ‘text’ => $txt, ‘parse_mode’ => ‘html’ ]; $ch = curl_init($website . ‘/sendMessage’); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, ($params)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); $modx->log(MODX_LOG_LEVEL_ERROR, $result); curl_close($ch); //Возвращаем true – это особенность написания хуков для FormIt. return true;
Игорь 09 ноября 2021, 21:59 # ↑ ↓ 0
Воспользуйтесь данным компонентом modstore.pro/packages/alerts-mailing/modtelegram
jstart 10 ноября 2021, 00:40 # ↑ ↓ 0

Оно не понятное, и смысла не вижу от него, как с формой работать, как подключать, нету не какой информации.
Доки вообще старые.
Как вставлять документы?
Если скините форум как он работает и подключается было бы супер.

jstart 10 ноября 2021, 00:44 (Комментарий был изменён) # ↑ ↓ 0

Это же чат и всё, смысла нет, нужна именно форма для отправки заявки, спасибо конечно, но это не подходит уже смотрел.

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

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