JABBER-QUERYBOT(1p) | User Contributed Perl Documentation | JABBER-QUERYBOT(1p) |
jabber-querybot - a modular perl jabber bot
jabber-querybot connects a jabber account and wait for messages. If a message comes in, it forward it to your self programmend modul. The return string of your module, jabber-querybot send it back to the jabber sender.
It is designed to be re-usable and to make it easy to write small Jabber bots that do one thing and do it well. A simple concept with a lot of examples and experiences are implemented.
1. Create a jabber account on a jabber-server around
2. Create a bot application:
cd examples cp Querymodule.pm /etc/jabber-querybot/Mybot.pm cd /etc/jabber-querybot ln -s Mybot.pm Querymodule.pm
Modify login parameters to your jabber-bot-account
vim Mybot.pm
our $hostname = "swissjabber.ch"; our $user = ""; our $password = ""; our $ident = "Testbot"; our $bot_admin = "\@swissjabber.ch"; our $port = "5222"; our $timeout = "5"; our $service_name = "$user\@$hostname"; our $bot_description = "Bot help title Bot description";
For each jabber message, jabber-querybot will execute sub run_query, that you can write here your application.
You can control how your jabber response will be:
jabber-querybot has a lot of variables which you can easy modify for what you need:
$querystatus = [ 0 | 1 ]
If the bot has too much workload, it goes to penalty status and wait some time until his status change back to normal.
$timer_reconnect_default = 21600
Every 21600 seconds (6 hours) the bot will shutdown automatically, wait 10 seconds and starting up again.
$timer_auto_query = 0
If you set in your module this variable to 60, the bot will every 60 seconds call the function run_auto_query() which you may use for several things.
If your systems load is >=6, this bot will shutdown the jabber connection and check every 10 seconds systems load. If load <=2, bot will start over.
/usr/share/doc/jabber-querybot/examples/Testbot.pm
/etc/jabber-querybot/Querymodule.pm
/usr/bin/jabber-querybot
http://github.com/micressor/jabber-querybot/
An incoming jabber message to the bot will hook this function.
This function connects to the jabber server with the given credentials from Querymodule.pm.
Set the call back functions. This functions will be executed if a message of the types <message/> <iq/> or <presence/> are incoming.
Shutdown jabber connection and exit main program
Only disconnect from the jabber-server.
Reconnect and create a log entry.
We do not proceed any iq (information query), this is only for statisic.
We have a problem in Net::Jabber. An incoming message with a ` in resource blocks the bot. We will hotfix that for the moment.
A subscription type `subscribe` is incoming. Send `subscribed` tho the user and say hello ;)
Send presence information to user
Remove resource id from a jabber id.
Calculate message statistics
Set new presence if we have another presence status or we have set the force flag (for transport presence).
This function send all jabber messages which are outgoing from the jabber-querybot.
Set jabber presence via jabber_set_presence()
This function checks if the bot is overloaded with incoming mesages and reject if it is. Two times that's ok so 2:1 because while in main.
Bot admin got everytime an answer.
Add footer to the processed message.
Calculate elapsed worktime for a query
sendError($message, $from, $to, 404, "text");
Connect bot and initialize all timers.
Check configuration variables in Querybotmodule.pm and give answer if anything does not match or is missing.
Copyright (C) 2009-2012 Marco Balmer <marco@balmer.name>
The Debian packaging is licensed under the GPL, see `/usr/share/common-licenses/GPL-3'.
2012-02-03 | perl v5.14.2 |