Wgard, robot mirc en sockets, un seul mirc

Soyez le premier à donner votre avis sur cette source.

Vue 11 441 fois - Téléchargée 669 fois

Description

Ce robot gere vos salons avec des utilisateurs et tout le tralala :p Voici quelques commandes: op, deop, voice, devoice
topic, kick, ban, invite, deftopic, unban, adduser, deluser, join, part etc...

Cette version est écrite totalement en socket
Vous n'avez donc pas besoin d'ouvrir un deuxieme mirc

Pour ceux qui ne comprennent pas comment l'installer:
Collez Wgard.mrc dans le repertoire de votre script
Ensuite dans votre script tapper /load -rs wgards.mrc

Ensuite pour démarrer le robot: tapper /wgard

JE VAIS LE RÉECRIRE POUR TOUT OPTIMISER TRÈS BIENTOT...

A venir: Gestion de comptes utilisateurs avec mots de passes, Gestions indépendantes de tout les salons, Plus de commandes, Gestion completes de salons avec messages de bienvenues differents pour chacuns, etc, etc...

Source / Exemple :


;WGard 1.3 Sockect par webdo
;Merci de ne pas modifier

On *:load:{
  remove commandes.txt
  Write Commandes.txt Voici la liste des commandes... Des que vous aurez configurer le robot vous aurez le niveaux 1000
  Write Commandes.txt Commandes sur les canaux (!help <commande> (ex: !help !topic) pour de l'info sur celle-ci)
  Write Commandes.txt Niveau 0-99: !wGard
  Write Commandes.txt Niveau 100-199: !op, !deop , !voice , !devoice 
  Write Commandes.txt Niveau 200-299: !topic , !kick 
  Write Commandes.txt Niveau 300-399: !ban
  Write Commandes.txt Niveau 400-499: !unban , !adduser , !deluser 
  Write Commandes.txt Niveau 500-1000: !join , !part
  echo -a 4,1 WGard::: ROBOT MIRC EN SOCKET Version 1.3
  echo -a 12,15 WGard à bien été charger a votre script ;)
  echo -a 12,15 Pour l'ouvrir tapper /wgard ou vous pouvez ouvrir par le menu du haut (pres de Tools)
  echo -a 2,15 Vous pouvez telecharger les MaJ pour ce robot ici: http://www.ircfr.com/code.aspx?ID=41844
  echo -a 2,15 Je vais essayer d'ajouter regulierement de nouvelles commandes
  echo -a 2,15 Pour tout comentaires: info@extrem-s.com
}

menu menubar {
  WGard SocketBOT:
  .Start Wgard:/wgard
  .Stop Wgard:/sockclose wGard | echo 2,15 Wgard arreter
  .-
  .Liste des commandes:/run Commandes.txt
  .-
  .Configuration
  ..Serveur:/set %serveur $$?="Entrez le serveur auquel vous desirer connecter le robot"
  ..Clé Voila:/set %clevoila $$?="Entrez la clé à utiliser sur le serveur Voila (Autrement laissez vide)"
  ..Port:/set %port $$?="Entrez le port du serveur auquel vous voulez vous connecter( 6667 par defaut)"
  ..Salon à Auto-Joindre:/set %chan1 $$?="Entrez le salon que vous voulez auto-joindre (avec le #)"
  ..Pseudo du robot:/set %nickbot $$?="Entrez le pseudo desirer pour le robot"
  ..Votre pseudo:/set %owner $$?="Entrez votre pseudo" | writeini -n levels.ini levels %owner 1000
  .-
  .Joindre un salon:/sockwrite -n wGard JOIN $$?="Quel salon? (avec le #)" 
  .Quitter un salon:/sockwrite -n wGard PART $$?="Quel salon? (avec le #)"
}

