[Tuto] Créer un bot MSN – Partie 2

juil 11

EDIT de juin 2010 : Ce tutoriel n’est plus à l’ordre du jour (écrit en 2007). Je le laisse en ligne à titre de mémoire et de découverte mais je ne pourrais en aucun cas fournir une aide quelconque quant au développement d’un bot MSN. Pour les gens vraiment désireux de réaliser un tel projet, je vous conseille de vous intéresser à DotMSN (une librairie C# qui permet d’utiliser la plus grande partie des fonctionnalités MSN en créant son propre client et donc son propre bot auto-hebergé). C’est largement plus intéressant que d’utiliser la plateforme Incesoft qui est très instable et désormais pleine de publicité. Merci de votre compréhension et bon courage à tous ! :wink:

J’avais précédemment écris un tutoriel sur la création d’un bot MSN à l’aide du SDK d’Incesoft. Voir « [Tuto] Créer un bot MSN – Partie 1« .

J’écris aujourd’hui cet article pour apporter quelques techniques et astuces supplémentaires pour la création de votre bot, car on m’a posé beaucoup de questions. Je vous informe aussi que j’ai réalisé une nouvelle source avec la dernière version du SDK d’Incesoft afin de pouvoir intégrer de nouvelles fonctions comme le changement de nom, du message perso ou encore le changement d’avatar en direct.

EDIT : Je vous conseille désormais d’utiliser ce tuto qui est le dernier en date !

C’est donc pour cela que j’ai mis à jour ma source que vous pouvez téléchargez ici.

1. Quelques bout de codes

Vous trouverez ici diverses astuces pour apprendre de nouvelles choses à votre bot.

1.1 Gestion du temps

Afin de lui faire dire l’heure qu’il est, vous pouvez utilisez DateTime.Now.ToString afin d’obtenir au format 23:23

session.send("Il est " + DateTime.Now.ToString("HH:mm") + " !");

Même procédé pour obtenir une date sous la forme 01 janvier 2007

session.send("On est le " + DateTime.Now.ToString("dd MMMM yyyy") + " !");

1.2. Calculer l’âge du robot

Afin de calculer l’âge du robot, on va d’abord déclarer ceci avant la classe « public void messageReceive »:

public int GetDaysBetweenDates(DateTime d1, DateTime d2)
{
return((TimeSpan)(d2 - d1)).Days;
}

nous allons créer DateTime d1 qui correspond à la date de naissance du bot et DateTime d2 qui correspond à la date actuelle. Ensuite, on calcule le nombre de jours entre ces deux dates à l’aide de GetDaysBetweenDates pour ensuite envoyer le résultat.

DateTime d1 = new DateTime(2007,07,01); // Naissance le 01 juillet 07
DateTime d2 =
DateTime.Today; // Date d'aujourd'hui
session.send("J'ai " + GetDaysBetweenDates(d1,d2).ToString() + " jours !");


2. Astuces

2.1 Sauter une ligne dans un message

Vous avez peut être déjà cherché le moyen d’envoyer plusieurs phrases en sautant une ligne ? J’ai trouvé la solution à ce problème en tentant de faire dessiner à mon robot un « mouton ». Ce dessin est certes inutile, mais on sait jamais !

Mouton MadBot v0.3

Pour envoyer plusieurs lignes, utilisez cet exemple qui vous donnera 3 belles lignes.

session.send(string.Format("1ère ligne{0}2ème ligne{0}3ème ligne", Environment.NewLine));

Voilà , j’éspère que ça pourra aider des gens. C’est peut être très court pour une seconde partie mais je rajouterai d’autres astuces au fur et à mesure du développement de mon propre bot. Amusez vous bien !

26 comments

  1. Je suis heureux de voir sa et je me mord les doigts pour la suite :D

  2. J’ai presque fini le bot en mode graphique et sera d’ici peu disponible pour vous tous!!

    J’ai quelques problèmes surtout pour la fermeture de l’application, qui reste en processus!!

    Et aussi, je voudrai connaitre ta méthode Greg pour tout ce qui tourne autour de MySQL :D STP…

  3. Salut, je vous informe que je viens de mettre à disposition la version graphique de mon robot sur mon forum (demande une inscription et une présentation)!

    http://forums.redstation.fr/viewtopic.php?t=270

    Ce robot évoluera certainement mais de peu :)
    Faut pas vouloir des miracles non plus ^^

  4. Je voudrai que mon robot apprenne la table de 1, mais il la cofond avec la table de 10 (que je lui est déjà appris !!)

    Merci de me répondre

    Guyom,

    mon bot : guyomrobot@hotmail.fr
    mon site pour télécharger mes logiciels GRATUIT : http://www.e-monsite.com/guyomrobot

  5. Le mieux n’est pas de lui apprendre la table ligne par ligne mais plutôt de lui enseigner carrément le calcul. Il faut par exemple que quand il reçoit des nombres ainsi qu’un opérateur, il supprime les lettres et qu’il se mette au travail pour renvoyer une valeur à l’utilisateur. On m’a conseillé d’utiliser les Regex (Expressions régulière si je me souvient bien) mais je n’ai pas trop poussé ma recherche…
    En tous cas, bonne chance !

  6. J’ai fait un bot à partir de ces sources mais la différence avec celui-là est qu’il a une interface graphique et donc qu’il n’est pas tout simplement en console (fenêtre noir).

    Donc si sa vous intéresse, rendez-vous à l’une de ces deux adresses (demande inscription – et présentation sur RedStation) ::
    http://forums.redstation.fr/viewtopic.php?t=270
    http://www.csharpfr.com/code.aspx?ID=43517

    J’espère que cela vous sera utile.
    Pour vous informer, je ne partage pas l’apprentissage du bot donc faudra tout lui enseigner :D

  7. Bjr,

    Merci greg je vais chercher, mais j’ai déjà tout codé ligne par ligne(sa ma pris 15 jours !!!)

    PyroFrissons, merci de ta visite sur mon site et aussi merci pour ton interface grafique ! Je vais l’essayer !

    Encore merci pour se tuto génial !!

    GuyomROBOT 2 !

  8. PSST, pour ceux que sa interésse, mon site c’est ici : http://www.e-monsite.com/guyomrobot

  9. slt,

    PyroFrissons, une fois lancé, je l’ai fermé pour déplacer le dossier autre part, IMPOSSIBLE ! Pourquoi ???

    Merci de me répondre,

    GuyomROBOT

  10. encore moi ^^

    J’ai appris l’heure et la date à mon robot, après, je lui est appris le dessin du mouton. Quand je lui dit « dessine-moi un mouton », il me dit la date !!! Pourquoi ????

    SVP répondez moi !!!

    Guyom

  11. Pour mon bot, ce n’est pas un problème lié à ton pc mais bien mon bot qui fait sa loi ^^

    En fait, il n’arrive pas à totalement ce fermer donc il reste ouvert et ne peux pas être déplacer pendant l’exécution!!
    Merdique mais personne n’a trouvé de solution (donc si tu peux m’aider ^^)

    Il te suffit de faire CTRL+ALT+SUPPR et de supprimer ‘RedBot.exe’ dans les processus!!

    Pour l’autre problème c’est très simple à comprendre, les conditions qui font comprendre des mots ne sont pas tout à fait bien car elle sont faite en sorte de reconnaitre des mots qui ressemble donc y a des confusions…

  12. En parlent du robot, j’ai réalisé une autre version un peut mieux qui utilise MySQL donc pas à la portée de tout le monde!

    Et sa, grâce à Greg ^^ qui m’a donné la base de ce dont j’avais besoin ;)

    Merci encore!!

  13. J’ai réussi à trouver une solution pour la fermeture plus ou moins correct, demande moi par mail l’application si sa t’intéresse ‘ROBOT Guyom’!

  14. J’ai refait le morceau de code pour la naissance du bot mais en une seule ligne car je préfère ^^

    Voici le fameux code (vue que tu as oublié la fonction qui faisait la différence) ::

    string DateNaissance = « J’ai  » + ((TimeSpan)(DateTime.Today – new DateTime(2007,07,01))).Days +  » jours ! »;

  15. Hello, j’aimerais savoir comment faire par exemple pour que mon bot envoi des infos de flux rss, ce qui serait utile pour moi :D.
    un truc du genre : !Site news

    et hop le bot affiche 5 news d’un lien rss d’un site prédéfinis dans la source du bot (ex : http://blabla.com/rss.xml, et le bot va chercher le texte dans le xml et les afficher sur msn).

    Bien évidemment je parle de fil Rss car ça mettrait à jour directement les infos, sans avoir à retoucher le bot.

  16. Greg /

    Je n’ai jamais utilisé de fonction pour lire des flux RSS mais tu trouvera surement de l’aide du côté de Csharp.fr qui regroupe des tas de sources toutes faîtes pour programmer en C# !
    Bonne chance mais ton idée est super intéressante, tiens nous au courant.

  17. Bien pensé, il y a deux solution et l’une est décrite par « Greg » :)

    L’autre serrait de décortiquer toi même le fichier RSS (je parle dans le code, comme sa c’est le bot qui le fait).

    Quand j’ai fait un programme pour télécharger les vidéos de Youtube, Dailymotion, Google Vidéo et pleins d’autres encore, j’ai fait le même système pour décortiquer les pages web afin d’en récupérer le lien important pour la suite du traitement!

    Enfin, je précise que sa prend énormément de travail!!

  18. Merci pour vos réponses. En effet ça serait très long de décortiqué tout le code (sachant que un flux d’un site n’est pas toujours conçu de la même manière), pour un site. Etant donné que je connais pas bcp le language C, je vais tenté par ci par la à le faire marcher. En tout cas je viens de testé votre bot, ajouter quelque code, ça marche impecable. Félicitation pour ce tuto ;)

  19. Je ne sais pas du quel tu parle mais si tu n’a pas testé mon bot (mode graphique) je te propose de le faire car certains préfèrent cette version. Enfin, chacun ses avantages et inconvénients!

    Demande l’inscription – et présentation conforme sur RedStation ::
    - http://forums.redstation.fr/viewtopic.php?t=270
    - http://www.csharpfr.com/code.aspx?ID=43517

    Dites moi ce que vous en pensés, et si vous avez des idées de fonctions à y rajouter :D

  20. eshin /

    Ha c’est donc ta source que j’ai vu :smile:
    Je vais tester ça ce week end. Il y a une base SQL et ça m’interesse. Quand tu dis graphique, c’est que ton bot affiche tout à la place d’avoir une fenêtre noire ?
    je m’inscris sur ton forum pour en savoir plus.

  21. eshin /

    J’ai testé plus vite que prévu à mon taf lol.
    Donc j’ai testé sans mysql, ça marche impec :razz:
    par contre ce que j’ai à moitié compris, c’est que il y a des checkbox à gauche des phrases. Si on les coches ç’est ça qui fait que le bot garde les phrases dans la BD ?, il sauvegarde du coup que la réponse en fonction de la question ? ou bien autre chose?

  22. Pour la question « graphique » c’est interface graphique et oui c’est comme cela que j’appel une application non dos!

    Pour les checkbox c’est le texte qui est sur la droite qui décrit celles-ci, les cases cochés au départ précises que tout est enregistré en BDD (seulement ce que dit l’interlocuteur du bot)

  23. hyume /

    escusez moi, moi j’ai un problème. pour l’age du robot
    il me dit que le GetDaysBetweenDates n’existe pas.

    que faire ?

  24. J’avais oublié de préciser qu’il faut déclarer ceci avant
    public void messageReceived :

    public int GetDaysBetweenDates(DateTime d1, DateTime d2)
    {
    return((TimeSpan)(d2 – d1)).Days;
    }

    Voilà ! :wink:

  25. Je l’ai déjà dit, la fonction n’était pas donné mais moi j’ai fait un condensé::

    string DateNaissance = “J’ai ” + ((TimeSpan)(DateTime.Today – new DateTime(2007,07,01))).Days + ” jours !”;

    session.send(« Je suis né ce jour là ::  » + DateNaissance);

  26. EDIT de juin 2010 : Ce tutoriel n’est plus à l’ordre du jour (écrit en 2007). Je le laisse en ligne à titre de mémoire et de découverte mais je ne pourrais en aucun cas fournir une aide quelconque quant au développement d’un bot MSN. Pour les gens vraiment désireux de réaliser un tel projet, je vous conseille de vous intéresser à DotMSN (une librairie C# qui permet d’utiliser la plus grande partie des fonctionnalités MSN en créant son propre client et donc son propre bot auto-hebergé). C’est largement plus intéressant que d’utiliser la plateforme Incesoft qui est très instable et désormais pleine de publicité. Merci de votre compréhension et bon courage à tous ! :wink: