Bot minimaliste avec SleekXMPP
Valentin Brosseau | 27-05-2012C'est toujours rigolo de faire un bot jabber, j'ai découvert il y a peu un framework XMPP qui me semble sympathique SleekXMPP.
L'installation du framework c'est comme d'habitude pour ma part :
- Création d'un virtualenv :
>>> virtualenv sleekxmpp >>> source sleekxmpp/bin/activate
- Installation de sleekxmpp :
>>> easy_install sleekxmpp
Le gros plus par rapport aux autres framework que j'avais déjà testé c'est qu'il ne possède quasi pas de dépendance. Donc pour tester je me suis amusé à faire un bot tout simple :
import logging from sleekxmpp import ClientXMPP from sleekxmpp.exceptions import IqError, IqTimeout class TimeTrackBot(ClientXMPP): my_jid = "" def __init__(self, jid, password): ClientXMPP.__init__(self, jid, password) self.my_jid = jid self.add_event_handler("session_start", self.session_start) self.add_event_handler("message", self.message) def session_start(self, event): self.send_presence() self.get_roster() def message(self, msg): if msg['type'] in ('chat', 'normal'): commande = msg['body'].split(' ') msg['body'] = " ".join(commande[1:]) try: retour = getattr(self, "cmd_"+commande[0])(msg) msg.reply(retour).send() except: self.not_found(msg) def not_found(self, msg): msg.reply('Commande introuvable.').send() """ Commande utilisateur """ def cmd_bonjour(self, msg): username = str(msg['from']).split('@')[0] message = str(msg['body']).split("@") # Juste pour info le message ce trouve ici return 'Bonjour {0}.format(username) def autrecmd(self, msg): return "STUB" if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG,format='%(levelname)-8s %(message)s') xmpp = TimeTrackBot('username@server', 'password') xmpp.connect() xmpp.process(block=True)
ça reste ultra minimaliste, mais si ça peu aider quelqu'un pour un petit bot ;).
Lire la suite...