Bot minimaliste avec SleekXMPP

Valentin Brosseau | 27-05-2012

C'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...

Migration vers pélican

Valentin Brosseau | 22-05-2012

Bon un peu de nouveau sur ce blog.... même si personne qui passe réellement mise à part le robot Google (et encore ?) j'ai décidé de migrer celui-ci vers Pelican.

Pelican contrairement à Worpress ne génère pas dynamique le contenu à chaque requête. Le blog est "compilé" ou plutôt généré une fois après la rédaction d'article. Le résultat de la génération c'est un ensemble de fichier HTML statique que l'on peut héberger vraiment n'importe où (Dropbox, Github, un micro vps, etc).

Pourquoi changer? Tout simplement pour m'amuser, utiliser des nouveaux trucs. L'inspiration première vient de Phollow.fr. qui a migré sont blog vers quelques chose de quasi similaire mais à base de ruby (mais comme ruby me file des boutons... j'ai pris un équivalent en Python ;))

Lire la suite...

Abandonner PHP

Valentin Brosseau | 11-06-2010

Et bien pourquoi pas. J'hésite, je tests… Je ne pense pas qu'il soit possible dans mon cas d'abandonner PHP, car j'ai plusieurs projets personnels reposant sur ce langage, mais à l'avenir je me demande si je ne vais pas privilégier le python avec des frameworks comme PylonsHQ ou Django.

C'est sûr que c'est différents, qu'il me faudra un temps d'adaptation, mais j'y pense (et puis j'oublie...)

Bon c'est pas le tout mais je doit debugger du PHP ;).

Lire la suite...

« Page précédente