Как написать бота в Телеграмме delphi

Ради интереса решил написать телеграмм бота на Delphi.
Я не буду описывать как и что каждая команда выполняет, у меня код довольно легкий для чтения состоящий из простых команд + там есть немного комментариев.
Просто выложу тут исходники и дам пару ссылок где можно почерпнуть знания.
Тут идет описание telegramm бота на Delphi, но в отличии от моего примера, там используются для HTTP запросов Synapse, а для парсинга JSON — superobject. Я для этих целей использую уже идущие с Delphi пакеты indy и JSON.

Как работать с JSON — https://yandex.ru/turbo/webdelphi.ru/s/2019/03/rabota-s-json-v-delphi-10-3-rio/ описано очень доходчиво.
Для работы как с Synapse, так и с indy понадобится библиотеки Open SSL. В архиве с моим примером они уже лежат там, но на всякий случай оставлю ссылку на разные версии библиотек https://www.indyproject.org/download/ssl/
API Telegramm — https://core.telegram.org/bots/api
Так же в моем примере представлена только получение и отправка сообщения. Пример отправки и получения фотографии, музыки, видео и прочего — нету.

Как создать умный бот в telegram — OpenAI (GPT-3) в телеграмм

Запись опубликована 03.12.2020 автором fil в рубрике Программирование с метками Bot, Delphi, Telegramm.

Источник: alladmin.ru

Как написать бота в телеграмме delphi

Бродил тут по интернетам в поисках новых блогов о программирование на delphi и натолкнулся на блог о программирование на lazarus, там была пара статей о том как начать делать бота для Telegram. Эта тема меня раньше как то не интересовала, но тут решил попробовать написать хотя бы маленького бота что бы разобраться с принципами работы. Побродив по интернету в поисках наработок по данному вопросу, я ничего интересного не нашел, в основном это были библиотеки для работы с telegram при помощи C#, Python, PHP для delphi нашел только один какой то пробный проект на github. Поэтому решил попробовать сделать все сам с нуля так сказать.

Еще по теме:  Как найти облачное хранилище Телеграмм на Андроид

Telegram — бесплатный кроссплатформенный мессенджер для смартфонов и других устройств, позволяющий обмениваться текстовыми сообщениями и медиафайлами различных форматов. Создан Павлом Дуровым не за долго до ухода из вконтакта. В феврале 2016 года один из создателей Telegram Павел Дуров заявил, что мессенджером пользуются уже более 100 миллионов человек, при этом сервис доставляет около 15 миллиардов сообщений ежедневно.

Что бы начать создавать бота необходимо его зарегистрировать в системе Telegram.

Для этого необходимо установить на телефон само приложение (либо воспользоваться веб версией клиента ) и добавить в контакты бота BotFather через чат с ним можно управлять своими ботами.

Сначала вводится команда /newbot Затем система предложит ввести имя для бота, если имя систему устроит она предложит указать пользовательское имя для бота с обязательным окончанием имени на bot или _bot, если все продет успешно то система вам выдать уникальный идентификатор бота, который затем можно будет использовать для работы. Он примерно такого вида 12345678:AAHOjf*****ROYb03utz*********. Более подробно можно почитать тут.

Как создать телеграм бота с ChatGPT | ChatGPT в телеграмме

telephon screen

Общение с системой происходит посредством HTTPS запросов GET и POST, в качестве параметров запроса можно передавать

  • URL query string
  • application/x-www-form-urlencoded
  • application/json (кроме загрузки файлов)
  • multipart/form-data (для загрузки файлов)

Если запрос выполнен удачно то в ответ система вернет json объект

Где поле ok будет равно true.

Для работы с запросами я решил использовать набор бесплатных компонентов Synapse, а для парсинга JSON объектов использовать superobject. Поскольку работа с сервисом осуществляется посредством протокола https, то также потребуются библиотеки OpenSSL, собрать из исходников можно тут, я же просто вбил название библиотеки в поиск windows и нашел на компе несколько штук из которых выбрал наиболее последнюю версию. Выкладываю для скачивания. ссылка

Еще по теме:  Телеграмм не видит контакт по номеру телефона

Поскольку раньше мне не доводилось работать с synapse то пришлось обратиться к интернету, там нашлась подборка статей по работе с данной библиотекой.

После скачивания всего и вся я создал простой проект приложения в среде delphi.

В раздел uses добавил httpsend, ssl_openssl, superobject и начал экспериментировать.

Поскольку для работы с сервисом используется шифрованное соединение то для начала создается компонент httpsend с использованием шифрования.

var http: THTTPSend; begin http := THTTPSend.Create; Http.Sock.CreateWithSSL(TSSLOpenSSL); Http.Sock.SSLDoConnect;

Затем данные объект можно использовать для работы с запросами.

В качестве первого запроса я решил получить информацию о боте.

Выполняется это посредством запроса.

https://api.telegram.org/bot/getMe

В коде это выглядело так

var s: string; jo: ISuperObject; list: TStringList; begin s := ‘https://api.telegram.org/bot’ + bot_key + ‘/GetMe’; if http.HTTPMethod(‘GET’, s) then begin list := TStringList.Create; list.LoadFromStream(http.Document); jo := SO(list.Text); if jo.B[‘ok’] = true then begin Label1.Caption := jo.S[‘result.id’]; Label2.Caption := jo.S[‘result.first_name’]; Label3.Caption := jo.S[‘result.username’]; end; end; list.Free; end;

В качестве результата сервис возвращает JSON обьект, который распарсивается при помощи объекта ISuperObject.

Затем попробовал отправить сообщение, но для его отправки необходимо сначала написать что то боту с телефона или через веб клиент иначе не получить идентификатор чата с которым бот будет общаться. Для этого используется запрос вида

https://api.telegram.org/bot/getUpdates

В запрос передаются параметры

chat_id Идентификатор первого сообщения с которого необходимо получать данные, должен быть на единицу больше чем последнее полученное сообщение.
offsetlimit Ограничитель на количество возвращаемых обновлений, по умолчанию равен 100
timeout Таймаут в секундах для длительных запросов

Делается это так примерно. Поскольку у меня бот тестовый то я особо с кодом не заморачивался.

var s: string; list: TStringList; jo: ISuperObject; tod: TSuperArray; i: Integer; begin http.Headers.Clear; http.Document.Clear; s := ‘https://api.telegram.org/bot’ + bot_key + ‘/getUpdates?offset=’ + last_id; if http.HTTPMethod(‘GET’, s) then begin list := TStringList.Create; list.LoadFromStream(http.Document); jo := SO(list.Text); if jo.B[‘ok’] = True then begin tod := jo[‘result’].AsArray; for I := 0 to tod.Length — 1 do begin last_id := tod[i].S[‘update_id’]; Memo1.Lines.Add(‘kod: ‘ + tod[i].S[‘update_id’] + ‘ ‘ + tod[i].S[‘message.from.first_name’] + ‘ ‘ + tod[i].S[‘message.from.last_name’] + ‘ ‘ + tod[i].S[‘message.text’]); with ListView1.Items.Add do begin Caption := tod[i].S[‘message.from.id’]; SubItems.Add(tod[i].S[‘message.from.first_name’] + ‘ ‘ + tod[i].S[‘message.from.last_name’]); end; end; end; end; list.Free; end;

Еще по теме:  Как отключить активные сеансы в Телеграмме

Telegram Telega π — Библиотека для работы с Telegram Bot API в Delphi

rareMax

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

Похожий контент

NetHTTPClient Telegram

Fire-Monkey в Telegram

  • Telegram
  • Fire-Monkey
  • (и ещё 1 )
  • 4 ответа
  • 2 286 просмотров
  • Дмитрий Ш.
  • 10 ноября, 2016

Как добиться эффекта приложения как телеграм?

От Axbor, 24 декабря, 2015

Последние посетители 0 пользователей онлайн

  • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Ответов 64
  • Создана 7 г
  • Последний ответ 2 май

Топ авторов темы

Популярные дни

  • 14 окт 2018 20 постов
  • 23 окт 2018 13 постов
  • 15 окт 2018 9 постов
  • 24 окт 2018 3 постов

Популярные посты

rareMax

rareMax

rareMax

rareMax

В начале пару новостей: Репозиторий клонируется также на ГитХаб. Можно устанавливать с помощью Delphinus’a Бот калькулятор для Telegram. А сейчас мы напишем своего бота, которы

kami

16 октября, 2018

У меня большая просьба: вместо кучи маленьких сообщений, которые вы пишете буквально одно за другим, составьте одно, в которое напишите всё то, что хотели сказать. Это не чат, где «кто в онлайне

Источник: fire-monkey.ru

Рейтинг
( Пока оценок нет )
Загрузка ...