aboutsummaryrefslogtreecommitdiffstats
path: root/test/luabot.lua
blob: 6c9b43a8881db9cd9cc59b322e002a60d92fa4f5 (plain) (blame)
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
#!/usr/bin/env lua

local irc = require 'irc'
irc.DEBUG = true

local nick = "luabot"
local pre_code = [[
io = nil
os = nil
loadfile = nil
dofile = nil
package = nil
require = nil
module = nil
debug = nil
]]

irc.register_callback("connect", function()
    irc.join("#doytest")
end)

irc.register_callback("channel_msg", function(channel, from, message)
    local for_me, code = message:match("^(" .. nick .. ". )(.*)")
    if for_me then
        code = code:gsub("^=", "return ")
        local fn, err = loadstring(pre_code .. code)
        if not fn then
            irc.say(channel.name, from .. ": Error loading code: " .. err)
            return
        else
            local result = {pcall(fn)}
            local success = table.remove(result, 1)
            if not success then
                irc.say(channel.name, from .. ": Error running code: " .. result[1])
            else
                irc.say(channel.name, from .. ": " .. table.concat(result, ", "))
            end
        end
    end
end)

irc.connect{network = "irc.freenode.net", nick = nick}