Bon aller... Je me lance ! J'espère pouvoir faire au mieux, pouvoir décrire au mieux et s'il y a quelque chose que tu ne comprends pas, hésite vraiment pas à me demander. Pour information, je vais décrire les fonctionnalités dans l'ordre d'apparition de la PJ se trouvant dans mon autre post. Ainsi, si tu souhaites y jeter un coup d'oeil pour plus d'infos, tu pourras... Aussi, toutes les phrases "types" que je pourrais écrire après sont "brut". Malgré cela, j'aimerais après incorporer de la couleur histoire de rendre ça plus lisible.
Lorsque le bot se connecte, j'aimerais qu'il rajoute des "filtres" à SpamFilter. Le premier serait une détection de numéros de téléphones (Qu'il commence de 01 à 09) en salon comme en privé.
Le deuxième serait un filtre sur le(s) mot(s) "codes allopass" et "allopass" en salon comme en Privé.
Lorsqu'il y a détection de ces filtres, j'aimerais que le bot pose un Shun de 30 secondes sur les personnes ayant activé la détection et que, durant ces 30 secondes, leur host deviennent *@TempShun.* (au lieu de *@nom-du-serveur.reste-de-leur-host).
Lorsqu'une détection est faite, j'aimerais qu'il y est un écho sur un autre salon. Au niveau de la description, j'espère que tu comprends (avec plus ou moins d'aisance) le code mrc car tout expliquer serait assez compliquer et pas très clair. J'aimerais donc ceci :
Code :
;### GESTION DES SNOTICES
On *:SNOTICE:*:{
if (*Notice*--*tried*to*(*) iswm $1-) { msg %Opers 4[Tried]12 $5 2tried to3 $8 12Raison: $9- }
;### SPAMFILTER
;## SpamFilter "Allopass" Salon
if ([Spamfilter]*'allopass':*[PRIVMSG*#*:*'*']* iswm $1-) {
msg %Opers 5-4SpamFilter5-12 $2 2matches filter12 $gettok($5,1,58) 2sur3 $gettok($7,1,58) : $+(14[,$replace($8-,[Codes AlloPass],4[Codes AlloPass]))
msg %Opers 4Attention: SpamFilter entre le server et12 $2 4detecté ! 14(Message adressé sur $7 $left($right($left($8-,$pos($8-,'],1)),-1),-1) $+ )
halt
}
;## SpamFilter "Allopass" PV
if ([Spamfilter]*'allopass':*[PRIVMSG*:*'*']* iswm $1- && [Spamfilter]*[PRIVMSG*#*:*'*']* !iswm $1-) {
msg %Opers 5-4SpamFilter5-12 $2 2matches filter12 $gettok($5,1,58) 2avec3 $gettok($7,1,58) : $+(14[,$replace($8-,[Codes AlloPass],4[Codes AlloPass]))
.timer 1 4 shun $+(-,$gettok($2,1,33))
.timer 1 1 msg %Opers 4Attention: Shun temporaire du server sur12 $2 4retiré ! 14(Message adressé à $7 $left($right($left($8-,$pos($8-,'],1)),-1),-1) $+ )
if ($left($7,-1) ison %Staff) {
notice $left($7,-1) Tips 3 4Attention, le message de $gettok($2,1,33) a été filtré, voici son contenu:
notice $left($7,-1) Tips 7 14 $left($right($left($8-,$pos($8-,'],1)),-1),-1)
}
halt
}
;## SpamFilter TEL PV
if (*[Spamfilter]*!*@*matches*filter*'\b0[0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9]\b':*[PRIVMSG*:*'*']*[Tel] iswm $1- && *[Spamfilter]*!*@*matches*filter*'\b0[0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9]\b':*[PRIVMSG*#*:*'*']*[Tel] !iswm $1-) {
msg %Opers 5-4SpamFilter5-12 $2 2matches filter12 $5 $+(2,$6) $7 $+(14,$replace($8-,[Tel],4[Tel],'],14'2]))
msg %Opers 4Attention: SpamFilter entre le server et12 $2 4detecté ! 14(Message adressé sur $7 $left($right($left($8-,$pos($8-,'],1)),-1),-1) $+ )
if ($left($7,-1) ison %Staff) {
notice $left($7,-1) Tips 3 4Attention, le message de $gettok($2,1,33) a été filtré, voici son contenu:
notice $left($7,-1) Tips 7 14 $left($right($left($8-,$pos($8-,'],1)),-1),-1)
}
halt
}
;## SpamFilter TEL TOPIC
if (*[Spamfilter]*!*@*matches*filter*'\b0[0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9]\b':*[TOPIC*#*:*'*']*[Tel] iswm $1-) {
msg %Opers 5-4SpamFilter5-12 $2 2matches filter12 $5 $+(2,$6) $7 $+(14,$replace($8-,[Tel],4[Tel],'],14'2]))
halt
}
;## SpamFilter TEL CHAN
if (*[Spamfilter]*!*@*matches*filter*'\b0[0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9].?[0-9][0-9]\b':*[PRIVMSG*#*:*'*']*[Tel] iswm $1-) {
msg %Opers 5-4SpamFilter5-12 $2 2matches filter12 $5 $+(2,$6) $7 $+(14,$replace($8-,[Tel],4[Tel],'],14'2]))
.timer 1 1 shun $+(-,$gettok($2,1,33))
.timer 1 1 msg %Opers 4Attention: Shun temporaire du server sur12 $2 4retiré ! 14(Message adressé à $7 $left($right($left($8-,$pos($8-,'],1)),-1),-1) $+ )
halt
}
J'aimerais également que le bot puisse poser des Shun au bout de X kicks et que, par derrière, le host de la personne soit modifier en *@TempShun.* comme écrit plus haut. Le Shun aurait aussi une durée de 20 minutes. Lorsque cela arrive, j'aimerais qu'il y est un écho sur un autre salon. Cet écho serait du style :
Citation :[TempShun] Le serveur a TempShun <nick> (ident@host) Raison : <raison>
Par ailleurs, j'aimerais aussi que le bot fasse un écho sur un salon lorsque une personne ayant au moins le grade IRCop pose un Shun sur une personne. Egalement, je souhaiterais que le host de la personne soit changé en *@TempShun.* L'écho serait alors :
Citation :[TempShun] <IRCop> a TempShun <nick> (ident@host) Raison : <raison>
Pour finir, j'aimerais que, une personne qui n'a pas forcément d'accès IRCop MAIS qui a un pseudo enregistré sur NickServ puisse retirer un TempShun qui aurait été posé par le bot (Imaginons que je kick la mauvaise personne, celle ci est TempShun je dois retiré le Shun) la commande serait /msg Bot untempshun <nick> Et ainsi, le bot retirerais le Shun qui a été posé, il rechangerait le host de la personne pour lui remettre son host d'origine et il y aurait un écho sur un salon qui serait :
Citation :[TempShun] Le TempShun sur <nick> (ident@host) a été retiré par <pseudo-qui-le-retire> Raison : <raison>
Si c'est un Shun qui a expiré suite au 20 minutes, on garde exactement le même principe que cité au dessus et l'écho serait :
Citation :[TempShun] Le TempShun sur <nick> (ident@host) a été retiré automatiquement Raison : <raison>
Pour terminer sur les Shuns, j'aimerais qu'il y est un autre échos sur un autre salon. Lorsqu'un Shun est posé l'écho serait :
Citation :[Shun] Shun Permanent ajouté sur <nick> (ident@host) par <Personne-qui-a-ajouté-le-Shun> Raison : <raison>
Quand il serait retiré avant la fin de la durée l'écho serait :
Citation :[Shun] Shun sur <nick> (ident@host) retiré par <personne-qui-retire-le-Shun> Raison: <raison>
Et quand le Shun serait expiré et retiré automatiquement :
Citation :[Shun] Shun sur <nick> (ident@host) mis par <pseudo-ayant-posé-le-Shun> a été retiré automatiquement Raison : <raison>
Lorsqu'un IRCop fait la commande /oper et que celui ci se trompe, j'aimerais qu'il s'affiche sur un salon un écho qui serait :
Citation :[Oper] Failed Oper by <nick> (ident@host)
Lorsqu'une personne utilise les commandes SA (Mode|Join|Part), j'aimerais qu'il y est un écho sur un salon qui serait dans l'ordre :
Citation :[Samode] <nick-faisant-samode> sur #Salon : <mode-posés-ou-retiré>
[Sajoin] <nick-faisant-le-sajoin> a sajoin <nick-subissant-le-sajoin> sur #Salon
[Sapart] <nick-faisant-le-sapart> a sapart <nick-subissant-le-sapart> de #Salon
Lorsqu'une personne change le Host|Ident|Name d'une personne, j'aimerais qu'il y est un écho sur un salon qui serait dans l'ordre :
Citation :[CHGHOST] <nick-qui-change-le-host> a changé l'host de <nick-subissant-le-changement-de-host> en <nouveau-host>
[CHGIDENT] <nick-qui-change-l-ident> a changé l'ident de <nick-subissant-le-changement-d-ident> en <nouveau-ident>
[CHGNAME] <nick-qui-change-le-fullname> a changé le fullname de<nick-subissant-le-changement-de-fullname> en <nouveau-fullname>
Quand une personne est kill, j'aimerais que le bot fasse un écho sur un salon qui serait :
Citation :[Kill] <personne-qui-a-été-kill> par <personne-qui-a-killé> Raison : <raison-du-kill>
Toujours sur le même principe, lorsqu'une personne est KLine|GLine|ZLine|GZLine j'aimerais qu'il y est en écho sur un salon :
Citation :[K:Line] K:Line ajouté sur <personne-KLine> par <personne-ayant-posé-le-KLine> Raison : <raison-du-KLine> Expire le : <date-d-expiration>
[K:Line] K:Line sur <personne-KLine> a été retiré par <personne-ayant-retiré-le-KLine> Raison : <raison-du-KLine>
[K:Line] K:Line ajouté sur <personne-KLine> par <personne-ayant-posé-le-KLine> a été retiré automatiquement Raison : <raison-du-KLine>
[G:Line] G:Line ajouté sur <personne-GLine> par <personne-ayant-posé-le-GLine> Raison : <raison-du-GLine> Expire le : <date-d-expiration>
[G:Line] G:Line sur <personne-GLine> a été retiré par <personne-ayant-retiré-le-GLine> Raison : <raison-du-GLine>
[G:Line] G:Line ajouté sur <personne-GLine> par <personne-ayant-posé-le-GLine> a été retiré automatiquement Raison : <raison-du-GLine>
[Z:Line] Z:Line ajouté sur <personne-ZLine> par <personne-ayant-posé-le-ZLine> Raison : <raison-du-ZLine> Expire le : <date-d-expiration>
[Z:Line] Z:Line sur <personne-ZLine> a été retiré par <personne-ayant-retiré-le-ZLine> Raison : <raison-du-ZLine>
[Z:Line] Z:Line ajouté sur <personne-ZLine> par <personne-ayant-posé-le-ZLine> a été retiré automatiquement Raison : <raison-du-ZLine>
[Global Z:Line] Global Z:Line ajouté sur <personne-GZLine> par <personne-ayant-posé-le-GZLine> Raison : <raison-du-GZLine> Expire le : <date-d-expiration>
[Global Z:Line] Global Z:Line sur <personne-GZLine> a été retiré par <personne-ayant-posé-le-GZLine> Raison : <raison-du-GZLine>
[Global Z:Line] Global Z:Line ajouté sur <personne-GZLine> par <personne-ayant-posé-le-GZLine> a été retiré automatiquement Raison : <raison-du-GZLine>
Une partie du code que je ne saurais concrètement expliqué mais qui je pense est importante aussi pour la création d'un TCL :
Code :
;### Raws obligatoire avec:
;## $2 retourne logiquement le pseudo au préalable /whois.
raw 311:*:{
if (%Need_Untempshun. [ $+ [ $2 ] ]) {
chghost $2 $+(NerdHerd,-,$right($4,-9))
halt
}
if (%Need_tempshun. [ $+ [ $2 ] ]) {
if (NerdHerd-* iswm $4) chghost $2 $+(TempShun.,$right($4,-10))
if (*.IP iswm $4) chghost $2 $+(TempShun.,$4)
halt
}
}
raw 312:*:{
if (%Need_Untempshun. [ $+ [ $2 ] ]) halt
if (%Need_tempshun. [ $+ [ $2 ] ]) { halt }
}
raw 317:*:{
if (%Need_Untempshun. [ $+ [ $2 ] ]) halt
if (%Need_tempshun. [ $+ [ $2 ] ]) { halt }
}
raw 319:*:{
if (%Need_Untempshun. [ $+ [ $2 ] ]) halt
if (%Need_tempshun. [ $+ [ $2 ] ]) { halt }
}
raw 318:*:{
if (%Need_Untempshun. [ $+ [ $2 ] ]) { unset %Need_Untempshun. [ $+ [ $2 ] ] | halt }
if (%Need_tempshun. [ $+ [ $2 ] ]) { unset %Need_tempshun. [ $+ [ $2 ] ] | halt }
}
Si une personne ayant un pseudo enregistré sur NickServ tape
Citation :!ghost
Sur un salon spécifique, le bot kill le pseudo "fantome" qui est toujours connecté.
Quand une personne ayant un pseudo enregistré sur NickServ tape :
Citation :!ops
sur un salon spécifique, la personne reçoit en notice ceci :
Citation :[ Channel (Total Users) | Total Operators | Operators ]
[ #Salon1 (xxx) | <nb-personne-+o-sur-#Salon1> | <pseudo-des-personnes-+o-sur-#Salon1 ]
etc etc
Chaque salon qui est affiché correspond à un salon officiel et le bot lui même ne doit pas apparaitre dans la liste des personnes étant +o sur le dit salon. S'il n'y a aucune personne +o, alors il s'affichera :
Citation :Pas d'ops
Malgré tout, ce n'est pas pour autant tous les salons enregistrés sur ChanServ. Exemple : Les salon #S1 #S2 #S3 #S4 sont enregistrés sur ChanServ mais uniquement #S1 et #S4 sont des salons officiels et donc uniquement eux s'afficheront lors d'un " !ops "
A partir de la ligne 310, j'espère aussi que tu comprendras car c'est très long de tout écrire précisément et tu risquerais de pas comprendre car je doute être très clair sur le sujet. Par conséquent, je préférerais que tu regardes. Bien entendu, si tu ne comprends pas je ferais de mon mieux pour tout expliquer. Ca démarre ligne 310 et fini ligne 430.
Code :
;########### OP DEOP ##########
On *:PART:%ChannelsOff:{
if ($nick isop $chan || $nick ishop $chan) {
.
.
if (irc.nerdherd.fr == $1) return 10(Services)
if (Services.nerdherd.fr == $1) return 10(Services)
else { return 10(NO_ID) }
}
Je m'arrête là car rien qu'avec tout ça je pense que tu vas pas tout comprendre...
Pour toutes les âmes charitables qui souhaiteraient nous aider, je vous en remercie énormément d'avance !!
En PJ se trouve le code "source" en .mrc que j'aimerais traduire en .tcl afin que je puisse le rajouter dans mon eggdrop. Le sujet se trouve ici =>>
http://forum.eggdrop.fr/Creation-de-scri...-1329.html <<=
Un très très gros merci d'avance !
** EDIT **
Ce qui pourrait peut être t'aider c'est de venir sur le serveur afin de voir par toi même les fonctionnalités actuelles du bot et ça t'aiderais peut être...
Quand une personne ayant un pseudo enregistré sur NickServ tape
Citation :/joinpref
Le bot fait "sajoin" la personne sur les salons favoris que la personne a choisi.