Bot token Telegram что это

Telegram предоставляет Bot API для управления поведением ботов. С помощью доступных методов API вы можете настраивать логику ботов для данного канала.

Например, вы можете:

  • отправлять сообщения
  • удалять сообщения

Если ваш бот еще не подключен к каналу Telegram, сначала перейдите к инструкции по подключению и выполните ее шаги, чтобы опубликовать бота. После подключения перейдите к следующему шагу этой статьи.

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

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

В личный аккаунт

Чтобы отправить сообщение клиента в личный аккаунт, добавьте в сценарий:

  1. Блок text to $var, чтобы записать сообщение клиента в переменную.
  2. Блок HTTP-запрос:
  3. Выберите метод GET .
  4. В поле URL вставьте https://api.telegram.org/bot/sendMessage , где — токен из последнего сообщения бота BotFather при создании бота в Telegram. Это значение вида 5949769123:AAFVkGudasD-qdWscjxJsmlqphhOcD59eXs .
  5. Скопируйте JSON-объект ниже и вставьте его на вкладку BODY:

«chat_id»: 223001234, «text»: «Клиент $rawRequest.message.from.id: $message» >

  • 223001234 — пример идентификатора вашего диалога с ботом. Вы можете узнать его через специального бота.
  • $rawRequest.message.from.id — идентификатор диалога клиента с ботом из переменной $rawRequest . Он также имеет вид 223001235 .
  • $message — переменная, которая содержит текст сообщения клиента.

Опубликуйте сценарий и протестируйте отправку сообщений. В результате успешного выполнения HTTP-запроса вы получите сообщение от бота в формате Клиент 223001235: Сообщение .

Telegram Bot Tokens, Unveiled: Your Gateway to Web3 Glory! | CertiK

В диалог клиента с ботом

Чтобы отправить сообщение клиенту в диалог с ботом из личного аккаунта, после HTTP-запроса добавьте в сценарий:

  1. Блок num to $var, чтобы ввести идентификатор клиента, которому вы отправляете сообщение.
  2. Блок Условия с выражением $currentChatId = $number , чтобы сохранить идентификатор в переменную.
  3. Блок text to $var, чтобы записать ваше сообщение в переменную.
  4. Блок HTTP-запрос:
  5. Выберите метод GET .
  6. В поле URL вставьте https://api.telegram.org/bot/sendMessage , где — токен из последнего сообщения бота BotFather при создании бота в Telegram. Это значение вида 5949769123:AAFVkGudasD-qdWscjxJsmlqphhOcD59eXs .
  7. Скопируйте JSON-объект ниже и вставьте его на вкладку BODY:

«chat_id»: $currentChatId, «text»: «Оператор: $text» >

  • $currentChatId — идентификатор диалога клиента с ботом.
  • $text — переменная, которая содержит текст вашего сообщения.

Опубликуйте сценарий после изменений и протестируйте бота. После того как вы получите сообщение от бота в формате Клиент 223001235: Сообщение , введите идентификатор клиента из этого сообщения. В следующем сообщении введите ответ клиенту. Он получит ваше сообщение в диалог с ботом в формате Оператор: Сообщение .

Удаление сообщений

С помощью метода deleteMessage вы можете удалить сообщение из диалога с ботом. Этот метод можно использовать, например, в ботах с авторизацией по логину и паролю, чтобы не хранить пароль в истории сообщений.

Чтобы удалить сообщение, добавьте в сценарий блок HTTP-запрос:

  • Выберите метод GET .
  • В поле URL вставьте https://api.telegram.org/bot/deleteMessage , где — токен из последнего сообщения бота BotFather при создании бота в Telegram. Это значение вида 5949769123:AAFVkGudasD-qdWscjxJsmlqphhOcD59eXs .
  • Скопируйте JSON-объект ниже и вставьте его на вкладку BODY:
Еще по теме:  Удаленные записи в ТГ

«chat_id»: $rawRequest.message.from.id, «message_id»: $rawRequest.message.message_id >

  • $rawRequest.message.from.id — идентификатор диалога пользователя с ботом из переменной $rawRequest . Он имеет вид 223001234 .
  • $rawRequest.message.message_id — идентификатор удаляемого сообщения из переменной $rawRequest . Он имеет вид 67 .

В результате успешного выполнения HTTP-запроса сообщение автоматически удаляется из диалога с ботом.

Источник: help.aimylogic.com

Как создать простого бота для Телеграм на PHP

Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.

Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего . Никаких фреймворков и гитхабов! Все будет очень просто и примитивно, но работать будет. И это главное. Всем счастья

Шаг 1: подготовка

