Вызов 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:

Я предлагаю начинающим начать этот путь:

  1. Найдите BotFather в своем приложении Telegram

  2. Отправьте ему команду /newbot. Следуй его инструкциям.

  3. Он даст вам знак, что-то вроде 123456789:ABCDefGHIJKLmnopQRstUVwXYz

  4. Откройте окно браузера, введите в адресной строке что-то вроде этой формы: https://api.telegram.org/bot<token>/getMe
    Например, используя поддельный токен сверху: https://api.telegram.org/bot123456789:ABCDefGHIJKLmnopQRstUVwXYz/getMe
    Он должен вернуть информацию вашего бота в формате JSON. Это показывает, что доступ к Bot API - это не что иное, как выполнение HTTP-запросов.

  5. Найдите своего бота в приложении Telegram. Отправь сообщение.

  6. В окне браузера введите: https://api.telegram.org/bot<token>/getUpdates
    Не забудьте заменить токен. Вы должны увидеть сообщение, которое вы только что отправили. Обратите внимание from а также chat поле. Это ты.

  7. Затем вы можете попробовать некоторые библиотеки. Чтобы дать здесь некоторое языковое равновесие, я предлагаю 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.

Другие вопросы по тегам