alias wgard {
  window -ae @wGard
  sockclose wGard
  if (!%serveur) set %serveur $$?="Entrez le serveur auquel vous desirer connecter le robot"
  if (!%port) set %port $$?="Entrez le port du serveur auquel vous voulez vous connecter (6667 par defaut)"
  if (!%nickbot) set %nickbot $$?="Entrez le pseudo desirer pour le robot"
  if (!%chan1) set %chan1 $$?="Entrez le salon que vous voulez autojoindre (avec le #)"
  if (!%owner) set %owner $$?="Entrez votre pseudo" | writeini -n levels.ini levels %owner 1000
  sockopen wGard %serveur %port
  echo @wGard 2,15WGard: Démarrage de la connection à %serveur
  echo @wGard 2,15WGard: Connexion en cours... Veuillez patienter
}

;connexion

on *:sockopen:wGard:{
  if ($sockerr) { echo @wGard Erreur ,vous avez été deconecter | return }
  sockwrite -n wGard PASS %clevoila
  sockwrite -n wGard NICK %nickbot
  sockwrite -n wGard USER sdb sdb sdb :wGardSocket 1.3
  timer.JOIN1 1 10 sockwrite -n wGard JOIN %chan1 
  timer.JOIN2 1 10 echo @wgard 2,15WGard: Je vais joindre le salon %chan1
}

on *:sockread:wGard:{
  sockread %a 
  set %mid $mid(%a,$calc($pos(%a,$chr(58),1) + 1),$calc($pos(%a,$chr(33),1) - $pos(%a,$chr(58),1) - 1))
  set %1 $gettok(%a,1,32)
  set %2 $gettok(%a,2,32)
  set %3 $gettok(%a,3,32)
  set %4 $gettok(%a,4,32)
  set %5 $gettok(%a,5,32)
  set %6 $gettok(%a,6,32)

  if (%1 == PING) {
    sockwrite -n wGard PONG $remove(%2,:)
    Echo @wGard 12,15 $server Vous PING
    Echo @wGard 12,15Envoie de PONG à $server pour maitenir la connection
  }

  elseif (%4 == :Welcome) { echo @wGard 2,15WGard: je suis maitenant connecter sur $server }
  ;Les commandes

  elseif (%4 == :!op) { 
    if ($readini(levels.ini,n,levels,%mid) >= 100) { sockwrite -n wGard mode %3 +oooooooo  $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!deop) { 
    if ($readini(levels.ini,n,levels,%mid) >= 100) { sockwrite -n wGard mode %3 -oooooooo $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!voice) { 
    if ($readini(levels.ini,n,levels,%mid >= 100) { sockwrite -n wGard mode %3 +vvvvvvvv $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!devoice) { 
    if ($readini(levels.ini,n,levels,%mid >= 100) { sockwrite -n wGard mode %3 -vvvvvvvvv $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!wGard) { sockwrite -n wGard notice %mid 2,15 WGard_Bot ( wGard ) v1.0 SoCkEt Par Webdo | sockwrite -n wGard  notice %mid 2,15 Merci à GaberZ pour ses idées et pour avoir tester ce robot
  } 
  elseif (%4 == :!topic) { 
    if ($readini(levels.ini,n,levels,%mid >= 200) { sockwrite -n wGard Topic %3 $gettok(%a,5-,32) }
  } 
  elseif (%4 == :!kick) { 
    if ($readini(levels.ini,n,levels,%mid >= 200) { sockwrite -n wGard kick %3 $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!ban) { 
    if ($readini(levels.ini,n,levels,%mid >= 300) { sockwrite -n wGard mode %3 +bbb $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!unban) { 
    if ($readini(levels.ini,n,levels,%mid >= 400) { sockwrite -n wGard mode %3 -bbb $iif(%5,%5,%mid)  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }

  elseif (%4 == :!join) { 
    if ($readini(levels.ini,n,levels,%mid >= 1000) { sockwrite -n wGard join %5  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!part) { 
    if ($readini(levels.ini,n,levels,%mid >= 1000) { sockwrite -n wGard part %3  }
    else  .sockwrite -n wGard  notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
  }
  elseif (%4 == :!showcoms) { 
    sockwrite -n wGard notice %mid 12,15 Commandes sur les canaux (!help <commande> (ex: !help !topic) pour de l'info sur celle-ci)
    sockwrite -n wGard notice %mid 2,15Niveau 0-99: !wGard , !readcoms , !mycom , !addchan
    sockwrite -n wGard notice %mid 2,15Niveau 100-199: !op, !deop , !voice , !devoice 
    sockwrite -n wGard notice %mid 2,15Niveau 200-299: !topic , !kick , !mode 
    sockwrite -n wGard notice %mid 2,15Niveau 300-399: !amsg, !ban, !bantime , !invite , !deftopic , !rdeftopic
    sockwrite -n wGard notice %mid 2,15Niveau 400-499: !unban , !adduser , !deluser , !fullban
    sockwrite -n wGard notice %mid 2,15Niveau 500-1000: !join , !part
  }
  elseif (%4 == :!help) { 
    if (%5 == !wGard) { .sockwrite -n wGard notice %mid Affiche les informations sur la version du robot }
    elseif (%5 == !readcoms) { .sockwrite -n wGard notice %mid Affiches tout les commentaires des utilisateurs }
    elseif (%5 == !mycom) { .sockwrite -n wGard notice %mid Ajoute votre commentaire (Syntaxe: !mycom <commentaire>) }
    elseif (%5 == !op) { .sockwrite -n wGard notice %mid Vous op ou op une autre personne sur le canal  (Syntaxe: !op OU !op <pseudo>) }
    elseif (%5 == !deop) { .sockwrite -n wGard notice %mid Vous deop ou deop une autre personne sur le canal  (Syntaxe: !deop OU !deop <pseudo>) }
    elseif (%5 == !voice) { .sockwrite -n wGard notice %mid Vous voice ou voice une autre personne sur le canal  (Syntaxe: !voice OU !voice <pseudo>) }
    elseif (%5 == !devoice) { .sockwrite -n wGard notice %mid Vous devoice ou devoice une autre personne sur le canal  (Syntaxe: !devoice OU !devoice <pseudo>) }
    elseif (%5 == !topic) { .sockwrite -n wGard notice %mid Change le thème du salon (Syntaxe: !topic <topic>) }
    elseif (%5 == !kick) { .sockwrite -n wGard notice %mid Kick une persone du salon (Syntaxe: !kick <pseudo>) }
    elseif (%5 == !mode) { .sockwrite -n wGard notice %mid  Change les modes du salon (Syntaxe: !mode <+ ou -> mnk) }
    elseif (%5 == !amsg) { .sockwrite -n wGard notice %mid Ecrit votre message en couleur(Syntaxe: !say <message>) }
    elseif (%5 == !ban) { .sockwrite -n wGard notice %mid Banni une persone du salon (Syntaxe: !ban <pseudo>) }
    elseif (%5 == !bantime) { .sockwrite -n wGard notice %mid Banni une persone du salon  avec une limite de temps Choix de temps: 10min à 60min (Syntaxe: !bantime <pseudo> <temps> ) (ex: !bantime webdo 10min) }
    elseif (%5 == !invite) { .sockwrite -n wGard notice %mid Invite une personne sur le salon (Syntaxe: !invite <pseudo>) }
    elseif (%5 == !deftopic) { .sockwrite -n wGard notice %mid Défini le topic par défaut du salon (Syntaxe: !deftopic <topic>) }
    elseif (%5 == !rdeftopic) { .sockwrite -n wGard notice %mid Remet le topic par défaut }
    elseif (%5 == adduser) { .sockwrite -n wGard notice %mid Ajoute un utilisateur à votre salon (EN PV:Syntaxe: adduser <pseudo> <niveau>) }
    elseif (%5 == !adduser) { .sockwrite -n wGard notice %mid Ajoute un utilisateur à votre salon (EN PV:Syntaxe: adduser <pseudo> <niveau>) }
    elseif (%5 == !unban) { .sockwrite -n wGard notice %mid Débanni un utilisateur banni Syntaxe: !unban <pseudo>) }
    elseif (%5 == !deluser) { .sockwrite -n wGard notice %mid Supprime l'access d'un utilisateur du salon (Syntaxe: !deluser <pseudo>) }
    elseif (%5 == !fullban) { .sockwrite -n wGard notice %mid Banni une persone du salon à vie (Syntaxe: !fullban <pseudo>) }
    elseif (%5 == !join) { .sockwrite -n wGard notice %mid Rejoin le salon mentionner (Syntaxe: !join <salon>) }
    elseif (%5 == !part)  { .sockwrite -n wGard notice %mid Quitte le salon mentionner (Syntaxe: !part <salon>) }
  }
  elseif (%4 == :!adduser) {
    if ($readini(levels.ini,n,levels,%mid >= %6) {
      else .sockwrite -n wGard notice %mid Tu ne peut pas ajouter un niveau plus haut que le tien
      if ($readini(levels.ini,n,levels,%mid >= 400) {  writeini -n levels.ini levels %5 %6 } 
      else .sockwrite -n wGard notice %mid Ton niveau est Trop bas ou tu n'a pas d'access
    }
  }
  elseif (%2 == JOIN) {
    sockwrite -n wGard notice %mid 2,15Bonjour, Bienvenue sur %3 ... Tappe !showcoms pour avoir la liste de mes commandes
    writeini -n seendata.ini join %mid 2,15 %mid à été vu pour la derniere fois sur %3 le $date à $+($time,...)
  }
  elseif (%2 == PART) {
    writeini -n seendata.ini part %mid 2,15 Il a quitter le salon le $date à $+($time,...)
  }
  elseif (%2 == QUIT) {
    writeini -n seendata.ini part %mid 2,15 Il a quitter le serveur le $date à $+($time,...)
  }
  elseif (%4 == :!seen) {
    writeini -n seendata.ini part %mid 2,15 Il a quitter le serveur le $date à $+($time,...)
    if (%5 ison %3) sockwrite -n wGard notice %mid 2,15 Ouvre tes yeux $+(%mid,...) %5 est sur le canal
    else {
      if (%5 isin $readini(seendata.ini,n,join,%5) ) {
        sockwrite -n wGard notice $nick 2,15 $readini(seendata.ini,n,join,%5)
      sockwrite -n wGard notice $nick 2,15 $readini(seendata.ini,n,part,%5) }
      else .sockwrite -n wGard notice %mid 2,15 Je n'ai jamais apercu %5 sur $+(%3,...)
    }
  }

  unset %a
}
on *:sockclose:wGard:{ echo @wGard 2,15 wGard deconnecter de %serveur }

Conclusion :


Voila, j'esper que j'aurai de bonnes notes

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_tofu
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
l'utilité du socket est assez discutable étant donné qu'il faut que la connexion "principale" soit sur le même salon sinon les "on text" etc tombent à l'eau... je vois pas tellement l'intérêt de faire une connexion supplémentaire si c'est pour utiliser les events de la connexion principale..

d'autre part, pourquoi un fichier .ini ? un fichier texte suffit puisqu'il n'y a pas utilisation de blocs de commandes..
webdoordi
Messages postés
48
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
3 avril 2009
-
Ya un autre moyen que de passer par on text ?
Dsl mais je suis pas pro en socket, c la premiere fos ke je m'essai
cs_tofu
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1 -
oui, passer par le sockread étant donné que c'est l'event qui est exécuté lors de la réception des raws par la connexion socket.

l'évênement "on text" n'est lui exécuté que lorsque la connexion "principale" reçoit des données.

la question d'être pro n'est pas de mise içi, c'est simplement une question de logique mais t'inquiètes pas ça va venir avec le temps. c'est toujours un peu ambigue les connexions annexes au début et on s'emmêle vite les pinceaux...
webdoordi
Messages postés
48
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
3 avril 2009
-
lol, oui mais j'ai trouver comment executer par sockread, je vais poster sa ici des ke jaurai tout transformer ^^(la galere)
webdoordi
Messages postés
48
Date d'inscription
dimanche 29 mai 2005
Statut
Membre
Dernière intervention
3 avril 2009
-
Et voila... Tout se passe en sockread maitenant^^
La pour une source de debutant jai rusher lol

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.