mcabbot.lua
author Mikael Berthe <mikael@lilotux.net>
Sat, 17 Apr 2010 14:40:36 +0200
changeset 24 77a72b227d59
parent 1 cca972635e5e
child 27 a166e9ab8065
permissions -rw-r--r--
Handle subscription requests \o/
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
local home = os.getenv("HOME")
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
package.path = package.path..
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
                ";"..home.."/.mcabber/lua/?.lua"..
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
                ";"..home.."/.mcabber/lua/mcbot/?.lua"
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
home = nil
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
require "mcbot.mcbot_engine"
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
local mcabbot = {}
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
mcabbot.nickname = "McBot"
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
mcabbot.jid = "mcabbot@lilotux.net"
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
24
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    14
local function hk_subscription (h)
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    15
    if h.type == "subscribe" then
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    16
        -- Let's authorize them...
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    17
        main.run("authorization allow "..h.jid)
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    18
        -- ... and subscribe to their own presence
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    19
        main.run("authorization request "..h.jid)
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    20
        return 1
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    21
    elseif h.type == "unsubscribe" or h.type == "unsubscribed" then
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    22
        main.run("authorization cancel "..h.jid)
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    23
    end
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    24
    return 0
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    25
end
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    26
1
cca972635e5e Provid more data to the bot functions
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    27
local function hk_message_in (h)
0
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    local perso = false
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
    local muc = false
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
    local message = h.message
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
    if h.groupchat and h.groupchat == "true" then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
        muc = true
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    33
    end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    34
    if muc == true then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
        if h.delayed == ""  and h.attention and h.attention == "true" then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
            if h.resource and h.resource ~= mcabbot.nickname then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
                perso = true
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
            end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
        end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
    else
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
        if h.jid ~= mcabbot.jid then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    42
            perso = true
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
        end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
    end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    45
    if perso == true then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
        local cmd, msg
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    47
        if muc == true then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    48
            cmd = "say_to -q "..h.jid.." "..h.resource..": "
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    49
        else
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    50
            cmd = "say_to -q "..h.jid.."/"..h.resource.." "
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
        end
1
cca972635e5e Provid more data to the bot functions
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    52
        mcabbot.message = h
cca972635e5e Provid more data to the bot functions
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    53
        local res, errmsg = process(message, mcabbot, muc)
cca972635e5e Provid more data to the bot functions
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    54
        mcabbot.message = nil
0
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    55
        if res then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    56
            msg = res
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    57
        elseif errmsg then
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    58
            msg = "! " .. errmsg
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    59
        end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
        if (msg) then main.run(cmd..msg) end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    61
    end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
end
89add07d6fe4 Initial revision
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
1
cca972635e5e Provid more data to the bot functions
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    64
main.hook("hook-post-message-in", hk_message_in)
24
77a72b227d59 Handle subscription requests
Mikael Berthe <mikael@lilotux.net>
parents: 1
diff changeset
    65
main.hook("hook-subscription", hk_subscription)