first commit
This commit is contained in:
commit
cf130e9fa8
|
@ -0,0 +1,12 @@
|
|||
YOLO LICENSE
|
||||
Version 1, July 10 2015
|
||||
|
||||
THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER
|
||||
SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN
|
||||
TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES
|
||||
LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY SUBJECT TO
|
||||
THE FOLLOWING CONDITIONS:
|
||||
|
||||
1. #yolo
|
||||
2. #swag
|
||||
3. #blazeit
|
|
@ -0,0 +1,60 @@
|
|||
local fs = require "lfs"
|
||||
local http = require "http"
|
||||
local json = require "json"
|
||||
local telegram = require "telegram"
|
||||
local yaml = require "yaml"
|
||||
|
||||
function restore()
|
||||
local fin = io.open("var/data.json", "r")
|
||||
local data, err = json.decode(fin:read("*a"))
|
||||
if err ~= nil then
|
||||
print("cannot load data: " .. err)
|
||||
return
|
||||
end
|
||||
|
||||
vars = data
|
||||
end
|
||||
|
||||
function save()
|
||||
local fout = io.open("var/data.json", "w")
|
||||
local data = json.encode(vars)
|
||||
fout:write(data)
|
||||
fout:write("\n")
|
||||
fout:close()
|
||||
end
|
||||
|
||||
function main()
|
||||
restore()
|
||||
|
||||
if vars == nil then
|
||||
vars = {}
|
||||
end
|
||||
|
||||
if vars.lastowotime == nil then
|
||||
vars.lastowotime = 0
|
||||
end
|
||||
|
||||
if vars.tolearnfrom == nil then
|
||||
vars.tolearnfrom = {} -- array of id's of people
|
||||
end
|
||||
|
||||
while true do
|
||||
local update = tgupdates:receive()
|
||||
|
||||
if update ~= nil and update.message ~= nil then
|
||||
local chatid = update.message.chat.ID
|
||||
local userid = tostring(update.message.from.ID)
|
||||
local text = update.message.text
|
||||
|
||||
if string.find(string.lower(text), "notices") and math.random(100) % 15 == 0 then
|
||||
if vars.lastowotime + 600 < os.time() then
|
||||
local msg = telegram.newMessage(chatid, "owo what's this?")
|
||||
tg:send(msg)
|
||||
|
||||
vars.lastowotime = os.time()
|
||||
end
|
||||
end
|
||||
end
|
||||
save()
|
||||
end
|
||||
end
|
|
@ -0,0 +1,35 @@
|
|||
function switch(t)
|
||||
t.case = function (self,x)
|
||||
local f=self[x] or self.default
|
||||
if f then
|
||||
if type(f)=="function" then
|
||||
f(x,self)
|
||||
else
|
||||
error("case "..tostring(x).." not a function")
|
||||
end
|
||||
end
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
function split(inputstr, sep)
|
||||
if sep == nil then
|
||||
sep = "%s"
|
||||
end
|
||||
local t={} ; i=1
|
||||
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
|
||||
t[i] = str
|
||||
i = i + 1
|
||||
end
|
||||
return t
|
||||
end
|
||||
|
||||
function string.starts(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
|
||||
function string.ends(String,End)
|
||||
return End=='' or string.sub(String,-string.len(End))==End
|
||||
end
|
||||
|
||||
math.randomseed(os.time())
|
|
@ -0,0 +1,67 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/cjoudrey/gluahttp"
|
||||
"github.com/kohkimakimoto/gluayaml"
|
||||
"github.com/kr/pretty"
|
||||
luar "github.com/layeh/gopher-luar"
|
||||
"github.com/namsral/flag"
|
||||
lua "github.com/yuin/gopher-lua"
|
||||
"gopkg.in/telegram-bot-api.v4"
|
||||
"layeh.com/gopher-json"
|
||||
"layeh.com/gopher-lfs"
|
||||
)
|
||||
|
||||
var (
|
||||
discordBotToken = flag.String("discord-token", "", "Discord bot token")
|
||||
telegramBotToken = flag.String("telegram-token", "", "Telegram bot token")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
bot, err := tgbotapi.NewBotAPI(*telegramBotToken)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
u := tgbotapi.NewUpdate(0)
|
||||
u.Timeout = 60
|
||||
|
||||
updates, err := bot.GetUpdatesChan(u)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
L := lua.NewState()
|
||||
defer L.Close()
|
||||
|
||||
L.PreloadModule("yaml", gluayaml.Loader)
|
||||
L.PreloadModule("http", gluahttp.NewHttpModule(&http.Client{}).Loader)
|
||||
json.Preload(L)
|
||||
lfs.Preload(L)
|
||||
|
||||
L.SetGlobal("tg", luar.New(L, bot))
|
||||
L.SetGlobal("tgupdates", luar.New(L, updates))
|
||||
L.SetGlobal("pprint", luar.New(L, pretty.Println))
|
||||
|
||||
preloadTG(L)
|
||||
|
||||
err = L.DoFile("lib.lua")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = L.DoFile("bot.lua")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = L.DoString("main()")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
luar "github.com/layeh/gopher-luar"
|
||||
lua "github.com/yuin/gopher-lua"
|
||||
"gopkg.in/telegram-bot-api.v4"
|
||||
)
|
||||
|
||||
func preloadTG(L *lua.LState) {
|
||||
L.PreloadModule("telegram", loadTelegram)
|
||||
}
|
||||
|
||||
var tgapi = map[string]lua.LGFunction{
|
||||
"newMessage": tgNewMessage,
|
||||
}
|
||||
|
||||
func loadTelegram(L *lua.LState) int {
|
||||
t := L.NewTable()
|
||||
L.SetFuncs(t, tgapi)
|
||||
L.Push(t)
|
||||
return 1
|
||||
}
|
||||
|
||||
func tgNewMessage(L *lua.LState) int {
|
||||
chatid := L.CheckInt64(1)
|
||||
text := L.CheckString(2)
|
||||
|
||||
L.Push(luar.New(L, tgbotapi.NewMessage(chatid, text)))
|
||||
return 1
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
{"lastowotime":0,"tolearnfrom":null}
|
Loading…
Reference in New Issue