Отправляем запросы в Telegram Bot API

Отправляем запросы в Telegram Bot API

Latand

Привет! В этой небольшой статье я покажу несколько примеров по тому, как же отправлять запросы к Бот АПИ. Если вам так и не удалось разобраться в том, как же формирются запросы, надеюсь эта статья вам поможет!

Статья написана предельно простым языком, для самых маленьких.

Для чего это нужно?

Если вы собираетесь писать ботов, вам ОБЯЗАТЕЛЬНО (!!!) нужно уметь читать документацию. Правила такие:

  1. Если вы не понимаете, что вообще можно сделать с ботом и как - смотрите в документацию, там всё расписано.
  2. Если вы не понимаете, как отправить сообщение ботом - смотрите в документацию.
  3. Если вы не понимаете, как отправить ботом стикер - смотрите в документацию.
  4. Если вы не понимаете, как отправить опрос ботом - смотрите в документацию.
  5. Если вы не понимаете, как отправить альбом с фотографиями ботом - смотрите в документацию.

Изучать мы будем официальную документацию на сайте core.telegram.org

Формируем запрос

Из чего состоит запрос

Несмотря на то, что телеграм допускает разные способы отправки запросов (GET, POST), тут я покажу сам принцип взаимодействия, с помощью GET-запросов. Это проще, потому что можно прямо в браузере, в адресной строке все вписать и получить ответ!

Документация

Чтобы можно было использовать бота, вам для начала надо получить его TOKEN от @botfather (это как логин и пароль, только в одной строчке). Поэтому, надеюсь вы уже бота создали и получили его.

Структура запроса

https://api.telegram.org/bot<token>/METHOD_NAME?parameter=value&parameter2=value2

Запрос состоит из нескольких частей:

  1. https://api.telegram.org - обязательная и неизменная часть запроса. Это адрес сервера bot API, который будет принимать наши запросы.
  2. /bot<token> - Слеш (палочка), слово bot, потом токен бота. Это тоже обязательная часть запроса, и она меняться не будет, если только вы не поменяете токен.
  3. /METHOD_NAME - Слеш, и название метода, который вы хотите сделать. Тоже обязательная часть запроса, но она может меняться! Метод - это как действие, которое нужно выполнить. Все возможные действия описаны в документации по этой ссылке.
  4. ?parameter=value - НЕобязательная часть запроса: вопросительный знак (который отделяет метод и говорит, что теперь будут передаваться параметры), parameter - название параметра, value - значение, которое вы хотите передать.
  5. &parameter2=value2 - НЕобязательная часть запроса: & (амперсант) - знак, отделяющий одни параметры от других. Параметры передаются так же.

Параметры можно найти в первой колонке описания каждого метода:

Примеры запросов

  • https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
    Запрос, который выгрузит информацию по боту. Используем метод getMe, и не передаем никаких параметров (их просто нет)
  • https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew1/sendMessage?chat_id=123456&text=Привет, как дела?
    Запрос, который отправит сообщение пользователю с chat_id = 123456 с текстом "Привет, как дела?". Используем метод sendMessage. Как видно из примера, значения параметров прописываем сразу после знака равно, без всяких кавычек и пробелов.



Инфоримация по методу

Как видно, есть и другие параметры, которые можно передать. Но мы обращаем внимание на обязательные (Required = Yes) параметры! Остальные читаем и думаем, нужны ли они нам. В данном случае chat_id и text - обязательные, поэтому мы их и передаем.

Например, параметр reply_markup добавит в сообщении бота клавиатуру с кнопками. Но тут уже нужно будет передавать не просто текстом, а специальным объектом. И Телеграм нам говорит какой тип объекта нужно передать. Про типы я расскажу чуть позже.

  • https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew1/sendPhoto?chat_id=123456&caption=какой котик!&photo=https://images.indianexpress.com/2020/03/cat.jpg&reply_markup={"inline_keyboard":[[{"text":"Лайкни котика","callback_data":"like"}]]}
    Запрос, который отправит фотографию пользователю с chat_id = 123456 с подписью "какой котик!". Фотографию мы передали с помощью ссылки на фотографию из интернета. К фотографии прикрепляем инлнайн клавиатуру, с кнопкой "Лайкни котика", а в качестве callback_data мы передаем текст "like". Используем метод sendPhoto.
  • https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew1/sendDice?chat_id=123456&emoji=🎲
    Запрос, который отправит дайс (кубики) пользователю с chat_id = 123456. Используем метод sendDice.
  • https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew1/sendChatAction?chat_id=123456&action=typing
    Запрос, который отправит пользователю анимацию, что бот "печатает..". Используем метод sendChatAction.

Надеюсь, в целом немного прояснилось.

Попробуйте теперь составить запросы сами:

  1. Отправить сообщение пользователю с chat_id=-10012345432, с текстом "Hello, Universe!"
  2. Отправить dice с другим эмоджи и прикрепить к нему клавиатуру с кнопкой, на которой будет какой-то самйлик.
  3. Отправить локацию (sendLocation) этому же пользователю с latitude=44.419433, longitude=38.205164


Что такое типы?

Все параметры, которые будут передаваться в бот апи, имеют какой-то тип!

Вот где эти типы можно глянуть

Тип параметра - правило по которому телеграм будет принимать параметры. Если вы передадите параметр неверного типа - будет ошибка.

  • String - обычный текст
  • Integer - целое число
  • Boolean - значение истина или ложь (true/false)
  • Array of MessageEntity - список другого типа (MessageEntity), и надо глянуть из чего состоит в свою очередь он.
  • InlineKeyboardMarkup - JSON объект инлайн клавиатуры, погружаемся туда и смотрим, как его собрать.

Парочка примеров, как они могут пойти в запрос

  • text=abcdEFGHig12345
  • chat_id=1234321
  • chat_id=@channelusername
  • parse_mode=HTML
  • disable_notification=false
  • reply_markup={"inline_keyboard":[[{"text":"Текст кнопки","callback_data":"1234asdf"}]]}

Report Page