Что нам понадобится:

  1. Веб-сервер с работающим PHP 5.6 и выше — не локальный веб-сервер, а веб-сервер на хостинге, что важно! Так как сервисы Telegram должны будут видеть вашего бота по внешней URL-ссылке;
  2. Веб-сервер должен работать через https — то есть на веб-сервере должен быть установлен давно (больше суток назад) зарегистрированный SSL-сертификат. Достаточно будет бесплатного Let’s Encrypt SSL-сертификата;
  3. Доступ к файлам на этом сервере, конечно же — иначе как мы что-то сделаем;
  4. Установленная кодовая страница UTF-8 на сервере по-умолчанию или добавьте в файл .htacces в корне сайта строку AddDefaultCharset utf-8;
  5. Аккаунт в мессенджере Telegram;

Шаг 2. Регистрация вашего бота в Телеграм

Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.

Шаг 3. Создаем код бота

Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.

Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.

Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:

Шаг 4. Делаем WebHook и конкретизируем код бота

    Чтобы все заработало, нужно сособщить сервису Телеграм, что наш бот лежит там-то — используй его код для такого-то бота verysimple_bot.
    Для этого нужно сформировать ссылку, которая называется WebHook и её мы и сообщим телеграму:

https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php

Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!

  1. Пользователь в диалоге с ботом пишет запрос, например /help
  2. Telegram Bot API через WebHook, что мы установили, берет этот запрос и отправляет в код бота
  3. Мы в боте получаем его, анализируем, видим например, /help и через Telegram Bot API и
    функцию message_to_telegram отправляем ответ — который появлется в диалоге как ответ бота.

Шаг 5. Добавим возможность делать заявки через бота

Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:

  1. Пользователь запрашивает у бота «Оставить заявку», например набрав команду /order
  2. Бот входит в режим ожидания текста Заявки
  3. Если пользователь ввел текст и нажал Enter, только тогда отослать это сообщение заранее запрограммированному по менеджеру компании.
Еще по теме:  На сколько банят Телеграмм

Получим идентификатор chat_id пользователя кому нужно отсылать заявки:

  1. Помните наш файл message.txt — вот он сейчас понадобится
  2. Присоединяемся к нашему боту тем пользователем, кому будем слать заявки (менеджер компании)
  3. Сразу открываем файл message.txt и смотрим блок: [chat]

$order_chat_id = ‘123456789’; //chat_id менеджера компании для заявок $bot_state = »; // состояние бота, по-умолчанию пустое

Сохраняем состояние бота для каждого пользователя

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

Напишем две функции: set_bot_state($chat_id, $data) и get_bot_state($chat_id) — которые сохраняют текущее состояние бота и получают соответсвенно, для нужного пользователя. Сохранять будем в подпапке /users на сервере, которую создадим предварительно не забыв дать права на запись. Состояния будут хранится все в тех же текстовых файлах с именами chat_id пользователей и содержать последнюю команду:

// сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) < file_put_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’, $data); >// получить текущее состояние бота для пользователя function get_bot_state ($chat_id) < if (file_exists(__DIR__ . ‘/users/’.$chat_id.’.txt’)) < $data = file_get_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’); return $data; >else < return »; >>

Теперь дополним код бота, добавив запись и отлов состояния и отправив заявку менеджеру компании, если состояние отправки заявки.

Шаг 6. Регистрация команд бота

Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.

Николай Комарков

Источник: www.novelsite.ru

Telegram бот через webhook

Я тогда давно написал статью про создание Telegram бота, и обещал дополнить её описанием настройки работы через webhook, но так и не дополнил. Вот только сейчас дошли руки.

Telegram bot webhook

Что это такое

Как пишут в документации, общаться с серверами Telegram бот может двумя способами:

  1. getUpdates — pull: ваш бот постоянно дёргает сервер Telegram и проверяет есть ли новые сообщения;
  2. setWebhook — push: по мере поступления новых сообщений сервер Telegram отправляет их вашему боту.

Разницу можно изобразить следующим образом:

Telegram bot, getUpdates vs setWebhook

Очевидно, что второй способ ( setWebhook ) рациональнее для всех участников процесса. Однако в нём присутствует неявная сложность: кто-то должен принимать сообщения от Telegram на стороне бота, то есть необходим веб-сервер или его эквивалент.

Как настроить

Что нужно сделать:

  1. Заиметь доменное имя для сервера и получить на него сертификат (например, от Let’s Encrypt). Документация также говорит, что в случае самоподписанного сертификата можно обойтись и просто IP адресом, но этого я не пробовал;
  2. Запилить серверную часть на стороне бота (куда будет ломиться Telegram);
  3. Зарегистрировать адрес серверной части в Telegram (зацепить webhook на endpoint), чтобы Telegram знал, куда ломиться с сообщениями.

Сертификат

С доменом и сертификатом просто. Домен у меня уже был, а сертификат я получил по этой инструкции.

Вариант с самоподписанным сертификатом на прямой IP адрес я оставляю вам на самостоятельное изучение.

Серверная часть

Серверная часть чуть посложнее. Я переделал текущую реализацию бота на pyTelegramBotAPI, используя пример для AIOHTTP.

Ставим необходимые пакеты:

pip install pyTelegramBotAPI pip install aiohttp pip install cchardet pip install aiodns

И сокращённо код бота теперь такой:

Что здесь происходит: мы запускаем мини-веб-сервер, который слушает порт 8443 и отвечает на запросы через определённый endpoint, который образован токеном бота. Токен используется здесь как достаточно уникальный идентификатор, чтобы какой-нибудь мимокрокодил из интернета не навызывал бота и не натворил дел. Полный адрес endpoint’а будет выглядеть вот так: https://YOUR.DOMAIN:8443/YOUR-TOKEN/ .

Еще по теме:  Второй аккаунт в Telegram web

Обратите также внимание на отличия от стандартного примера из репозитория:

  • в качестве файла сертификата указан fullchain.pem , а не cert.pem ;
  • удалён код снятия и установки webhook’а.

Так как бота я запускаю не из-под root’а, сервис начал валиться с такой ошибкой:

python-bot[1824]: Traceback (most recent call last): python-bot[1824]: File «/usr/local/bin/bot/bot.py», line 142, in python-bot[1824]: context.load_cert_chain(WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV) python-bot[1824]: PermissionError: [Errno 13] Permission denied systemd[1]: telegram-bot.service: Main process exited, code=exited, status=1/FAILURE systemd[1]: telegram-bot.service: Failed with result ‘exit-code’.

То есть, у пользователя, из-под которого выполняется скрипт, нет доступа к /etc/letsencrypt/ , чтобы открыть файл сертификата. Я попытался дать доступ к каталогу для новой группы, включив в неё этого пользователя:

groupadd letsencrypt usermod -a -G letsencrypt userforbot chgrp -R letsencrypt /etc/letsencrypt/

Но он один фиг не мог открыть файлы оттуда, даже простой ls выдавал ошибку доступа. В общем, или мои познания Linux полный отстой, или одно из двух. Пришлось тупо назначить его владельцем:

chown -R userforbot:letsencrypt /etc/letsencrypt/

Тогда сервис запустился нормально.

Регистрация

Теперь осталось самое, как оказалось, сложное — зарегистрировать endpoint бота в Telegram. Сложности возникли потому, что я сначала неправильно понял принцип составления endpoint’а, а также из-за проблем с проверкой сертификата.

Для установки/регистрации webhook’а нужно выполнить следующий HTTP запрос (можно просто открыть этот URL в браузере):

https://api.telegram.org/botYOUR-TOKEN/setWebhook?url=https://YOUR.DOMAIN:8443/YOUR-TOKEN/

Пока я экспериментировал и разбирался с форматом endpoint’а, Telegram возвращал мне нормальный результат:

«description»: «Webhook was set», «ok»: true, «result»: true >

Но потом я его видимо задолбал, и он стал возвращать мне следующее:

«ok»: false, «error_code»: 504, «description»: «Gateway Timeout» >

Но оказалось, что это ни на что не влияет, и webhook нормально устанавливается, так что можно даже не дожидаться таймаута, а просто отменять запрос через пару секунд.

Проверить статус webhook’а можно таким запросом:

https://api.telegram.org/botYOUR-TOKEN/getWebhookInfo

Если всё нормально, должно вернуть такое:

«ok»: true, «result»: «url»: «https://YOUR.DOMAIN:8443/YOUR-TOKEN/», «has_custom_certificate»: false, «pending_update_count»: 0, «max_connections»: 40 > >

Как видим, в поле url стоит наш endpoint.

Однако, мне оно сейчас возвращает такое:

«ok»: true, «result»: «url»: «https://YOUR.DOMAIN:8443/YOUR-TOKEN/», «has_custom_certificate»: false, «pending_update_count»: 0, «last_error_date»: 1543762687, «last_error_message»: «SSL error «, «max_connections»: 40 > >

Что указывает на некие проблемы с сертификатом. При этом бот работает нормально, то есть эта ошибка ни на что не влияет. Однако, если вместо fullchain.pem оставить cert.pem (как было указано в примере), то бот работать перестанет.

Стоит также отметить, что если вы установили webhook, то опрос Telegram через getUpdates работать больше будет. Чтобы снять webhook, надо отправить тот же самый запрос, что и для установки, но на этот раз без параметра url :

https://api.telegram.org/botYOUR-TOKEN/setWebhook
«ok»: true, «result»: true, «description»: «Webhook was deleted» >

Ну и всё, не так уж и сложно. Если бы в документации (и сторонних манулах из интернетов) была указана такая простая вещь, что для webhook’а всего-то нужен лишь веб-сервер на стороне бота, я бы это сделал уже сто лет назад. Конечно, продвинутым чувакам это скорее всего было очевидно сразу, но мнe — нет.

Note that even if you sign-in with your e-mail or GitHub, you still won’t be subscribed to replies. That is by design of remark42, unfortunately. To get updates about new replies/commends you need to explicitly subscribe to them either via e-mail or RSS.

Источник: decovar.dev

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