octubre 26, 2008

msnp.py: protocolo MSN en python

He estado probando el msnp.py, una librería que implementa el protocolo de MSN (messenger) en python, genial para hacer bots o scripts que se comuniquen mediante chat: tutorial msnp.py

Al tema de la documentación le falta bastante, pues solo están comentadas las funciones básicas, conexión y chat, así que tirando de los detalles del protocolo comento el tema de añadir y eliminar usuarios, para poder automatizarlo y tal, la info está sacada de la guía del protocolo MSN messenger:

Existen cuatro listas personales, tres controlan nuestros contactos y una cuarta nos informa que usuarios nos tienen agregados (quieren saber de nuestra presencia online).
  • Forward List (FL): Nuestra lista de contactos, usuarios de los que queremos conocer cuando están online.

  • Reverse List (RL): Lista de usuarios que nos tienen en su lista FL (están suscritos a nuestra presencia), esta lista no es modificable, solo podemos consultarla.

  • Allow List (AL): Lista de usuarios a los que permites que te vean online. Podemos eliminar a un usuario de nuestra lista de contactos (FL) y mantenerlo en la AL, si en un futuro lo agregaramos de nuevo inmediatamente nos vería, así es como funciona un cliente de messenger normal. Si habéis trasteado por las opciones habréis visto usuarios permitidos que ya no teníais entre los contactos.

  • Block List (BL): Lista de bloqueados, usuarios que especificamente no quieres que vean tu presencia a pesar de que los mantenienes agregados (lista FL).


Cuando un usuario te agrega en su cliente nosotros recibimos una actualización de nuestra lista de contactos (.sync_friend_list()) en la que aparecerá el nuevo contacto en nuestra lista RL. A partir de aquí podemos ignorar a este nuevo usuario, el se suscribe a nuestra presencia, pero no recibirá información alguna nuestra. O bien podemos añadirle a nuestras listas, para ello debemos introducirlo en nuestra lista FL y permitir que nos vea añadiendolo a la lista AL.
Para bloquearlo abría que cambiarlo de la lista AL a la lista BL, y si ya no queremos tenerlo más lo quitamos de la lista FL, adicionalmente lo podemos quitar de las listas AL y BL.

comentarios: