Catalog · How the catalog works
TgBot
Telegram Bot API для Delphi: весь API 10.3, компонент TTelegramBot, long polling и webhook. Win32, Win64, Linux64, Android
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
TgBot — Telegram Bot API для Delphi
Библиотека и невизуальный компонент для создания Telegram-ботов на Delphi. Весь Bot API, ничего лишнего в зависимостях, подробная документация на русском.
Полная документация → · История изменений · Демо-проекты
Возможности
- Весь Telegram Bot API 10.3. Типы и методы сгенерированы по официальной спецификации генератором
Tools/TgBotGen— обновление API не требует ручной правки. TTgApi— клиент Bot API: каждый метод в трёх вариантах — обычный,Try*(без исключений) и*Async. Отправка файлов и альбомов, скачивание, обработка лимитов (429), отмена запросов.TTgBot— бот в коде: long polling или webhook, маршрутизатор команд и кнопок, клавиатуры, меню команд, состояние диалогов, многопоточная обработка.TTelegramBot— компонент для формы: Object Inspector, коллекция команд, обычные события.TTgWebhookServer— встроенный HTTP-сервер для webhook.- Только RTL. Ядро использует
System.Net.HttpClient,System.JSON,System.Threading. Indy нужен лишь встроенному webhook-серверу. HTTP-клиент заменяем: свой транспорт — наследникTTgTransportBaseс двумя методами (подробнее). - Потоки. Обновления одного чата обрабатываются по порядку, разных чатов — параллельно (
MaxParallel), очередь ограничена (QueueCapacity). Внутри —TCriticalSectionиTEvent, безTMonitor.Wait/Pulse(подробнее). - Локализация. Тексты исключений библиотеки — на английском по умолчанию, русский встроен
(
TgSetLanguage(TTgLanguage.Ru)), другие языки — перевод gettext.poпо шаблонуLocale/tgbot.pot(подробнее).
Требования
- Delphi 10.4 Sydney и новее (проверено на 10.4 и 12).
- Win32, Win64, Linux64, Android (32 и 64 бит). Webhook — только Win32, Win64 и Linux64. iOS не поддерживается.
Установка
Без установки пакетов — добавьте папку Source в Search Path проекта и напишите uses TgBot;.
С компонентами на палитре — запустите Install\Install.cmd: он соберёт пакеты, зарегистрирует их в IDE и
пропишет пути. Удаление — Install\Uninstall.cmd. Ручная установка описана в
документации.
Быстрый старт
Получите токен у @BotFather и положите его в переменную окружения TGBOT_TOKEN —
так он не попадёт в исходники.
program HelloBot;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
TgBot;
var
LBot: TTgBot;
begin
LBot := TTgBot.Create(GetEnvironmentVariable('TGBOT_TOKEN'));
try
LBot.Command('start', 'Начать',
procedure(ACtx: ITgContext)
begin
ACtx.Reply('Привет! Напишите что-нибудь.');
end);
LBot.OnMessage :=
procedure(ACtx: ITgContext)
begin
if ACtx.Text <> '' then
ACtx.Reply('Вы написали: ' + ACtx.Text);
end;
LBot.OnError :=
procedure(AError: Exception; ACtx: ITgContext)
begin
Writeln('Ошибка: ', AError.Message);
end;
if not LBot.Run then // работает до Ctrl+C
ExitCode := 1;
finally
LBot.Free;
end;
end.Бот на форме: положите TTelegramBot с вкладки Telegram, добавьте команды в свойстве Commands,
назначьте OnMessage и поставьте Active := True. События приходят в главном потоке — с VCL можно работать
напрямую.
Демо-проекты
| Папка | Что показывает |
|---|---|
Demos/01_Smoke |
минимальная консольная проверка |
Demos/02_EchoBot |
консольный бот: команды, инлайн-кнопки, листание страниц, состояние диалога |
Demos/03_VclBot |
VCL-форма с компонентом TTelegramBot |
Demos/04_WebhookBot |
приём обновлений через webhook |
Demos/05_CustomTransport |
свой транспорт: наследник TTgTransportBase с журналом запросов, без TgBot.Http |
Что в репозитории
| Папка | Содержимое |
|---|---|
Source |
исходники библиотеки; Source/Generated — сгенерированная часть API |
Packages |
пакеты TgBotRT, TgBotIndyRT, TgBotDT |
Install |
установка и удаление в IDE |
Demos |
примеры |
Tests |
125 тестов, работают без сети и без токена |
Tools |
генератор API по спецификации и сборка дистрибутива |
Locale |
каталоги перевода: tgbot.pot (шаблон для переводчиков) и ru.po (русский); генерируются Tools/Locale/MakePot.ps1 |
Известные ограничения
- Linux64 проверен компиляцией; запуск на Linux не проверялся.
- Android заявлен в пакете
TgBotRT, на устройстве не проверялся. - Webhook проверен локально, тестами и демо; с настоящим сервером Telegram не проверялся.
Лицензия
MIT — берите и используйте, в том числе в коммерческих проектах. Нужно только сохранять строку об авторе и текст лицензии.

