169 похожих чатов

Мне интересно, а кто-нибудь на Lua ботов пишет? :)

11 ответов

29 просмотров

У меня бот для управления домашней пекой, впном и сеткой в целом на Lua написан

FlyTie🎀- Автор вопроса
Igor
Да

пакет какой-то используешь?

FlyTie🎀
пакет какой-то используешь?

Что ты подразусеваешь под словом "пакет"?

FlyTie🎀- Автор вопроса

Я писал, довольно просто это делается и на чистом Lua.

ventureo
Я писал, довольно просто это делается и на чистом ...

#!/usr/bin/env lua local copas = require "copas" local asynchttp = require "copas.http" local json = require "cjson" local f = string.format local concat = table.concat local round = math.floor local token = "XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXX" local function err(msg, ...) print(msg:format(...)) end local function encode(params) local query = {} for k, v in pairs(params) do query[#query+1] = concat({k, tostring(v)}, "=") end return concat(query, "&") end local function api_call(method, params) assert((type(method) == "string"), "method must be a string") assert((type(params) == "table" or "nil"), "params must be a table or nil") local url = f("https://api.telegram.org/bot%s/%s", token, method) if params and next(params) then url = url .. "?" .. encode(params) end local res = asynchttp.request(url) local data = json.decode(res) if not data.ok then err("Telegram API error: %d %s", data.error_code, data.description) return nil, data.error_code, data.description end return data.result end local telegram = {} setmetatable(telegram, { __index = function (_, method) return function(params, callback) if callback then copas.addthread(function () callback(api_call(method, params)) end) else return api_call(method, params) end end end }) local function process_message(message) telegram.sendMessage({ chat_id = round(message.from.id), text = message.text }, function (res) if res then print(message.text) end end) end local function event_loop() local params = {} while true do local updates = telegram.getUpdates(params) if updates ~= nil and #updates > 0 then for _, update in ipairs(updates) do if update.message then process_message(update.message) end end params.offset = round(updates[#updates].update_id) + 1 end end end copas.addthread(event_loop) copas() Вот простейший асинхронный эхо бот с Copas+CJSON. Может кому пригодится.

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Карта сайта