Вызов Telegram API для создания бота для чтения каналов

Я видел, что новый API для ботов позволяет создавать настраиваемых ботов, я видел некоторые источники, такие как это и это. Я также читал о @fatherbot, который касается регистрации ботов, я также искал несколько примеров о ботах телеграмм, таких как как этот, я знаю, как писать коды в php и python, но не могу понять, как вызывать API методы и с чего начать. Кто-нибудь знает, как начать?


person Majid Hojati    schedule 25.06.2015    source источник
comment
Почему бы вам не использовать службу создания ботов @TbotifyBot или tbotify.com? Он имеет встроенный считыватель каналов, готовый к использованию пользователем.   -  person Ghasrfakhri    schedule 09.08.2015


Ответы (7)


Вы можете просто использовать мою новую библиотеку для API бота телеграммы! https://github.com/tekook/TelegramLibrary

Он включает в себя все функции нового API и представляет собой простую в использовании библиотеку, основанную на событиях!

Радоваться, веселиться!

person JTE    schedule 30.06.2015
comment
humm, спасибо ,,Кажется, это отличный момент для меня, чтобы начать - person Majid Hojati; 01.07.2015

Вы можете использовать этот базовый пример, чтобы начать работу. Я бы предложил добавить немного больше полировки, используя как 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']);
person Chris Brand    schedule 27.06.2015
comment
Wowww...Спасибо за отличный пример ..спасибо - person Majid Hojati; 01.07.2015

Согласно Официальному 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
  • Если есть новые сообщения

    • Parse message
    • Отправить сообщение с помощью HTTP GET/POST
    • Спать несколько секунд

Использовать веб-перехватчик

При использовании WebHook (и хорошо настроенном) новое сообщение вашему боту вызовет HTTP-запрос POST с сервера телеграммы на настроенный вами URL-адрес на вашем собственном сервере, проанализированный вашим PHP-скриптом.

В вашем PHP-скрипте проанализируйте новое сообщение, полученное от HTTP POST, и отправьте сообщение обратно с помощью HTTP POST на сервер телеграммы.


Таким образом, разница существует только при получении сообщений из телеграммы, все ответы, отправляемые в телеграмму, отправляются через HTTP GET/POST, подробности в разделе Выполнение запросов в официальном API.

Некоторые люди разозлились на неофициальный API PHP на github:

person Fwolf    schedule 27.06.2015
comment
Большое спасибо за ваш ответ. Кажется, я могу использовать метод WebHook, потому что я уже работал с HTTP POST/GET, но есть ли какой-нибудь пример его реальной работы? Большое спасибо. - person Majid Hojati; 27.06.2015
comment
@MajidHojati Репозитории API на github уже содержат некоторый пример кода, и они все еще растут. - person Fwolf; 29.06.2015
comment
большое вам спасибо за вашу помощь - person Majid Hojati; 01.07.2015

Я предлагаю новичкам начать так:

  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. Понимание этого поможет вам использовать всю его силу.

Удачи.

person Nick Lee    schedule 19.10.2015

о API getUpdates и бесконечном цикле, сервер php не может позволить выполнить код более 30 секунд. , поэтому бесконечный цикл работает неправильно.

person Hossein Sahhaf    schedule 02.07.2015

Я также новичок в Telegram API, но вы можете начать с доступа к этому URL-адресу, в котором вы должны заменить (токен) своим собственным токеном, сгенерированным при покупке BotFather:

https://api.telegram.org/bot(token)/METHOD_NAME

Например, если вы хотите начать обрабатывать запросы, отправленные вашему боту вашим PHP-скриптом, вы должны вызвать это:

https://api.telegram.org/bot(токен)/setWebhook?url=https://yourdomain.com/path_to_your_script/

Обратите внимание, что вы ДОЛЖНЫ иметь веб-сайт с поддержкой SSL, чтобы начать использовать API Telegram.

person Vahid Mafi    schedule 25.06.2015
comment
Большое спасибо, дорогой Вахид, есть ли какой-нибудь пример php-файлов для меня, чтобы узнать больше? Я имею в виду, что я могу вызывать методы только по адресам, а затем публиковать их в моем php-файле? Как вернуть результат? - person Majid Hojati; 27.06.2015

В качестве ответа на то, что скрипт не может работать более 30 секунд:

использовать set_time_limit (0); чтобы это длилось вечно. Однако имейте в виду, что любая бесконечная петля времени несколько опасна; побочные эффекты, такие как перегрузка процессора или утечка памяти, съедят ваш сервер. Вот почему многие интернет-провайдеры запрещают этот параметр.

person HappyMe    schedule 17.08.2015