Добрый день дорогие читатели. Сегодня я начал экспериментировать с созданием бота для 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. Спасибо за внимание.
Хорошая статья, почему сейчас новые статьи не появляются? Я правда пока и существующие не все прочитал, но изложение очень толковое, поэтому ждём нового.
Спасибо большое. Пока времени особо нету, но новые статьи обязательно будут!
Свяжитесь со мной пожалуйста, хочу предложить работу @ ok163, спасибо заранее
Спасибо, а такой вопрос — есть ли нечто похожее для клиента а не для бота? т.е. я не хочу создавать бота, а подключаться к телеграм под своей учёткой и собирать новые сообщения…
Что то не чего не получается
unit1.pas(35,14) Fatal: Syntax error, «=» expected but «:=» found
Ругается на
const BaseUrl:=’https://api.telegram.org/bot’;
API:=’296279905:AAGIwmTIj3cLE0crvivWRNY8IDkA6I-xf5Q’;
Алексей, покажите более развернутый код.
const
BaseUrl = ‘https://api.telegram.org/bot’;
API = ‘296279905:AAGIwmTIj3cLE0crvivWRNY8IDkA6I-xf5Q’;
libeay32.dll и ssleay32.dll не грузятся на 64 битной ОС Windows
всё, нашел под 64 бит
Спасибо, что поделились решением…
Хм. У меня в ответ пришло
{«ok»:false,»error_code»:404,»description»:»Not Found»} Это совсем плохо?