У меня проблема с боттом Telegram, над которым я сейчас работаю. Я получаю сообщения от пользователей в следующем формате:
update < update_id: 82618016, message: < message_id: 363, from: < id: 22303518, first_name: ‘Steve’, language_code: ‘de-DE’ >, chat: < id: 22303518, first_name: ‘Steve’, type: ‘private’ >, date: 1501501753, text: ‘j’ > >
Когда я хочу получить доступ к идентификатору чата, я могу сделать это без проблем, используя
$.message.chat.id
Как только вы захотите получить message_id или first_name, я получаю «undefined».
$.message.chat.first_name $.message.message_id
Может ли кто-нибудь помочь мне здесь? Насколько я понимаю, я правильно понял структуру сообщения, поэтому я действительно не знаю, в чем проблема. заранее большое спасибо EDIT: Я добавляю немного больше своего кода здесь: Основной код для бота (включая webhook) заключается в следующем:
initializeBot(); function initializeBot() < const Telegram = require(‘telegram-node-bot’); const PingController = require(‘./controllers/ping’); const OtherwiseController = require(‘./controllers/otherwise’); const tg = new Telegram.Telegram(‘MY_TOKEN_IS_HERE’, < webhook: < url: ‘https://mutzi-bot.herokuapp.com’, port: process.env.PORT || 443, host: ‘0.0.0.0’ >>) tg.router.when(new Telegram.TextCommand(‘/ping’, ‘pingCommand’), new PingController()) .otherwise (new OtherwiseController()); >
Когда вызывается OtherwiseController, вызывается следующий код (я уменьшил его до сути, чтобы прояснить проблему.
How to get sent message id by telegram bot | Как узнать ID отправленного сообщения телеграм бот
class OtherwiseController extends Telegram.TelegramBaseController < handle($)< console.log($.message.chat.first_name); console.log($.message.text); console.log($.message.chat.id); console.log($.message.message_id); >>
Консольный вывод для этого сообщения
update < update_id: 82618020, message: < message_id: 371, from: < id: 22303518, first_name: ‘Steve’, language_code: ‘de-DE’ >, chat: < id: 22303518, first_name: ‘Steve’, type: ‘private’ >, date: 1501509762, text: ‘hello’ > >
undefined hello 22303518 undefined
Источник: overcoder.net
Создание Telegram бота на PHP: Отправка и получение сообщений. Урок 2
Для разработки Telegram ботов, я создал поддомен info.d-nik.site. Его я буду использовать для создания новостного сайта, а также для программирования ботов на PHP. То есть, именно здесь я буду хранить php скрипты для взаимодействия с Телеграм ботами.
Если вы не знаете, как создать поддомен, то я пошагово опишу как это делается на хостинге ukraine.com.ua (это хостинг на котором размещён мой сайт). Но помните, что у каждого хостинг-провайдера свои особенности, и потому у вас этот процесс может быть несколько другим.
Создаём поддомен на хостинге Ukraine
Для того чтобы создать поддомен, нужно:
1. Авторизоваться на сайте ukraine.com.ua и перейти в раздел «Мои сайты».
2. Нажать «Добавить поддомен» в блоке нужного сайта.
3. В появившемся окне нужно ввести желаемое название поддомена (я ввёл info), выбрать нужный сайт (у меня и так выбран d-nik.info) и нажать на кнопку «Добавить».
4. Теперь нужно немного подождать, пока будет созданы виртуальный хост и корневой каталог поддомена.
Через несколько минут, если мы перейдём в корневой каталог сайта d-nik.site, то в нём уже будет папка info. Это и есть корневой каталог нашего нового сайта и, как я уже говорил ранее, здесь мы будем хранить PHP скрипты для взаимодействия с Telegram ботами.
Взаимодействие c Telegram ботом
Давайте теперь перейдём в этот каталог info и создадим в нём файл bot.php.
Вот в этом файле мы и будем писать PHP код для взаимодействия с ботом. Доступен он будет по адресу https://info.d-nik.site/bot.php.
На этом подготовительный этап закончен и можно переходить непосредственно к программированию.
Устанавливаем Webhook
Для того чтобы все сообщения из Telegram бота приходили на наш PHP скрипт, нужно установить «Webhook». Для этого в адресной строке браузера вводим ссылку со следующей конструкцией:
https://api.telegram.org/bot/setWebhook?url=
- – это токен, который мы получили при регистрации своего бота в Телеграм.
- – путь к файлу PHP скрипта.
Для примера, моя ссылка выглядит следующим образом:
https://api.telegram.org/bot5741786015:AAGTuEwCBGHmcJP9kO-OzV_xKIduBkbAK6Y/setwebhook?url=https://info.d-nik.site/bot.php
Если вы всё сделали правильно, то увидите в браузере следующую информацию:
Это говорит о том, что Вебхук был установлен.
Webhook – это удобный и быстрый способ оповестить клиента об изменении на сайте, основанный на методе расширения или изменения поведения веб-страницы или веб-приложения с помощью обратных вызовов.
Если говорить о том, как работает Webhook в Телеграм, то здесь всё очень просто. Когда приходит новое сообщение, сервер Telegram отправляет их вашему боту.
Получение сообщений от Telegram
Теперь мы можем написать свой первый код на PHP в файле bot.php, который позволит получить сообщение от Telegram с информацией о том, кто написал чат-боту, когда он это сделал, какой текст был написан и т.д.
$data: Array
(
[update_id] => 699174043
[message] => Array
(
[message_id] => 22
[from] => Array
(
[id] => 1526361849
[is_bot] =>
[first_name] => UserFirstName
[last_name] => UserLastName
[username] => UserName
[language_code] => uk
)
[chat] => Array
(
[id] => 1526361849
[first_name] => UserFirstName
[last_name] => UserLastName
[username] => UserName
[type] => private
)
[date] => 1670785452
[text] => Привет бот!
)
- «message_id» — id созданного сообщения;
- «from» — кто отправил сообщение;
- «chat» — данные о чате в который попало сообщение;
- «date» — дата создания сообщения;
- «text» — текст сообщения.
Рисунок. Отправляем сообщение «привет бот!»
Рисунок. Файл message.txt на сайте
Отправка сообщений боту в Telegram
Давайте теперь рассмотрим простой пример, как можно взаимодействовать с пользователем. Например, проанализируем, какое сообщение было отправлено боту. Если было отправлено «/start», то бот ответит «Здравствуйте. Я ваш бот!». В любом другом случае пользователь увидит «Напишите пожалуйста /start!».
// Ответ на текстовые сообщения // Получаем текст, который отправил пользователь Телеграмм боту в мессенджере if (!empty($data[‘message’][‘text’])) < $text = $data[‘message’][‘text’]; // Если пользователь отправил сообщение «/start» if (mb_stripos($text, ‘/start’) !== false) < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Здравствуйте. Я ваш бот!’ ) ); exit(); > else < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Напишите пожалуйста /start!’ ) ); exit(); > > ?>
Обратите внимание на то, что при написании кода мы используем клиентскую библиотеку работы с URL – Curl. Она является намного более продвинутой альтернативой функции file_get_contents поскольку позволяет работать с куками, с заголовками, позволяет отправлять формы и переходить по редиректам.
Эта библиотека не требует дополнительных файлов, и ее не нужно подключать.
На этом урок можно заканчивать. В нём мы научились создавать поддомен на хостинге для нового сайта, создали PHP скрипт, и разработали программу взаимодействия с Telegram ботом, которая получает сообщения от Telegram и отправляет сообщения боту.
Вас может заинтересовать
- Telegram бот на PHP: Отправка сообщений в Telegram-канал
- Создание Telegram бота на PHP: Создание меню для Телеграм бота. Урок 7
- Создание Telegram бота на PHP: Кнопки в телеграм боте. Урок 6
- Создание Telegram бота на PHP: Загрузка и скачивание видео. Урок 5
- Создание Telegram бота на PHP: Отправка и сохранение файлов. Урок 4
- Создание Telegram бота на PHP: Отправка и получение картинок. Урок 3
- Создание Telegram бота на PHP: Регистрация бота и создание чата. Урок 1
- Создание Telegram бота на PHP: Подготовка к разработке бота. Вступление
Источник: d-nik.site
Три простых шага для отправки сообщения в Telegram используя Python
Отправлять сообщение в телеграмм может оказаться полезным при запуске ресурсоемких операций. Например скрипт который отработал один час, должен отправить вам сообщение о статусе завершившейся операций. Вам вероятно, понадобится простой скрипт, чтобы отправить сообщение, когда ваша операция завершит работу. Для этого мы можем легко написать функцию Python, которая отправляет вам сообщение Telegram всякий раз, когда вы ее вызываете.
Создание Telegram-бота с помощью BotFather
- Откройте приложение Telegram и найдите BotFather. (Встроенный бот Telegram, который помогает пользователям создавать собственных ботов Telegram)
- Введите /newbot, чтобы создать нового бота.
- Дайте вашему боту название.
- Скопируйте токен Telegram для вашего нового бота.
Примечание: не загружайте свой токен онлайн, так как любой, у кого есть ваш токен, получит полный контроль над вашим ботом Telegram.
Получение идентификатора chat ID
В Telegram у каждого чата есть идентификатор чата. Нам нужен этот идентификатор для отправки сообщений в Telegram с использованием Python.
- Отправьте своему боту в Telegram сообщение (любое)
- Запустите этот скрипт Python, чтобы найти свой chat ID
import requests TOKEN = «YOUR TELEGRAM BOT TOKEN» url = f»https://api.telegram.org/bot/getUpdates» print(requests.get(url).json())
Этот скрипт вызывает функцию getUpdates, которая проверяет наличие новых сообщений в чатах. Мы можем найти наш chat ID из возвращенного JSON (тот, что выделен красным)
Note: Если вы не отправите сообщение своему боту в Telegram, ваши результаты могут быть пустыми.
- Скопируйте и вставьте идентификатор чата в следующий шаг.
Отправка сообщения Telegram с помощью Python
Скопируйте и вставьте 1) ваш токен бота Telegram и 2) ваш chat ID из предыдущих 2 шагов в следующий скрипт Python. (И также настройте свое сообщение)
import requests TOKEN = «YOUR TELEGRAM BOT TOKEN» chat_id = «YOUR CHAT ID» message = «hello from your telegram bot» url = f»https://api.telegram.org/bot/sendMessage?chat_id= print(requests.get(url).json()) # this sends the message
Запустите скрипт и проверьте свой Telegram!
Источник: simpleitrunner.ru