-
Notifications
You must be signed in to change notification settings - Fork 5
/
init.lua
129 lines (117 loc) · 2.88 KB
/
init.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
if IRC_RUNNING then error("Already running") end
IRC_RUNNING=true
WINDOWS = package.config:sub(1,1) == "\\"
dofile("derp.lua")
dofile("irc/init.lua")
local s,r = pcall(dofile,"config.lua")
if not s then
if r:find("No such file or directory") then
print("Config not found, copying template")
os.execute("cp configtemplate.lua config.lua")
r=dofile("config.lua")
else
error(r)
end
end
config = r
local sleep=require "socket".sleep
socket = require"socket"
local console=socket.tcp()
console:settimeout(5)
if not WINDOWS and config.terminalinput then
--start my console line-in
os.execute(config.terminal.." lua consolein.lua")
end
shutdown = false
user = config.user
irc=irc.new(user)
for k,v in pairs(arg) do
if v == "--verbose" then
local function onSend(msg)
print("--> " .. msg)
end
local function onRecv(msg)
print("<-- " .. msg)
end
pcall(irc.unhook, irc, "OnSend", "onSend")
irc:hook("OnSend","onSend", onSend)
pcall(irc.unhook, irc, "OnRaw", "onRecv")
irc:hook("OnRaw","onRecv", onRecv)
end
end
--autojoin after registration
local function autojoin()
if #config.autojoin <= 0 then print("No autojoin channels set in config.lua!") end
local hasPrimary = false
local hasLog = false
for k,v in pairs(config.autojoin) do
irc:join(v)
if v == config.primarychannel then
hasPrimary = true
end
if v == config.logchannel then
hasLog = true
end
end
--join extra config channels if they for some reason aren't in the autojoin
if config.primarychannel and not hasPrimary then
irc:join(config.primarychannel)
end
if config.logchannel and not hasLog then
irc:join(config.logchannel)
end
irc:sendChat(config.primarychannel, "moo" * #config.autojoin)
pcall(irc.unhook, irc, "OnRegistered", "autojoin")
end
irc:hook("OnRegistered", "autojoin", autojoin)
--support multiple networks sometime
local connectioninfo = {
host = config.network.server,
port = config.network.port,
serverPassword = config.network.password,
secure = config.network.ssl,
timeout = config.network.timeout,
sasl = config.network.sasl,
account = config.user.account,
password = config.user.password
}
irc:connect(connectioninfo)
config.user.password = nil
config.network.password = nil
print("Connected!")
local connected=false
if not WINDOWS then
--connect to console thread
function conConnect()
console:connect("localhost",1337)
console:settimeout(0)
console:setoption("keepalive",true)
connected=true
end
conConnect()
end
dofile("hooks.lua")
dofile("commands.lua")
local function consoleThink()
if not connected then return end
local line, err = console:receive()
if line then
if line:find("[^%s%c]") then
consoleChat(line)
end
end
end
didSomething=false
while true do
if shutdown then irc:shutdown() break end
irc:think()
consoleThink()
ircSendOne()
timerCheck()
if not didSomething then
sleep(0.05)
else
sleep(0.01)
end
didSomething=false
end