diff options
-rwxr-xr-x | bots/eng-mal-bot.py | 90 |
1 files changed, 39 insertions, 51 deletions
diff --git a/bots/eng-mal-bot.py b/bots/eng-mal-bot.py index cc11209..36e7fe0 100755 --- a/bots/eng-mal-bot.py +++ b/bots/eng-mal-bot.py @@ -1,11 +1,12 @@ -#!/usr/bin/python #!/usr/bin/env python # -*- coding: utf-8 -*- # # eng-mal-bot.py A Jabbe buddy bot which provide eng-mal dictionary lookup service # -# Copyright (c) 2009 Santhosh Thottingal <santhosh.thottingal@gmail.com> -# http://smc.org.in/ +# Copyright (c) 2009 +# Santhosh Thottingal <santhosh.thottingal@gmail.com> +# Sarath Lakshman <sarathlakshman@gmail.com> +# Swathanthra Malayalam Computing(http://smc.org.in/) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,54 +20,13 @@ import xmpp from xmpp.protocol import * -from xmpp.roster import * import os options = { 'JID': 'eng.mal.dict@gmail.com', - 'Password': 'രഹസ്യം(പറയൂല!) !', + 'Password': 'mail santhosh if you need password for this', } -def presenceHandler(conn,presence_node): - """ Handler for playing a sound when particular contact became online """ - targetJID='node@domain.org' - print presence_node.getFrom() - if presence_node.getFrom().bareMatch(targetJID): - # play a sound - pass -def iqHandler(conn,iq_node): - """ Handler for processing some "get" query from custom namespace""" - reply=iq_node.buildReply('result') - # ... put some content into reply node - conn.send(reply) - raise NodeProcessed # This stanza is fully processed - - -def messageHandler(conn,message): - user = message.getFrom() - text = message.getBody() - if(text): - if " " in text: - command, args = text.split(" ", 1) - else: - command, text = text, "" - command = command.upper() - #ഇതു വര്ക്കു ചെയ്യുന്നില്ല! :( - if command == "SUBSCRIBE": - rost=Roster().PlugIn(conn) - rost=Roster.getRoster() - ros.Authorize(user) - reply = "Authorized." - conn.send(reply) - raise NodeProcessed # This stanza is fully processed - else: - command = "dict --database dict-en-ml '" + message.getBody() +"'" - stdin, stdout = os.popen2(command) - # ... put some content into reply node - conn.send( xmpp.Message( user,stdout.read())) - stdout.close() - raise NodeProcessed # This stanza is fully processed - class ConnectionError: pass class AuthorizationError: pass class NotImplemented: pass @@ -79,9 +39,9 @@ class Bot: # connect... jid = xmpp.JID(JID) - self.connection = xmpp.Client(jid.getDomain(), debug=['always', 'browser', 'testcommand']) + self.connection = xmpp.Client(jid.getDomain(), debug=[]) result = self.connection.connect() - + if result is None: raise ConnectionError @@ -91,13 +51,12 @@ class Bot: if result is None: raise AuthorizationError - self.connection.RegisterHandler('presence',presenceHandler) - self.connection.RegisterHandler('iq',iqHandler) - self.connection.RegisterHandler('message',messageHandler) + self.connection.RegisterHandler('presence',self.presenceHandler) + self.connection.RegisterHandler('message',self.messageHandler) # ...become available self.connection.sendInitPresence() # presence - self.connection.sendInitPresence(requestRoster=0) + #self.connection.sendInitPresence(requestRoster=0) def loop(self): """ Do nothing except handling new xmpp stanzas. """ @@ -106,7 +65,36 @@ class Bot: pass except KeyboardInterrupt: pass + + def messageHandler(self, conn,mess_node): + + if(mess_node.getBody()): + command = "dict --database dict-en-ml '" + mess_node.getBody() +"'" + stdin, stdout = os.popen2(command) + # ... put some content into reply node + conn.send( xmpp.Message( mess_node.getFrom() ,stdout.read())) + stdout.close() + raise NodeProcessed # This stanza is fully processed + + + + def presenceHandler(self, conn, presence): + + '''Auto authorizing chat invites''' + if presence: + if presence.getType()=='subscribe': + jid = presence.getFrom().getStripped() + self.connection.getRoster().Authorize(jid) + + targetJID='node@domain.org' + print presence.getFrom() + if presence.getFrom().bareMatch(targetJID): + # play a sound + pass + + bot = Bot(**options) bot.loop() + |