Telegram Bot API. Часть 1

logoДобрый день дорогие читатели. Сегодня я начал экспериментировать с созданием бота для Telegram на Lazarus. Ниже я буду описывать процесс создания бота от А до Я.

Прежде чем начать создавать бота, нужно почитать немного о таких вещах как формат данных JSON, как его парситьну и по хорошему документацию Telegram API Bot

Лично Я для облегчения своей работы использовал открытую библиотеку Superobject, которая легко позволяет парсить JSON

1.Скачиваем с помощью SVN http://superobject.googlecode.com/svn/trunk/ или в виде архива superobject

Нам интересны следующие файлы:

  • Библиотека — superobject.pas
  • Файл справки — readme.html

Данную библиотеку бросаем в папку с проектом и подключаем в Uses.

2. Для работы с https нам так же потребуется 2 библиотеки: libeay32.dll и ssleay32.dll — Скачатьих тоже бросаем в папку с проектом.

3. А для отправки запросов http нам понадобится библиотека Indy, как ее установить читайте здесь: http://www.freepascal.ru/article/lazarus/20100812185950/

Теперь для начала нам нужно создать бота в чате с @BotFather и получить уникальный Token, выглядит он примерно так: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Через любое доступное приложение Telegram, пишет в личку @BotFather следующие команды:

/newbot

Вводим название бота

Если получаем в ответ «Good. Now let’s choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.» значит имя свободно, теперь требуется создать имя бота по которому мы сможем к нему обращаться @имябота. Обязательно нужно чтобы имя вашего бота заканчивалось на bot или _bot

Подобрав имя вы должны получить следующий ответ:

«Done! Congratulations on your new bot. You will find it at telegram.me/имябота. You can now add a description, about section and profile picture for your bot, see /help for a list of commands.

Use this token to access the HTTP API:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

For a description of the Bot API, see this page: https://core.telegram.org/bots/api«

Поздравляю! Пол дела сделано. И последние что мы сделаем в первой статье, это проверим работу нашего токена. Для начала просто в браузере введите: https://api.telegram.org/botВашТокен/GetMe (Например: https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/GetMe)

В ответ мы должны получить:

{«ok»:true,»result»:{«id»:…..,»first_name»:»Имя»,»username»:»Имя пользователя»}}

Средствами Lazarus:

const BaseUrl:='https://api.telegram.org/bot'; 
      API:='ВашТокен'; 

procedure TFormMain.FormCreate(Sender: TObject); 
var
   JsObject: ISuperObject;
begin
  try
     THttp:=TIdHTTP.Create;
     SSL:=TIdSSLIOHandlerSocketOpenSSL.Create;
     THttp.IOHandler:=SSL; 
     JsObject:=SO(THTTP.Get(BaseUrl+API+'/GetMe'));
  if JsObject.B['ok']=True then //Ауторизация успешна
     ShowMessage('Бот успешно стартовал.');
  finally
     THttp.Free;
     SSL.Free;
  end;
end;

Если при запуске программы мы получили ответ об успешном старте бота, значит все получилось.

Для начала этого достаточно. В следующий раз расскажу как отсылать, и принимать сообщения с помощью long polling. Спасибо за внимание.

Telegram Bot API. Часть 2

Telegram Bot API. Часть 1 обновлено: 22 апреля, 2016 автором: Oleg E.
Share

11 комментариев “Telegram Bot API. Часть 1

  1. Хорошая статья, почему сейчас новые статьи не появляются? Я правда пока и существующие не все прочитал, но изложение очень толковое, поэтому ждём нового.

    • Спасибо большое. Пока времени особо нету, но новые статьи обязательно будут! smile

      • Свяжитесь со мной пожалуйста, хочу предложить работу @ ok163, спасибо заранее

  2. Спасибо, а такой вопрос — есть ли нечто похожее для клиента а не для бота? т.е. я не хочу создавать бота, а подключаться к телеграм под своей учёткой и собирать новые сообщения…

  3. Что то не чего не получается
    unit1.pas(35,14) Fatal: Syntax error, «=» expected but «:=» found
    Ругается на
    const BaseUrl:=’https://api.telegram.org/bot’;
    API:=’296279905:AAGIwmTIj3cLE0crvivWRNY8IDkA6I-xf5Q’;

  4. Хм. У меня в ответ пришло
    {«ok»:false,»error_code»:404,»description»:»Not Found»} Это совсем плохо?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *