Вызов Telegram API для создания бота в фидрайдере
Я видел, что Новый API для ботов позволяет создавать обычные боты, я видел некоторые источники, такие как этот, и это я также читал о @fatherbot
о регистрации ботов, я также искал несколько примеров о ботов-телеграмм, таких как этот, я знаю, как писать коды в php
а также python
но не может узнать, как вызывать методы API и с чего начать. Кто-нибудь знает, как начать?
7 ответов
Вы можете просто использовать мою новую библиотеку для бот-API телеграммы! https://github.com/tekook/TelegramLibrary
Он имеет все функции нового API и является простым в использовании и библиотекой событий!
Повеселись!
Вы можете использовать этот базовый пример, чтобы начать работу. Я бы предложил добавить немного больше блеска, используя как curl и добавив немного обработки ошибок.
<?php
$bot_id = "<bot ID generated by BotFather>";
# Note: you want to change the offset based on the last update_id you received
$url = 'https://api.telegram.org/bot' . $bot_id . '/getUpdates?offset=0';
$result = file_get_contents($url);
$result = json_decode($result, true);
foreach ($result['result'] as $message) {
var_dump($message);
}
# You can send a message like this:
# The chat_id variable will be provided in the getUpdates result
# TODO: urlencode your message
$url = 'https://api.telegram.org/bot' . $bot_id . '/sendMessage?text=message&chat_id=0';
$result = file_get_contents($url);
$result = json_decode($result, true);
var_dump($result['result']);
Согласно Официальному API бота:
Getting updates
There are two mutually exclusive ways of receiving updates for your bot
— the getUpdates method on one hand and Webhooks on the other.
Таким образом, PHP скрипт для бота работает по-разному при получении схемы
Используйте getUpdates
Доступ к API бота осуществляется через HTTP GET/POST, подробности в официальной справке.
- Используйте бесконечный цикл для чтения сообщений из телеграммы с HTTP GET / POST
Если есть новые сообщения
- Разбор сообщения
- Отправить сообщение с HTTP GET / POST
- Спи несколько секунд
Используйте WebHook
При использовании WebHook(и с хорошей настройкой) новое сообщение вашему боту вызовет HTTP-запрос POST с сервера telegram на ваш настроенный URL-адрес на вашем собственном сервере, проанализированный вашим PHP-скриптом.
В вашем PHP-скрипте проанализируйте новое сообщение, пришедшее с HTTP POST, и отправьте сообщение обратно с HTTP POST на сервер телеграмм.
Таким образом, разница существует только при получении сообщений от telegram, все ответы, отправляемые на telegram, отправляются через HTTP GET/POST, подробности в разделе Создание запросов в официальном API.
Некоторые люди взбесились неофициальным PHP API на GitHub:
Я предлагаю начинающим начать этот путь:
Найдите BotFather в своем приложении Telegram
Отправьте ему команду /newbot. Следуй его инструкциям.
Он даст вам знак, что-то вроде
123456789:ABCDefGHIJKLmnopQRstUVwXYz
Откройте окно браузера, введите в адресной строке что-то вроде этой формы:
https://api.telegram.org/bot<token>/getMe
Например, используя поддельный токен сверху:https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
Он должен вернуть информацию вашего бота в формате JSON. Это показывает, что доступ к Bot API - это не что иное, как выполнение HTTP-запросов.Найдите своего бота в приложении Telegram. Отправь сообщение.
В окне браузера введите:
https://api.telegram.org/bot<token>/getUpdates
Не забудьте заменить токен. Вы должны увидеть сообщение, которое вы только что отправили. Обратите вниманиеfrom
а такжеchat
поле. Это ты.Затем вы можете попробовать некоторые библиотеки. Чтобы дать здесь некоторое языковое равновесие, я предлагаю telepot, созданный мной фреймворк Python. На странице проекта много документации и примеров.
Наконец, даже с помощью библиотек, я призываю вас прочитать основную документацию Bot API. Понимание этого помогает вам использовать его полную силу.
Удачи.
Что касается API getUpdates и бесконечного цикла, php-сервер не может выполнить код в течение 30 секунд. так что бесконечный цикл не работает правильно.
В ответ на сценарий, который не может быть запущен более 30 секунд:
использовать set_time_limit(0); чтобы это длилось вечно. Однако имейте в виду, что любой бесконечный цикл времени несколько опасен; Побочные эффекты, такие как загрузка процессора или утечки памяти, будут есть на вашем сервере. Вот почему многие интернет-провайдеры запрещают эту настройку.
Я также новичок в Telegram API, но вы можете начать с доступа к этому URL, в котором вы должны заменить (токен) на свой собственный сгенерированный токен buy BotFather:
https://api.telegram.org/bot(token)/METHOD_NAME
Например, если вы хотите начать обрабатывать запросы, отправленные вашему боту вашим PHP-скриптом, вы должны вызвать это:
https://api.telegram.org/bot(token)/setWebhook?url=https://yourdomain.com/path_to_your_script/
Пожалуйста, обратите внимание, что у вас ДОЛЖЕН быть веб-сайт с поддержкой SSL, чтобы начать использовать Telegram API.