upd readme, some small changes

This commit is contained in:
Er2 2021-07-21 11:40:31 +03:00
parent f15c139502
commit e8fc2791e0
8 changed files with 95 additions and 81 deletions

View File

@ -13,13 +13,21 @@ and C is faster.
[Alpine Linux](https://alpinelinux.org), root:
* Enable community repo (in wiki)
* Install: `apk add sudo git lua5.3 luarocks openssl-dev`
* Install dependencies: `luarocks-5.3 install luasec`
* Create user: `adduser user`
setup sudo and login to user
* Get repo: `git clone https://github.com/Er2ch/comp-tg`
and `cd comp-tg`
* Change token and owner in `config.lua`
TODO: Use env instaed of config
* Run: `lua5.3 init.lua`

View File

@ -6,13 +6,13 @@
local tools =require 'etc.api.tools'
local json = require 'etc.json'
local events=require 'etc.events'
local api = { _ev_ = {} }
local api = {
request = function(s, ...) return tools.request(s.token, ...) end
}
api.__index = api -- Make class
events(api) -- inheritance
function api:request(...) return tools.request(self.token, ...) end
-- Getters without params
function api:getMe() return self:request 'getMe' end

View File

@ -37,4 +37,7 @@ function events:emit(name, ...)
end
end
return function(t) return setmetatable(t, events) end
return function(t)
t._ev_ = {}
return setmetatable(t, events)
end

View File

@ -1 +1 @@
require 'src.core.core'
require 'src.parts.core'

View File

@ -1,76 +0,0 @@
local config = require 'config'
local Core = {
tg = require 'etc.api',
config = config,
cmds = {},
_ev_ = {}, -- :evil:
}
local tg = Core.tg
Core = (require 'etc.events')(Core) -- add events
function Core:load(what)
local c = config[what]
local s = #c
for i = 1, s do
local v = c[i]
print(('Loading %s (%d / %d) %s...'):format(what:sub(0, -2), i, s, v))
-- Lint
if pcall(require, 'src.'.. what ..'.'.. v) then
local a=require('src.'.. what ..'.'.. v)
if what == 'events' then self.api:on(v, a)
elseif what == 'cmds' then self.cmds[v] = a
elseif what == 'core' then a(self)
end
else print 'fail' end
end
print(('Loaded %d %s'):format(s, what))
end
function Core:ev(t, i, name, ...)
local v = t[i]
if v.name == name then
local succ = pcall(v.fn, self, ...)
if not succ then print('event "' .. name .. '" was failed') end
if v.type == 'once' then table.remove(t, i) end
end
end
function Core:init()
self.api = tg {norun = true}
print 'Client initialization...'
function Core._ev(ev, ...) self:ev(...) end
function self.api._ev(ev, t, i, n, ...)
self._ev(ev, t, i, n, self.api, ...)
end
self:load 'events'
self:load 'core'
self.api:login(config.token, function()
print('Logged on as @' .. self.api.info.username)
self.config.token = nil
self.api:emit 'ready'
end)
self:emit 'init'
print 'Done!'
local offs, o = 0
self.t = os.time()
self.api.runs = true
while self.api.runs do
self:emit 'tick'
o = self.api:_getUpd(1, offs, 0)
offs = o and o or offs
end
self.api:getUpdates(1, offs, 0)
end
Core:init()

35
src/parts/client.lua Normal file
View File

@ -0,0 +1,35 @@
local tg = require 'etc.api'
return function(Core)
local self = Core
self.api = tg { norun = true }
self.cmds = {}
print 'Client initialization...'
function Core._ev(ev, ...) self:ev(...) end
function self.api._ev(_, t, i, n, ...)
self._ev(_, t, i, n, self.api, ...)
end
self:load 'events'
self.api:login(self.config.token, function()
print('Logged on as @' .. self.api.info.username)
self.config.token = nil
self.api:emit 'ready'
end)
local offs, o = 0
self.api.runs = true
self:on('ready', function()
while self.api.runs do
self:emit 'tick'
o = self.api:_getUpd(1, offs, 0)
offs = o and o or offs
end
self.api:getUpdates(1, offs, 0)
end)
end

44
src/parts/core.lua Normal file
View File

@ -0,0 +1,44 @@
local config = require 'config'
local Core = {
config = config,
}
(require 'etc.events')(Core) -- add events
function Core:load(what)
local c = config[what]
local s = #c
for i = 1, s do
local v = c[i]
print(('Loading %s (%d / %d) %s...'):format(what:sub(0, -2), i, s, v))
-- Lint
if true then
--pcall(require, 'src.'.. what ..'.'.. v) then
local a=require('src.'.. what ..'.'.. v)
if what == 'events' then self.api:on(v, a)
elseif what == 'cmds' then self.cmds[v] = a
elseif what == 'parts' then a(self)
end
else print 'fail' end
end
print(('Loaded %d %s'):format(s, what))
end
function Core:ev(t, i, name, ...)
local v = t[i]
if v.name == name then
local succ = pcall(v.fn, self, ...)
if not succ then print('event "' .. name .. '" was failed') end
if v.type == 'once' then table.remove(t, i) end
end
end
function Core:init()
self:load 'parts'
print 'Done!'
self:emit 'ready'
end
Core:init()