Utilisateur:TildeBot
Je ne suis pas un faux-nez, mais un bot dressé par Alphos.
Rendez-vous sur sa page de discussion pour discuter de TildeBot (ou d'autre chose si ça vous chante ) avec lui.
Attention, je vous observe ! Je réfléchis beaucoup plus que vous et risque la surchauffe cérébrale. |
Fonctions
[modifier | modifier le code]Signatures oubliées
[modifier | modifier le code]Je vérifie toutes les modifications effectuées sur des pages de discussion, puis après un laps de temps d'au moins deux minutes, si l'utilisateur ayant effectué la dernière modification sur cette page n'a pas encore apposé de signature alors qu'il en fallait une (et que personne n'est passé derrière lui), j'en appose une pour lui, à moins qu'il ait spécifiquement demandé de ne pas en ajouter.
Au bout de quelques signatures oubliées en 24 heures glissantes par un même utilisateur, le bot placera aussi un message sur sa page de discussion.
La détection des signatures est pour le moment limitée au format suivant, qui couvre cependant une extrême majorité des signatures :
[[Lien vers PU]] ( [[Lien vers contribs]] )
{ [[Lien vers PdD]] ou [[Lien vers mail]] }
éventuellement suivi d'un lien vers les contributions,
le tout suivi soit d'un lien vers la PdD ou la fonction d'envoi de courrier ;
les liens supplémentaires avant ou après ce motif ne rentrent pas en compte dans la reconnaissance.
Les liens vers les sous-PU et les sous-PdD sont reconnus de la même manière que les liens ;
toutes les combinaisons (liens iw, il, sous-pages pour PU et PdD, ...) sont permises et reconnues
Les liens interwikis et interprojets sont permis et parfaitement reconnus ;
les liens de la forme [[Image:image.jpg|<taille>|link=<lien vers la page>]] sont permis et parfaitement reconnus aussi ;
les liens doivent être séparés les uns des autres d'au plus 50 caractères.
[[Lien vers contribs]] [[Lien vers PdD]]
les liens supplémentaires avant ou après ce motif ne rentrent pas en compte dans la reconnaissance.
Les liens interwikis et interprojets sont permis et parfaitement reconnus ;
les liens de la forme [[Image:image.jpg|<taille>|link=<lien vers la page>]] sont permis et parfaitement reconnus aussi ;
les liens doivent être séparés les uns des autres d'au plus 50 caractères indifférents (modèles, wikicode, html, etc...).
Le pseudonyme du contributeur est pris en compte dans les liens internes formant la signature, mais il peut l'être sous plusieurs de ses formes :
- sous sa forme la plus simple, à savoir celle choisie lors de l'inscription ;
- avec les espaces remplacées par des underscores _ ;
- sous sa forme la plus simple URLencodée.
La première lettre peut être majuscule ou minuscule avant l'éventuel encodage sans modifier la reconnaissance. Les autres lettres doivent correspondre au pseudonyme du contributeur, exactement comme le fait MediaWiki.
Les liens dans leurs versions française, anglaise, ou allemande, sont reconnus.
"Et si je ne veux pas qu'il passe derrière moi ?"
[modifier | modifier le code]Ajoutez simplement !nosign!
dans le commentaire d'une de vos modifications successives sur cette page, promis je toucherai à rien !
Si vous êtes enregistré, vous pouvez aussi modifier cette option de manière "permanente" dans vos options pour TildeBot, accessibles ici.
Cas des pages de discussion d'utilisateurs enregistrés
[modifier | modifier le code]Pour ceux d'entre vous ne souhaitant pas que je touche à leur page de discussion lorsqu'un oublieux passe, ne vous inquiétez pas non plus, je sais faire aussi.
Notez bien que si vous oubliez vous-même d'apposer une signature plusieurs fois en 24 heures et que je dois donc vous envoyer un message, ce n'est pas cette option qui est prise en compte.
Pages avec des "prérequis"
[modifier | modifier le code]Je fais là référence à celles nécessitant des participants d'être inscrits depuis une durée déterminée et/ou d'avoir un nombre de contributions suffisant.
Eh bien ça aussi je sais faire. Je vérifie à chaque page ayant ces caractéristiques[1] que l'utilisateur s'il est enregistré a assez de contributions dans l'espace principal, et qu'il s'est inscrit depuis suffisamment longtemps.
Si ce n'est pas le cas, j'ajoute un modèle correspondant après le message que le "débutant" a ajouté ; je ne le fais cependant pas dans le cas des PàS où le débutant est l'auteur de la page proposée à la suppression.
Sur les pages trop anciennes (ouverte depuis plus longtemps {que leur durée de traitement normale + 50% avec un minimum de 15 jours, soit 2 semaines et 1 jour}), pour simplifier celles dont la procédure a été rouverte, cette fonction se désactive toute seule.
Indentation
[modifier | modifier le code]Enfin, si je passe derrière un utilisateur - que ce soit pour ajouter sa signature ou signer son manque de contributions ou sa durée de participation trop courte -, je peux aussi me charger de corriger l'indentation (celle qu'on ajoute avec *#:) que cet utilisateur a oubliée.
Je ne le fais cependant pas si ce doit être ma seule modification sur la page.
Anatomo-pathologie
[modifier | modifier le code]Anatomie
[modifier | modifier le code]Alphos m'a conçu en PHP, en utilisant :
- deux classes ou paquets libres :
- une fonction PHP libre :
- deux utilitaires *NIX qui lancent et/ou vérifient l'état des trois pôles listés plus bas :
- cron
- start-stop-daemon, lancé lui-même via cron
Je fonctionne en plusieurs pôles, chacun ayant sa fonction bien à lui :
- un pôle lancé toutes les quelques minutes vérifie que je suis bien connecté. Sinon, il me reconnecte.
- un pôle tournant en permanence récupère les modifications récentes. Lui n'a pas besoin d'être connecté, vu qu'il n'en récupèrera sans doute jamais plus de 500 en un coup (ce qui est la limite sans le botflag), et qu'il ne fait aucune modification
- un pôle tournant en permanence prend alors en charge avec un délai de 2 minutes ce que le pôle 2 lui transmet, et effectue éventuellement les modifications s'avérant nécessaires. C'est aussi ce pôle qui vérifie qu'on a pas demandé d'arrêt d'urgence, et ce avant chaque modification
"C'est très bien tout ça, mais pour le code source ?"
[modifier | modifier le code]Pour l'instant, il n'est pas public.
Il le deviendra cependant prochainement, après quelques semaines de "tests secondaires"[3] et de corrections de bugs auxquels mon dresseur n'aurait pas pensé pendant le développement.
Pathologie
[modifier | modifier le code]Bon, je l'avoue, les bugs ça arrive, et il se peut que mon dresseur et les quelques testeurs ne les aient pas tous trouvés. Eh oui, je débute moi aussi...
Pour signaler un bug, merci de passer par la page idoine, en utilisant le modèle adapté, {{:Utilisateur:TildeBot/Sugg}}.
Pour voir si je fonctionne correctement, vous pouvez le vérifier sur cette page. Elle donne aussi quelques informations sur mon fonctionnement actuel, en particulier sur la taille de ma base de données.
Pathologie sévère
[modifier | modifier le code]Si je ne fais vraiment que des bêtises, un bouton d'arrêt d'urgence permet de m'arrêter rapidement et "définitivement", jusqu'à ce qu'on me relance avec l'autorisation de repartir (et seulement dans ce cas). Cette fonction n'est accessible qu'aux administrateurs et à mon dresseur : vous pouvez essayer de l'employer si ça vous chante, mais je n'en tiendrai aucun compte si vous n'êtes pas admin ou Alphos.
En cas d'arrêt d'urgence, tous mes processus sont arrêtés, je ne récupère même pas de RC, rien de rien de rien.
Changelog
[modifier | modifier le code]Problème rencontré, suggestion proposée |
État | Date corr. |
Solution apportée |
---|---|---|---|
Les réverts n'étaient pas considérés comme tels | Bug | - | Les chaînes "Annulation", "Révocation", "LiveRC" s'ajoutent à la liste des exclusions d'intervention, où qu'elles soient dans le commentaire de modification de n'importe laquelle des modifications d'un même contributeur sur une même page. |
La demande d'arrêt d'urgence ne fonctionnait pas | Bug | - | Une URL de requête à l'API n'était pas la bonne, rcprop au lieu de rvprop, du coup il ne recevait pas le contenu de sa page d'arrêt d'urgence, qu'il vérifie de toutes façons avant chaque édition. |
Des sauts de ligne excédentaires apparaissaient entre chaque ligne ajoutée | Bug | 26 sept. 2009 | Mauvaise définition du tableau de travail, le bot ajoutait une entrée au lieu de modifier la dernière ; comportement réparé en modifiant le mode de récupération de la dernière clé du tableau en question ; end() et array_keys() au lieu de count() |
Certains modèles d'évaluation n'étaient pas correctement reconnus | Bug | 26 sept. 2009 | Problème d'encodage (UTF-8) résolu en utilisant les fonctions mb_* plutôt que les fonctions *str* où ce problème jouait. |
Les lignes modifiées voyaient leur indentation altérée | Bug | 26 sept. 2009 | Oubli du cas des modifications de lignes dans les exclusions de la correction d'indentation (qui s'intéressait pour l'instant aux tags <pre>, <div>, <source>, <syntaxhighlight>, aux nouvelles sections, et aux modèles d'évaluation). |
N'importe qui pouvait éditer la page de config personnelle de quelqu'un d'autre | Sugg. | 28 sept. 2009 | Vérification du nom de l'éditeur de la dernière version, si ce n'est pas le bon on vérifie la version précédente, etc... |
Ajout d'un historique | Sugg. | 28 sept. 2009 | Les édits "fautifs" étant de toutes façons listés, autant en profiter, pour ceux qui le demandent, à recevoir un historique de leurs oublis : bout de code ajouté, n'est actif que si la personne en fait la demande dans sa propre page de config. |
Les contributeurs enregistrés étaient traités comme non enregistrés, et vice-versa | Bug | 30 sept. 2009 | Correction d'un appel à filter_var() lors de son implémentation, problème de "simple/double négation" ; le bot détectait si l'éditeur était une IP, mais recevait un true au lieu d'un false et vice-versa.
|
Les sauts de ligne étaient complètement supprimés dans les messages contenant des tags, notamment pre , span , etc...
|
Bug | 1er oct. 2009 | Mauvaise conception de la fonction xml2array(), qui supprimait purement et simplement tous les sauts de lignes autour de ce qui pouvait ressembler à un élément xml. Plus précisément, c'est l'emploi de xml_parser_set_option() pour régler XML_OPTION_SKIP_WHITE à 1 qui était en cause.
|
Lorsqu'une signature était apposée sur une nouvelle page, elle n'était précédée ni d'un espace blanc ni d'une nouvelle ligne. | Bug | 1er oct. 2009 | Problème de copier-coller, l'ajout de signature était en toute logique fait de la même manière mais aussi avec les mêmes variables, qui n'étaient pas employées dans la situation "nouvelle page". |
Les signalements de contributions insuffisantes ou de durées d'inscriptions trop courtes s'ajoutaient au début des pages | Bug | 5 oct. 2009 | La condition d'ajout de ces "modèles" se basait sur l'existence d'un array temporaire non vide, qui n'existait pas au début du traitement de chaque diff. |
Ajout d'une commande de reboot et d'une page de surveillance de l'état de fonctionnement du bot | Sugg. | 6 oct. 2009 | La page d'arrêt d'urgence permet aussi de demander un redémarrage du bot (une fois qu'il sera lancé via cron) ; création d'une page de surveillance du fonctionnement de TildeBot sur le serveur qui l'héberge. |
Les pseudos comportant des caractères spéciaux pour les regex PCRE n'étaient pas correctement reconnus | Bug | 9 oct. 2009 | Utilisation de preg_quote() dans la fonction chargée de créer les modèles d'expressions régulières. |
Les pages avec un nombre minimum de contributions étaient toujours marquées d'un signe de manque de contributions | Bug | 9 oct. 2009 | Le nombre de contributions dans l'espace de nom principal était celui avant la date d'inscription... donc évidemment nul... Achevez le dresseur, il fatigue ! |
Les pages de procédure (PàS, AdQ, etc...) "rouvertes" conservaient leur "ancienne" date de création, ce qui pouvait fausser le comptage des contributions et la durée d'inscription | Bug | 10 oct. 2009 | Lorsqu'une page modifiée a été créée il y a plus de {durée minimum d'inscription + 50%} (avec un minimum de 15 jours[4]), on ne rajoute pas les modèles de durée d'inscription trop courte ou de contributions insuffisantes. Correction 25 oct. 2009 : Dans ce genre de cas, le comptage se fait à partir de l'édition plutôt que la création de la page |
Les lignes modifiées suivies de lignes ajoutées empêchaient le traitement de ces dernières | Bug | 10 oct. 2009 | Une condition empêchait la récupération des lignes suivantes lorsqu'une ligne était modifiée, ajout d'une exception... note pour moi-même : ne jamais retoucher à un bout de code qui marche ! |
Reconnaissance des signatures utilisant [[Image:image.svg|link=<lien vers PU/PdD/contribs>]] | Sugg. | 12 oct. 2009 | Refonte de la regex de reconnaissance des signatures, qui atteint désormais le chiffre majestueux de 8734 caractères inchangeables de base + 18 fois la longueur du pseudo + 18 fois le nombre de métacatactères PCRE dans le pseudo + 6 fois le nombre de caractères spéciaux dans le pseudo + 9 fois le nombre de caractères accentués dans le pseudo, on va dire que c'est une belle bête |
Reconnaissance des modèles de signature | Sugg. | 14 oct. 2009 | Ajout d'un bout de code chargé de les reconnaître. Les signatures incluses par ce moyen suivent les mêmes règles qu'en temps normal, que ce soit celles ajoutées par les utilisateurs ou celles ajoutées par le bot[5]. Update 25 octobre 2009 : J'aurais mieux fait de tester... petit souci de reconnaissance des modèles, il faisait correspondre la regex avec ... le nom du modèle >_> |
Bot "mort" au passage à l'heure d'hiver | Bug | 25 oct. 2009 | L'API passe à l'heure d'hiver lui aussi... Le bot cherchait des RC dans l'avenir, ça risquait pas de marcher |
Les messages déplacés étaient considérés comme des messages ajoutés | Bug | 18 févr. 2010 | Le bot n'interviendra pas si un commentaire contient "avis" ou "déplac", faute d'un moyen simple pour reconnaître les déplacements de messages (qui peuvent regrouper divers messages, etc...) |
Sur les votes "rouverts", le bot indiquait des nombres négatifs comme minimum de contributions | Bug | 18 févr. 2010 | C'était dû au moyen de traitement des réouvertures de PàS, le passage de l'information "réouverture" se faisant d'un module à l'autre en utilisant des valeurs négatives. Le reste du fonctionnement n'était pas altéré |
Le bot intervenait pour signaler un manque de contributions pour les dresseurs de bots sur Wikipédia:Bot/Statut | Bug | 18 févr. 2010 | Pour le moment, le bot ne tient plus compte du minimum de contributions sur cette page |
Suggestions et bugs
[modifier | modifier le code]Proposant(e)(s), date | Suggestion/Bug | Statut Accepté Discussion En cours Fait déjà réGlé Refusé |
---|---|---|
El ComandanteHasta ∞ 10 octobre 2009 à 18:22 (CEST) | Plusieurs problèmes avec l'ajout automatique des signatures détectées comme manquantes :
Ça fait beaucoup de problèmes, quand même, pour solutionner un problème à la base somme toute assez mineur... Du coup, cette fonction de ce bot ne me semble pas utile, car trop inefficace : il a l'air de créer plus de problèmes qu'il n'en solutionne. Déjà réglé :
|
G |
Proposant(e)(s), date | Suggestion/Bug | Statut Accepté Discussion En cours Fait déjà réGlé Refusé |
Vous pouvez ajouter vos suggestions ou signaler des bugs en ajoutant à cette page le modèle {{:Utilisateur:TildeBot/Sugg}}[6].
Notes
[modifier | modifier le code]- parmi celles que mon dresseur et Coyau (d · c · b) ont relevées, la liste complète est disponible ici.
- SimpleXML semble plus lent que cette fonction et un code l'utilisant aurait été plus lourd et moins rapide...
- J'ai déjà été lourdement testé à tous mes niveaux, certes sans modifications effectuées sur Wikipédia, mais avec des "résultats" (plus précis que de simples modifications sur WP) enregistrés localement ; mais rien ne vaudra des tests en grandeur réelle où vous cherchez à me mettre dans l'embarras ^^
- ... ce qui m'a semblé un délai honnête entre l'ouverture d'une procédure et sa réouverture Ce minimum de 15 jours (2 semaines et 1 jour) s'avèrera je pense utile pour les PàS qui peuvent parfois durer plus qu'une semaine
- notez bien que dans ce second cas, la signature ainsi incluse ne peut pas elle-même contenir de modèle : si c'était le cas, la signature par défaut serait ajoutée
- Merci d'utiliser le titre absolu de la page à inclure et pas un chemin relatif comme {{../Sugg}} afin d'éviter les problèmes associés aux chemins relatifs sur la page utilisateur du bot où ce tableau est inclus.