NoMsn est un bot jabber programmé en python, que j'ai créé pour avertir mes anciens contacts MSN Messenger que j'ai arrêté d'utiliser ce réseau.
Je l'utilise ainsi : j'ai créé un compte jabber (nomsn@im.apinc.org) qui utilise la passerelle MSN du serveur apinc.org pour se connecter à mon ancien compte MSN. Ce compte jabber est utilisé par mon bot. Comme il se lance au démarrage de mon ordinateur, les utilisateurs voulant me parler tomberont sur un message d'explication du bot qui les renverra sur ma page d'explication. J'ai en plus ajouté une commande citation
qui renvoi la sortie de la commande linux fortune
, avec des fortunes en français.
Le bot est programmé en python, et disponible sous licence GPL : télécharger nomsn.py. Il s'utilise ainsi : nomsn.py username@server.net password
. Vous pouvez éditer le script pour changer l'url vers laquelle il redirige les utilisateurs (une variable au début du script), ainsi que les différents textes et commandes (à un endroit se trouve mon JID : c'est le JID de l'utilisateur autorisé à fermer le bot par la commande fermer
).
EDIT 29/01 à 13h06 : déjà une nouvelle version de nomsn (le lien de téléchargement précédent renvoi sur cette version 0.2.0). Les nouveautés : les messages entrants sont stockés dans le fichier ~/.nomsnlog, ce qui permet de savoir qui a voulu vous contacter, et quand. De plus, toutes les variables personnelles ont étés placées au début du script, il suffit de les modifier pour adapter nomsn à vos besoins...
Édition du 14/01/2007 : Jonas propose une nouvelle version de ce bot (cf les commentaires) sur son site : Bot nomsn
(version 0.3 et plus).
Commentaires
On a une erreur 500 quand on essaie d'accèder au fichier du bot... peut-être ton hébergeur qui tente d'interpréter le Python ?
En effet... Pourtant le script n'a pas d'atribut exécutable. Faudra que je voie dans l'interface d'admin si je peux désactiver le cgi dans certains dossiers, ou un truc du genre. Sinon, j'ai copié le fichier sur le serveur en lui enlevant l'extension .py, et il est affiché en tant que texte : filyb.info/prog/nomsn/nom...
Salut !
Ton script m'intéresse beaucoup mais j'ai un problème.
Le script se connecte correctement (sur un @jabber.fr qui fait partie d'apnic).
Lors que j'envoie un message (à partir d'une autre adresse jabber) le scipte plante et me met cette erreur :
Traceback (most recent call last):
File "./nomsn.py", line 151, in ?
GoOn(conn)
File "./nomsn.py", line 127, in GoOn
while StepOn(conn): pass
File "./nomsn.py", line 122, in StepOn
conn.Process(1)
File "/usr/lib/python2.4/site-packages/xmpp/dispatcher.py", line 302, in dispatch
handler['func'](session,stanza)
File "./nomsn.py", line 106, in messageCB
if type(pat)==type(''): reply=pat%args
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 325: ordinal not in range(128)
Peux-tu me donner un coup de main ? (Je touche un peu au python mais vraiment un peu.)
Merci
Résolu (grâce à cedricb sur le forum ubuntu-fr qui ma aussi donné le lien vers le script)
Les accents ne sont pas supporter par le script !
Merci pour ce bot
C'est étrange, ce problème d'accents. Le script spécifie bien à python d'utiliser l'utf-8, et si tu es sous ubuntu, ton éditeur doit être configuré pour travailler par défaut en utf-8...
Sinon, tu peux essayer d'ajouter un u devant les guillemets ouvrants de ta chaîne de caractère contenant les accents, ça devrait forcer python à gérer la chaîne comme un objet unicode et non ascii.
Mais il se peut que ça vienne d'autres limitations, j'ai plus trop le code en tête...
Bon usage du bot et de Jabber !
J'utilise scite, il est bien en utf-8.
Merci avec le "u" ça fonctionne mais en même temps toutes les chaînes de ton script sont écrite sans accent.
Autre problème + important : lors ce qu'on met un accent dans me message envoyer au bot il plante (dans la partie écriture du log). J'ai donc supprimé cette partie.
Je te laisse faire un peu de ménage dans mes commentaires si tu le souhaites
Si elle ne te sert pas, ce n'est pas trop grave, mais il va falloir que je jette un coup d'oeil, puisque ce script est utilisé.
Quand aux commentaires, ils ne sont pas faits pour être vide, tout ce qui y arrive y reste (mis à part les spams, qui feraient mieux de ne pas venir du tout).
Encore moi 8-O
Pour le fichier log j'ai résolu le problème :
log.write(time.asctime(time.localtime()) + " :: " + str(user) + " :: " + text.encode('utf-8') + " ")
Et j'ai ajouté 2 fonctions pour lire et effacer le log via l'adresse administrateur
Visiblement tu n'as pas le plugin BBcode :(, si tu peux juste ajouter les balise de <code></code> pour la lisibilité merci ;) (je nettoie un peu mon code et le met sur mon blog : jonas.tuxfamily.org/?2007... )
Merci pour la solution du log
Les deux fonctions sont pratiques, surtout si le bot est lancé sur une machine tierce. Vu que je n'utilise plus ce script et que tu semble motivé pour y toucher, je vais modifier mon billet pour renvoyer vers la version améliorée de ton blog (dès que tu aura publié le billet).
J'ai aussi remis en forme ton commentaire, pour l'instant il n'y a pas de BBcode dans les commentaires ou d'autres types de mise en forme, mais ce blog passera sous DotClear 2 quand la version finale sortira, et ce sera l'occasion de faire des améliorations de ce genre.
Je suis motivé pour l'adapter à mes besoin