Russian | English
tnt-tg-bot - это библиотека, написанная на Lua для платформы Tarantool, которая предоставляет интерфейсы для работы с Telegram Bot API.
- Простата и ясность интерфейсов
- Асинхронная обработка запросов
- Встроенная поддержка работы с платежами в Telegram Stars
- Встроенные методы для обработки команд, в том числе callback
- Вы сами даёте названия событиям, из коробки у вас только -
bot.events.onGetUpdate(ctx) - Простая работа с WebApp
- Поддержка LDoc
- Большое колличество примеров
- Niko Bot - Бот с мини играми, множеством команд, питомцами и модерацией групп
- Talking Hooligan - Популярный бот для чатов, присылает смешные и глупые сообщения
- Установите
git,curl,lua 5.1иluarocks. - (опционально) если нужна работа с WebApp:
Потребуется установить rock пакетluaossl, для него в вашем дистрибутиве -
установите заголовочные файлы дляlua 5.1иopenssl. - Установите tarantool
- Выполните скрипт автоматической установки необходимых пакетов
bash tnt-tg-bot.pre-build.sh- В случае проблем, перейти к ручной установки.
Note
Для успешной сборки luaossl - биндинга к OpenSSL, потребуются заголовочные файлы OpenSSL и Lua 5.1.
В Ubuntu можно установить, выполнив sudo apt install libssl-dev liblua5.1-0-dev.
luaossl нужен для работы модуля bot/libs/parseInitData.lua, модуль нужен для обработки данных веб Mini App.
https://core.telegram.org/bots/webapps#validating-data-received-via-the-mini-app
- Установите
git,curl,lua 5.1иluarocks. - Установите tarantool
- (опционально) если нужна работа с WebApp:
Потребуется установить rock пакетluaossl, для него в вашем дистрибутиве -
установите заголовочные файлы дляlua 5.1иopenssl. - Установка необходимых пакетов с помощью
luarocks
- HTTP клиент/сервер (обязательно)
luarocks install --local --tree=$PWD/.rocks --server=https://rocks.tarantool.org/ http - Multipart Post обработчик (обязательно)
luarocks install --local --tree=$PWD/.rocks --lua-version 5.1 lua-multipart-post 1.0-0 - Биндинг к openssl (опционально)
luarocks install --local --tree=$PWD/.rocks --lua-version 5.1 luaossl
- Observer pattern - Пример показывает реализацию паттерна наблюдателя, по факту - диспетчеризация событий. Так же пример хорошо структурирован, подходит что бы взять за основу
- Mini Shop - Пример минимального "магазина", показано как можно структурировать проект
- Star payments - Пример обработки платежей в звездах (покупка, возврат)
examples/echo-bot-webhook.lua- Эхо-бот через WebHookexamples/echo-bot.lua- Эхо-бот (старый API)examples/echo-bot-2.lua- Эхо-бот (новый API)examples/ping-pong.lua- Реакция на команду /pingexamples/send-animation.lua- Отправка gif по команде /get_animationexamples/send-document.lua- Отправка документа по команде /get_documentexamples/send-image.lua- Отправка изображения по команде /get_imageexamples/send-image-2.lua- Упрощенный пример отправки изображения черезbot.sendImageexamples/send-media-group.lua- Отправка группы медиа-файловexamples/simple-callback.lua- Пример обработки callback - /send_callback (старый API)examples/simple-callback-2.lua- Упрощенный пример обработки callback команд (новый API)examples/simple-process-commands.lua- Пример простого процессинга командexamples/routes-example/init.lua- Пример работы ручек в боте
Note
Рекомендуется использовать только новый API
BOT_TOKEN - токен вашего бота
BOT_TOKEN="1348551682:AAFK3iZwBqEHwSrPKyi-hKyAtRgUwXrTiWW" tarantool examples/echo-bot.luabot/init.lua- Точка входаbot/libs- Вспомогательные библиотекиbot/enums- Инамыbot/classes- Классы для объектов телеграммаbot/middlewares- Посредникиbot/processes- Процессы. Пример processCommand - процессинг командbot/types- Модели/валидаторы для типов телеграммаbot/ext- Встроенные экстеншины
| Метод | Описание | Пример использования |
|---|---|---|
| bot:cfg | Инициализация настроек | bot:cfg { token = "123468:foobarBAZ" } |
| bot.call | Выполнение запроса к Telegram API | bot.call('sendMessage', {chat_id = 123, text = 'Привет!'}) |
| bot.events | Таблица с пользовательскими событиями | function bot.events.onPoll(ctx) ... end |
| bot.events.onGetUpdate | Событие обработки обновлений от Telegram | function bot.events.onGetUpdate(ctx) ... end |
| bot.sendImage | Упрощенная отправка картинки | examples/send-image-2.lua |
| bot.Command | Минимальный обработчик команд | bot.Command(ctx) |
| bot.CallbackCommand | Минимальный обработчик callback команд | bot.CallbackCommand(ctx) |
| bot:startWebHook | Запуск бота на удаленном сервере | Пример examples/echo-bot-webhook.lua |
| bot:startLongPolling | Запуск бота в режиме long polling | Любой пример из examples/* |
| bot:debugRoutes | Отладка ручек в режиме longPolling |
По наличию аргументов см. ldoc - doc/index.html
Через форк репозитория и открытия Pull Request