Class Bot

Tables

.ErrCtx Таблица, которая передается в bot.handle_error(err_ctx).

Methods

bot:reply (chat_id) Возвращает объект-конструктор запроса к Telegram API.
bot:call_method (method, parameters[, http_struct_overrides]) Выполняет http запрос к Telegram API
bot:handle_error (err_ctx) Обработка ошибки запроса к Telegram API.
bot:handle_middleware_error (err) Обработка Lua ошибок внутри хендлеров.
bot:handle_update (UPD) Выполняется, когда бот получает update.
bot:on (fFilter, handler, uid) Добавляет в бот хендлер на указанных условиях.

Basic Handlers

bot:update (handler, uid) Перехватывает все апдейты.
bot:command (name, handler) Перехватывает команды бота
bot:callback (handler, uid) Нажата inline кнопка
bot:text (handler, uid) Пришло текстовое сообщение.
bot:message (handler, uid) Команды, гифки...


Tables

.ErrCtx
Таблица, которая передается в bot.handle_error(err_ctx).

Fields:

  • retry func , при вызове которой запрос повторится с теми же параметрами (полезно при retry-after ошибках)
  • method string API метод, который бот пытался выполнить при запросе
  • parameters table таблица параметров
  • try int номер попытки выполнения запроса
  • error table ошибка в чистом виде, которая получена от Telegram после выполнения запроса

Methods

bot:reply (chat_id)
Возвращает объект-конструктор запроса к Telegram API. Прикрепляется к каждому ctx объекту.

Parameters:

  • chat_id int ID пользователя, чата, канала, для которого будет выполняться API запрос

Returns:

    Reply Перейдите по ссылке, чтобы посмотреть примеры использования

Usage:

    bot.reply(123456).text("Hello")
bot:call_method (method, parameters[, http_struct_overrides])
Выполняет http запрос к Telegram API

Parameters:

  • method string название API метода. Например, sendMessage
  • parameters table ключ-значение таблица с параметрами запроса. Например, {chat_id = 12345, text = "Hello"}
  • http_struct_overrides table ggram использует функцию HTTP. Вы можете перезаписать любой параметр, который перечислен тут: https://wiki.facepunch.com/gmod/Structures/HTTPRequest (optional)

Returns:

    Promise deferred object

Usage:

    bot.call_method("setWebhook", {url = "https://example.com"})
bot:handle_error (err_ctx)
Обработка ошибки запроса к Telegram API. Функция для оверрайда. Вызывается, когда Telegram вернул ошибку после запроса. По умолчанию принтит все данные об ошибке в консоль

Parameters:

  • err_ctx .ErrCtx параметр отличается от обычного ctx

Usage:

    local defer = require("deferred")
    function bot.handle_error(ctx)
    	local err = ctx.error
    	if err.extra and err.extra.http_error then
    		return defer.sleep(5):next(ctx.retry)
    	elseif err.error_code == 429 then
    		return defer.sleep(err.parameters.retry_after):next(ctx.retry)
    	end
    	error(err)
    end
bot:handle_middleware_error (err)
Обработка Lua ошибок внутри хендлеров. Функция для оверрайда. Вызывается, когда pcall(handler) получил ошибку. Ошибка в обработке команды/callback_query и тд.

Parameters:

  • err any Результат неудачного выполнения pcall на хендлере

Usage:

    -- Отправка данных об ошибке в Telegram через отдельный бот
    local report_bot = require("ggram")("1234:token")
    local BOT_MT = require("ggram.bot")
    function BOT_MT:handle_middleware_error(err)
    	local errtrace = "@" .. self.username .. " error: " .. debug.traceback(err)
    	report_bot.reply(123456).text(errtrace) -- chat_id
    	print("[ggram] " .. errtrace)
    end
bot:handle_update (UPD)
Выполняется, когда бот получает update. Можно вызывать самостоятельно, чтобы организовать вебхуки или свою реализацию поллинга. Внутри получает подходящие под update хендлеры и передает им update объект, обернутый в Context (ctx).

Parameters:

  • UPD table update объект от Telegram
bot:on (fFilter, handler, uid)
Добавляет в бот хендлер на указанных условиях. На основе этой функции созданы все хендлеры: bot.command, bot.callback, bot.update и т.д.

Parameters:

  • fFilter func сюда передается Context (ctx). Если вернуть true, то выполнится handler(ctx)
  • handler func выполнятся, если fFilter вернул true
  • uid string уникальный идентификатор хендлера. Не должен повторяться для одного бота

Returns:

    Bot self

Usage:

    -- Вот так реализован bot.command хендлер:
    local BOT_MT = require("ggram.bot")
    function BOT_MT:command(name, handler)
    	return self.on(function(ctx)
    		return ctx.command == name
    	end, handler, "command_" .. name)
    end

Basic Handlers

Основные хендлеры, созданы через bot:on
bot:update (handler, uid)
Перехватывает все апдейты. Хорошее место, чтобы добавлять общие middlewares

Parameters:

  • handler func колбек функция, которая выполнится при получении нового update от telegram
  • uid string уникальный идентификатор хендлера

Returns:

    Bot self

See also:

bot:command (name, handler)
Перехватывает команды бота

Parameters:

  • name string команда, при получении которой выполнять handler
  • handler func колбек функция, которая выполнится при получении указанной команды

Returns:

    Bot self

Usage:

    bot.command("test", function(ctx) ctx.reply.text("Hello") end)
bot:callback (handler, uid)
Нажата inline кнопка

Parameters:

  • handler func функция, которая выполнится при нажатии inline кнопок
  • uid string уникальный идентификатор хендлера

Returns:

    Bot self

Usage:

    bot.command("test", function(ctx)
    	ctx.reply.inlineKeyboard({ {
    		{text = "Line 1, row 1", callback_data = "any"},
    	} }).text("Hello world!")
    end)
    bot.callback(function(ctx)
    	local query = ctx.callback_query
    	if query.data == "any" then
    		ctx.answer({text = "It's inline answer"})
    	end
    end, "callback_example")
bot:text (handler, uid)
Пришло текстовое сообщение. Может также содержать команду. Не gif, не callback_query и т.д.

Parameters:

  • handler func функция, которая выполнится при получении текстового сообщения
  • uid string уникальный идентификатор хендлера

Returns:

    Bot self
bot:message (handler, uid)
Команды, гифки... Все, что имеет поле .message

Parameters:

  • handler func функция, которая выполнится при получении update с полем .message
  • uid string уникальный идентификатор хендлера

Returns:

    Bot self
generated by LDoc 1.5.0 Last updated 2023-11-30 12:02:17