-- ATTENTION (XEP-0224)
-- library
require 'lm'
-- public
attention = {
handler =
function ( mesg )
end,
}
function attention.send ( conn, to, message )
local body = nil
if message then
body = { message }
end
conn:send (
lm.message.create { mtype = 'message-headline', to = to,
attention = { xmlns = 'urn:xmpp:attention:0' },
body = body,
} )
end
-- private
local attention_incoming_message_handler = lm.message_handler.new (
function ( conn, mess )
local a = mess:child ( 'attention' )
if a and a:attribute ( 'xmlns' ) == 'urn:xmpp:attention:0' then
local body = mess:child ( 'body' )
if body then
body = body:value ()
end
attention.handler ( body )
end
return false
end )
-- mcabber
attention.handler =
function ( mesg )
local times = 0
main.timer ( 1,
function ()
if times < 6 then
main.beep ()
times = times + 1
return true
end
return false
end )
end
main.command ( 'attention',
function ( args )
local who
if args.t then
who = args.t
else
who = main.full_jid ()
end
attention.send ( lm.connection.bless ( main.connection () ), who, args[1] )
end, true, 'jid' )
commands_help['attention'] = "[-t to] [message]\n\nTries to get buddy's attention."
local attention_handler_registered = false
hooks_d['hook-post-connect'].attention =
function ( args )
lm.connection.bless( main.connection () ):handler ( attention_incoming_message_handler, 'message', 'normal' )
attention_handler_registered = true
hooks_d['hook-post-connect'].attention = nil
hooks_d['hook-quit'].attention =
function ( args )
if attention_handler_registered then
lm.connection.bless( main.connection () ):handler ( attention_incoming_message_handler, 'message' )
end
end
end
main.add_feature ( 'urn:xmpp:attention:0' )
-- vim: se ts=4: --