Condition sur script chanrelais - protec - 24/01/2015
Bonjour,
j'ai besoin de votre aide pour la modification du script. ou alors peut-être une futur mise à jour ?
Actuellement sur mon irc je dispose de deux Salons :
#GameNV1
#GameNV2
et un bot qui annonce les questions : #Arbitre
j'aimerais via le script chanrelais echo uniquement les messages du bot Arbitre mais uniquement que lui.
en fait dans mon jeu il y a des groupes de joueur répartie par niveau mais il faut avoir les mêmes questions sur les deux salons pour faire des stats/règles etc...
Voici la modification que j'ai essayé de faire : ( ps script deja modifier il y a quelques temps pour enlever le nick d'un salon à un autre )
TCL
# chanrelay.tcl 3.7## A way to link your channels## Author: CrazyCat <crazycat@c-p-f.org># http://www.eggdrop.fr# irc.zeolia.net #eggdrop
## DESCRIPTION #### This TCL is a complete relay script wich works with botnet.# All you have to do is to include this tcl in all the eggdrop who# are concerned by it.## You can use it as a spy or a full duplex communication tool.## It don't mind if the eggdrops are on the same server or not,# it just mind about the channels and the handle of each eggdrop.
## CHANGELOG #### 3.7# Addition of @commandes (public) restricted to operators:# @topic <network|all> a new topic :# Changes topic on specified network (or all)# @mode <network|all> +mode [arg][,-mode [arg]] :# Changes modes on specified network (or all)# All modes must be separated with a comma# @kick <network|all> user [reason] :# Kicks user on specified network (or all)# @ban <network|all> user [reason]:# Ban-kick user on specified network (or all)# Default reason and banmask are in the conf section## 3.6-3# Correction of trans mode on/off## 3.6-2# Correction of the logging of actions (/me)# Nick was replaced with ACTION# Correction of empty chan list (!who)# # 3.6-1# Correction of the !who command# It's now possible to have the list from a specific server## 3.6# Correction of modes catching / transmitting## 3.5 (Beta)# Integration of Message Delivery Service (MDS)# by MenzAgitat## 3.4# Settings modified by msg commands are now saved# Correction of small bugs# Best verification of settings sent# Acknowledgement and error messages added## 3.3-1# Correction for /msg eggdrop trans <action> [on|off]## 3.3# Added lines introducing beginning and ending of userlist## 3.2# Added gray user highlight## 3.1# Added check for linked bot# Corrected parse of some messages# Corrected pub commands## 3.0# Complete modification of configuration# Use of namespace# No more broadcast, the relay is done with putbot
## TODO #### Enhance configuration# Allow save of configuration# Multi-languages
## CONFIGURATION #### For each eggdrop in the relay, you have to# indicate his botnet nick, the chan and the network.## Syntax:# set regg(USERNAME) {
# "chan" "#CHANNEL"# "network" "NETWORK"#}# with:# USERNAME : The username sets in eggdrop.conf (case-sensitive)# optionaly, you can override default values:# * highlight (0/1/2/3): is speaker highlighted ? (no/bold/undelined/gray)# * snet (y/n): is speaker'network shown ?# * transmit (y/n): does eggdrop transmit his channel activity ?# * receive (y/n): does eggdrop diffuse other channels activity ?# * oper (y/n): does the eggdrop accept @ commands (topic, kick, ban) ?## userlist(beg) is the sentence announcing the start of !who# userlist(end) is the sentence announcing the end of !whonamespaceeval crelay {variable regg
variabledefaultvariable userlist
set regg(Arbitre){"chan""#GameNV1""network""IRCTEST""highlight"3"transmit""y""receive""n"}set regg(Arbitre2){"chan""#GameNV2""network""IRCTEST""highlight"0"receive""y""transmit""n"}setdefault{"highlight"1"snet""y""transmit""y""receive""y""log""n""oper""n"}
# transmission configurationset trans_pub "y"; # transmit the pubset trans_act "n"; # transmit the actions (/me)set trans_nick "n"; # transmit the nick changementset trans_join "n"; # transmit the joinset trans_part "n"; # transmit the partset trans_quit "n"; # transmit the quitset trans_topic "n"; # transmit the topic changementsset trans_kick "n"; # transmit the kicksset trans_mode "n"; #transmit the mode changementsset trans_who "n"; # transmit the who list
# reception configurationset recv_pub "y"; # recept the pubset recv_act "n"; # recept the actions (/me)set recv_nick "n"; # recept the nick changementset recv_join "n"; # recept the joinset recv_part "n"; # recept the partset recv_quit "n"; # recept the quitset recv_topic "n"; # recept the topic changementsset recv_kick "n"; # recept the kicksset recv_mode "n"; # recept the mode changementsset recv_who "n"; # recept the who listset userlist(beg)"Beginning of userlist"set userlist(end)"End of userlist"
# Set the banmask to use in banning the IPs # Default banmask is set to 1 # 1 - *!*@some.domain.com # 2 - *!*@*.domain.com # 3 - *!*ident@some.domain.com # 4 - *!*ident@*.domain.com # 5 - *!*ident*@some.domain.com # 6 - *nick*!*@*.domain.com # 7 - *nick*!*@some.domain.com # 8 - nick!ident@some.domain.com # 9 - nick!ident@*.host.comset bantype 1 # The default (ban)kick reason. # %n will be replaced with the kicker nameset breason "You have been kicked by %n"variable config "databases/chanrelay.db.$::username"variable author "CrazyCat"variable version "3.7"}
##################################### DO NOT EDIT ANYTHING BELOW #####################################proc ::crelay::init{args}{variable me
array set me $::crelay::default
array set me $::crelay::regg($::username)if{[file exists $::crelay::config]}{[namespace current]::preload}if{$me(transmit) == "y"}{
bind msg o|o "trans"[namespace current]::set:trans
if{$::crelay::trans_pub == "y"}{ bind pubm - *[namespace current]::trans:pub }if{$::crelay::trans_act == "y"}{ bind ctcp - "ACTION"[namespace current]::trans:act }if{$::crelay::trans_nick == "y"}{ bind nick - *[namespace current]::trans:nick }if{$::crelay::trans_join == "y"}{ bind join - *[namespace current]::trans:join}if{$::crelay::trans_part == "y"}{ bind part - *[namespace current]::trans:part }if{$::crelay::trans_quit == "y"}{ bind sign - *[namespace current]::trans:quit }if{$::crelay::trans_topic == "y"}{ bind topc - *[namespace current]::trans:topic }if{$::crelay::trans_kick == "y"}{ bind kick - *[namespace current]::trans:kick }if{$::crelay::trans_mode == "y"}{ bind raw - "MODE"[namespace current]::trans:mode }if{$::crelay::trans_who == "y"}{ bind pub - "!who"[namespace current]::trans:who }if{$me(oper) == "y"}{
bind pub -|o "@topic"[namespace current]::trans:otopic
bind pub -|o "@mode"[namespace current]::trans:omode
bind pub -|o "@kick"[namespace current]::trans:okick
bind pub -|o "@ban"[namespace current]::trans:oban
}}if{$me(receive) =="y"}{
bind msg o|o "recv" ::crelay::set:recv
if{$::crelay::recv_pub == "y"}{ bind bot - ">pub"[namespace current]::recv:pub }if{$::crelay::recv_act == "y"}{ bind bot - ">act"[namespace current]::recv:act }if{$::crelay::recv_nick == "y"}{ bind bot - ">nick"[namespace current]::recv:nick }if{$::crelay::recv_join == "y"}{ bind bot - ">join"[namespace current]::recv:join}if{$::crelay::recv_part == "y"}{ bind bot - ">part"[namespace current]::recv:part }if{$::crelay::recv_quit == "y"}{ bind bot - ">quit"[namespace current]::recv:quit }if{$::crelay::recv_topic == "y"}{ bind bot - ">topic"[namespace current]::recv:topic }if{$::crelay::recv_kick == "y"}{ bind bot - ">kick"[namespace current]::recv:kick }if{$::crelay::recv_mode == "y"}{ bind bot - ">mode"[namespace current]::recv:mode }if{$::crelay::recv_who == "y"}{
bind bot - ">who"[namespace current]::recv:who
bind bot - ">wholist"[namespace current]::recv:wholist
}
bind bot - ">otopic"[namespace current]::recv:otopic
bind bot - ">omode"[namespace current]::recv:omode
bind bot - ">okick"[namespace current]::recv:okick
bind bot - ">oban"[namespace current]::recv:oban
}[namespace current]::set:hl $me(highlight);if{$me(log) == "y"}{
logfile sjpk $me(chan)"logs/[string range $me(chan) 1 end].log"}
bind msg -|o "rc.status"[namespace current]::help:status
bind msg - "rc.help"[namespace current]::help:cmds
bind msg -|o "rc.light"[namespace current]::set:light
bind msg -|o "rc.net"[namespace current]::set:snet
bind bot - ">notop"[namespace current]::recv:errorvariable eggdrops
variable chans
variable networks
foreach bot [array names [namespace current]::regg]{
array set tmp $::crelay::regg($bot)lappend eggdrops $botlappend chans $tmp(chan)lappend networks $tmp(network)}[namespace current]::save
bind evnt -|- prerehash [namespace current]::deinitif{[lsearch[package names]"MDS"]>= 0}{
unbind pub $::MDS::pub_msg_auth$::MDS::pub_msg_cmd MDS::pub_sendmsg
bind pub $::MDS::pub_msg_auth$::MDS::pub_msg_cmd[namespace current]::pub_sendmsg
unbind msg $::MDS::priv_msg_auth$::MDS::priv_msg_cmd MDS::priv_sendmsg
bind msg $::MDS::priv_msg_auth$::MDS::priv_msg_cmd[namespace current]::priv_sendmsg
bind bot - ">mds"[namespace current]::recv:mds
set ::MDS::msgdb_file"databases/MDS_messages.$::username.db"}package provide ChanRelay $::crelay::version}
# Reads settings from a fileproc ::crelay::preload{args}{set fp [open$::crelay::config r]set settings [read -nonewline $fp]close$fpforeach line [split$settings"\n"]{setlset[split$line"|"]switch[lindex$lset0]{
transmit {set[namespace current]::me(transmit)[lindex$lset1]}
receive {set[namespace current]::me(receive)[lindex$lset1]}
snet {set[namespace current]::me(snet)[lindex$lset1]}
highlight {set[namespace current]::me(highligt)[lindex$lset1]}default{set[namespace current]::[lindex$lset0][lindex$lset1]}}}}# Save all settings in a fileproc ::crelay::save{args}{set fp [open$::crelay::config w]puts$fp"transmit|$::crelay::me(transmit)"puts$fp"receive|$::crelay::me(transmit)"puts$fp"snet|$::crelay::me(transmit)"puts$fp"highlight|$::crelay::me(transmit)"puts$fp"trans_pub|$::crelay::trans_pub"puts$fp"trans_act|$::crelay::trans_act"puts$fp"trans_nick|$::crelay::trans_nick"puts$fp"trans_join|$::crelay::trans_join"puts$fp"trans_part|$::crelay::trans_part"puts$fp"trans_quit|$::crelay::trans_quit"puts$fp"trans_topic|$::crelay::trans_topic"puts$fp"trans_kick|$::crelay::trans_kick"puts$fp"trans_mode|$::crelay::trans_mode"puts$fp"trans_who|$::crelay::trans_who"puts$fp"recv_pub|$::crelay::recv_pub"puts$fp"recv_act|$::crelay::recv_act"puts$fp"recv_nick|$::crelay::recv_nick"puts$fp"recv_join|$::crelay::recv_join"puts$fp"recv_part|$::crelay::recv_part"puts$fp"recv_quit|$::crelay::recv_quit"puts$fp"recv_topic|$::crelay::recv_topic"puts$fp"recv_kick|$::crelay::recv_kick"puts$fp"recv_mode|$::crelay::recv_mode"puts$fp"recv_who|$::crelay::recv_who"close$fp}proc ::crelay::deinit{args}{
putlog "Starting unloading CHANRELAY $::crelay::version"[namespace current]::save
putlog "Settings are saved in $::crelay::config"catch{unbind evnt -|- prerehash [namespace current]::deinit}catch{
unbind msg o|o "trans"[namespace current]::set:trans
unbind pubm - *[namespace current]::trans:pub
unbind ctcp - "ACTION"[namespace current]::trans:act
unbind nick - *[namespace current]::trans:nick
unbind join - *[namespace current]::trans:join
unbind part - *[namespace current]::trans:part
unbind sign - *[namespace current]::trans:quit
unbind topc - *[namespace current]::trans:topic
unbind kick - *[namespace current]::trans:kick
unbind raw - "MODE"[namespace current]::trans:mode
unbind pub - "!who"[namespace current]::trans:who
unbind pub o|o "@topic"[namespace current]::trans:otopic
unbind pub o|o "@mode"[namespace current]::trans:omode
unbind pub o|o "@kick"[namespace current]::trans:okick
unbind pub o|o "@ban"[namespace current]::trans:oban
}catch{
unbind msg o|o "recv"[namespace current]::set:recv
unbind bot - ">pub"[namespace current]::recv:pub
unbind bot - ">act"[namespace current]::recv:act
unbind bot - ">nick"[namespace current]::recv:nick
unbind bot - ">join"[namespace current]::recv:join
unbind bot - ">part"[namespace current]::recv:part
unbind bot - ">quit"[namespace current]::recv:quit
unbind bot - ">topic"[namespace current]::recv:topic
unbind bot - ">kick"[namespace current]::recv:kick
unbind bot - ">mode"[namespace current]::recv:mode
unbind bot - ">who"[namespace current]::recv:who
unbind bot - ">wholist"[namespace current]::recv:wholist
unbind bot - ">otopic"[namespace current]::recv:otopic
unbind bot - ">omode"[namespace current]::recv:omode
unbind bot - ">okick"[namespace current]::recv:okick
unbind bot - ">oban"[namespace current]::recv:oban
unbind bot - ">notop"[namespace current]::recv:error}catch{
unbind msg o|o "rc.status"[namespace current]::help:status
unbind msg - "rc.help"[namespace current]::help:cmds
unbind msg o|o "rc.light"[namespace current]::set:light
unbind msg o|o "rc.net"[namespace current]::set:snet
}foreach child [namespace children]{catch{[set child]::deinit}}if{[lsearch[package names]"MDS"]>= 0}{
unbind pub $::MDS::pub_msg_auth$::MDS::pub_msg_cmd[namespace current]::pub_sendmsg
bind pub $::MDS::pub_msg_auth$::MDS::pub_msg_cmd MDS::pub_sendmsg
unbind bot - ">mds"[namespace current]::recv:mds
unbind msg $::MDS::priv_msg_auth$::MDS::priv_msg_cmd[namespace current]::priv_sendmsg
bind msg $::MDS::priv_msg_auth$::MDS::priv_msg_cmd MDS::priv_sendmsg}
putlog "CHANRELAY $::crelay::version unloaded"package forget ChanRelay
namespace delete [namespace current]}namespaceeval crelay {variable hlnick
variable snet
# Setting of hlnickprocset:light { nick uhost handle arg }{
# message bindingswitch$arg{"bo"{[namespace current]::set:hl 1;}"un"{[namespace current]::set:hl 2;}"gr"{[namespace current]::set:hl 3;}"off"{[namespace current]::set:hl 0;}default{ puthelp "NOTICE $nick :you must chose \002(bo)\002ld , \037(un)\037derline, \00314(gr)\003ay or (off)"}}[namespace current]::savereturn0;}procset:hl { arg }{
# global hlnick setting functionswitch$arg{1{set[namespace current]::hlnick"\002";}2{set[namespace current]::hlnick"\037";}3{set[namespace current]::hlnick"\00314";}default{set[namespace current]::hlnick"";}}}
# Setting of show networkprocset:snet {nick host handle arg }{if{$arg == "yes"}{set[namespace current]::snet"y"
puthelp "NOTICE $nick :Network is now showed"}elseif{$arg == "no"}{set[namespace current]::snet"n"
puthelp "NOTICE $nick :Network is now hidden"}else{
puthelp "NOTICE $nick :you must chose yes or no"return0}[namespace current]::save}
# proc setting of transmission by msgprocset:trans { nick host handle arg }{if{$::crelay::me(transmit) == "y"}{if{$arg == ""}{
putquick "NOTICE $nick :you'd better try /msg $::botnick trans help"}if{[lindex[split$arg]0] == "help"}{
putquick "NOTICE $nick :usage is /msg $::botnick trans <value> on|off"
putquick "NOTICE $nick :with <value> = pub, act, nick, join, part, quit, topic, kick, mode, who"return0}else{switch[lindex[split$arg]0]{"pub"{set type pubm }"act"{set type ctcp }"nick"{set type nick }"join"{set type join}"part"{set type part }"quit"{set type sign }"topic"{set type topc }"kick"{set type kick }"mode"{set type mode }"who"{set type who }default{
putquick "NOTICE $nick :Bad mode. Try /msg $::botnick trans help"return0}}set proc_change "[namespace current]::trans:[lindex [split $arg] 0]"set mod_change "[namespace current]::trans_[lindex [split $arg] 0]"if{[lindex[split$arg]1] eq "on"}{if{$type eq "mode"}{
bind raw - "MODE"[namespace current]::trans:mode
}else{
bind $type - *$proc_change}set${mod_change}"y"
putserv "NOTICE $nick :Transmission of [lindex [split $arg] 0] enabled"}elseif{[lindex[split$arg]1] eq "off"}{if{$type eq "mode"}{
unbind raw - "MODE"[namespace current]::trans:mode
}else{
unbind $type - *$proc_change}set${mod_change}"n"
putserv "NOTICE $nick :Transmission of [lindex [split $arg] 0] disabled"}else{
putquick "NOTICE $nick :[lindex [split $arg] 1] is not a correct value, choose \002on\002 or \002off\002"}}}else{
putquick "NOTICE $nick :transmission is not activated, you can't change anything"}[namespace current]::save}
# proc setting of reception by msgprocset:recv { nick host handle arg }{if{$::crelay::me(receive) == "y"}{if{$arg == ""}{
putquick "NOTICE $nick :you'd better try /msg $::botnick recv help"}if{[lindex[split$arg]0] == "help"}{
putquick "NOTICE $nick :usage is /msg $::botnick recv <value> on|off"
putquick "NOTICE $nick :with <value> = pub, act, nick, join, part, quit, topic, kick, mode, who"return0}else{switch[lindex[split$arg]0]{"pub" -
"act" -
"nick" -
"join" -
"part" -
"quit" -
"topic" -
"kick" -
"mode" -
"who"{set type [lindex[split$arg]0]}default{
putquick "NOTICE $nick :Bad mode. Try /msg $::botnick recv help"return0}}set change ">$type"set proc_change "[namespace current]::recv:$type"set mod_change "[namespace current]::recv_$type"if{[lindex[split$arg]1] eq "on"}{
bind bot - $change$proc_changeset${mod_change}"y"
putserv "NOTICE $nick :Reception of $type enabled"}elseif{[lindex[split$arg]1] == "off"}{
unbind bot - $change$proc_changeset${mod_change}"n"
putserv "NOTICE $nick :Reception of $type disabled"}else{
putquick "NOTICE $nick :[lindex [split $arg] 1] is not a correct value, choose \002on\002 or \002off\002"}}}else{
putquick "NOTICE $nick :reception is not activated, you can't change anything"}[namespace current]::save}
# Generates an user@network name # based on nick and from botproc make:user { nick frm_bot }{return""}
# Logs virtual channel activity proc cr:log { lev chan line }{if{$::crelay::me(log) == "y"}{
putloglev $lev"$chan""$line"}return0}
# Global transmit procedureproc trans:bot { usercmd chan usernick text }{set transmsg [concat$usercmd$usernick$text]set ::crelay::eob0if{$chan == $::crelay::me(chan)}{foreach bot [array names [namespace current]::regg]{if{$bot!= $::botnick&&[islinked $bot]}{
putbot $bot$transmsgif{$usercmd == ">who"}{incr[namespace current]::eob}}}}else{return0}}
# proc transmission of pub (trans_pub = y)proc trans:pub {nick uhost hand chan text}{if{[string tolower [lindex[split$text]0]] == "!who"}{return0;}if{[string tolower [lindex[split$text]0]] == "@topic"}{return0;}if{[string tolower [lindex[split$text]0]] == "@mode"}{return0;}if{[string tolower [lindex[split$text]0]] == "@ban"}{return0;}if{[string tolower [lindex[split$text]0]] == "@kick"}{return0;}[namespace current]::trans:bot ">pub"$chan$nick[join[split$text]]}
# proc transmission of action (trans_act = y)proc trans:act {nick uhost hand chan key text}{set arg [concat$key$text][namespace current]::trans:bot ">act"$chan$nick$arg}
# proc transmission of nick changementproc trans:nick {nick uhost hand chan newnick}{[namespace current]::trans:bot ">nick"$chan$nick$newnick}
# proc transmission of joinproc trans:join{nick uhost hand chan}{[namespace current]::trans:bot ">join"$chan$chan$nick}
# proc transmission of partproc trans:part {nick uhost hand chan text}{set arg [concat$chan$text][namespace current]::trans:bot ">part"$chan$nick$arg}
# proc transmission of quitproc trans:quit {nick host hand chan text}{[namespace current]::trans:bot ">quit"$chan$nick$text}
# proc transmission of topic changementproc trans:topic {nick uhost hand chan topic}{set arg [concat$chan$topic][namespace current]::trans:bot ">topic"$chan$nick$arg}
# proc transmission of kickproc trans:kick {nick uhost hand chan victim reason}{set arg [concat$victim$chan$reason][namespace current]::trans:bot ">kick"$chan$nick$arg}
# proc transmission of mode changementproc trans:mode {from keyw text}{set nick [lindex[split$from!]0]set chan [lindex[split$text]0]set text [concat$nick$text][namespace current]::trans:bot ">mode"$chan$nick$text}
# proc transmission of "who command"proc trans:who {nick uhost handle chan args}{if{[join[lindex[split$args]0]]!= ""}{set netindex [lsearch -nocase $::crelay::networks[lindex[split$args]0]]if{$netindex == -1}{
putserv "PRIVMSG $nick :$args est un réseau inconnu";return0}else{set[namespace current]::eol0set[namespace current]::bol0set[namespace current]::eob1
putbot [lindex$::crelay::eggdrops$netindex]">who $nick"}}else{set[namespace current]::eol0set[namespace current]::bol0[namespace current]::trans:bot ">who"$chan$nick""}}
# Error receptionproc recv:error{frm_bot command arg}{
# putlog "$command - $arg"return0}
# proc reception of pub[color=#ff6633]proc recv:pub {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]}if{nick ="Arbitre"}{
putquick "PRIVMSG $::crelay::me(chan) :$speaker [join [lrange $argl 1 end]]"[namespace current]::cr:log p "$::crelay::me(chan)""<[lindex $argl 0]> [join [lrange $argl 1 end]]"}return0}[/color]
# proc reception of actionproc recv:act {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :* $speaker [join [lrange $argl 2 end]]"[namespace current]::cr:log p "$::crelay::me(chan)""Action: [lindex $argl 0] [join [lrange $argl 2 end]]"}return0}
# proc reception of nick changementproc recv:nick {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :*** $speaker is now known as [join [lrange $argl 1 end]]"[namespace current]::cr:log j "$::crelay::me(chan)""Nick change: [lindex $argl 0] -> [join [lrange $argl 1 end]]"}return0}
# proc reception of joinproc recv:join{frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl1]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :--> $speaker has joined channel [lindex $argl 0]"[namespace current]::cr:log j "$::crelay::me(chan)""[lindex $argl 1] joined $::crelay::me(chan)."}return0}
# proc reception of partproc recv:part {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :<-- $speaker has left channel [lindex $argl 1] ([join [lrange $argl 2 end]])"[namespace current]::cr:log j "$::crelay::me(chan)""[lindex $argl 0] left $::crelay::me(chan) ([join [lrange $argl 2 end]])"}return0}
# proc reception of quitproc recv:quit {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :-//- $speaker has quit ([join [lrange $argl 1 end]])"[namespace current]::cr:log j "$::crelay::me(chan)""[lindex $argl 0] left irc: [join [lrange $argl 1 end]]"}return0}
# proc reception of topic changementproc recv:topic {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl0]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :*** $speaker changes topic of [lindex $argl 1] to '[join [lrange $argl 2 end]]'"}return0}
# proc reception of kickproc recv:kick {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl1]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :*** $speaker has been kicked from [lindex $argl 2] by [lindex $argl 0]: [join [lrange $argl 3 end]]"[namespace current]::cr:log k "$::crelay::me(chan)""[lindex $argl 1] kicked from $::crelay::me(chan) by [lindex $argl 0]:[join [lrange $argl 3 end]]"}return0}
# proc reception of mode changementproc recv:mode {frm_bot command arg}{if{[set him [lsearch$::crelay::eggdrops$frm_bot]]>= 0}{set argl [split$arg]set speaker [[namespace current]::make:user [lindex$argl1]$frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :*** $speaker set mode [join [lrange $argl 2 end]]"}return0}
# reception of !who commandproc recv:who {frm_bot command arg}{set nick $argset ulist ""set cusr 0if{![botonchan $::crelay::me(chan)]}{
putbot $frm_bot">wholist $::crelay::me(chan) $nick eol"return0}foreach user [chanlist $::crelay::me(chan)]{if{$user == $::botnick}{continue;}if{[isop $user$::crelay::me(chan)] == 1}{set st "@"}elseif{[ishalfop $user$::crelay::me(chan)] == 1}{set st "%"}elseif{[isvoice $user$::crelay::me(chan)] == 1}{set st "%"}else{set st ""}incr cusr 1append ulist " $st$user"if{$cusr == 5}{
putbot $frm_bot">wholist $::crelay::me(chan) $nick $ulist"set ulist ""set cusr 0}}if{$ulist!= ""}{
putbot $frm_bot">wholist $::crelay::me(chan) $nick $ulist"}
putbot $frm_bot">wholist $::crelay::me(chan) $nick eol"}
# Proc reception of a who listproc recv:wholist {frm_bot command arg}{set nick [join[lindex[split$arg]1]]set speaker [[namespace current]::make:user $frm_bot$frm_bot]if{$::crelay::bol == 0}{incr[namespace current]::bol
putserv "NOTICE $nick :*** $::crelay::userlist(beg)"}if{[join[lrange[split$arg]2 end]] == "eol"}{incr[namespace current]::eolif{$::crelay::eol == $::crelay::eob}{
putserv "NOTICE $nick :*** $::crelay::userlist(end)"}}else{
putserv "NOTICE $nick :$speaker [join [lrange [split $arg] 2 end]]"}}
###################################### # Operators commands #proc trans:otopic {nick uhost handle chan text}{set netindex [[namespace current]::checkDest[join[lindex[split$text]0]]]if{$netindex == -1}{
putserv "NOTICE $nick :Syntaxe is @topic <network|all> the new topic"return0}set topic [join[lrange[split$text]1 end]]if{$netindex<99}{
putbot [lindex$::crelay::eggdrops$netindex]">otopic $nick $topic"}else{[namespace current]::trans:bot ">otopic"$chan$nick$topic
putserv "TOPIC $::crelay::me(chan) :$topic"}return0}proc recv:otopic {frm_bot command arg}{set nick [join[lindex[split$arg]0]]if{![[namespace current]::hasRights$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"return0}
putserv "TOPIC $::crelay::me(chan) :[join [lrange [split $arg] 1 end]]"return0}proc trans:omode {nick uhost handle chan text}{set netindex [[namespace current]::checkDest[join[lindex[split$text]0]]]if{$netindex == -1}{
putserv "NOTICE $nick :Syntaxe is @mode <network|all> <+/-mode> [arg][,<+/-mode> [arg]...]"return0}set mode [join[lrange[split$text]1 end]]if{$netindex<99}{
putbot [lindex$::crelay::eggdrops$netindex]">omode $nick $mode"}else{[namespace current]::trans:bot ">omode"$chan$nick$modeforeach m [split$mode","]{ pushmode $::crelay::me(chan)$m}
flushmode $::crelay::me(chan)}return0}proc recv:omode {frm_bot command arg}{set nick [join[lindex[split$arg]0]]if{![[namespace current]::hasRights$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"return0}foreach mode [split[join[lrange[split$arg]1 end]]","]{catch{ pushmode $::crelay::me(chan)$mode}}
flushmode $::crelay::me(chan)return0}proc trans:okick {nick uhost handle chan text}{set netindex [[namespace current]::checkDest[join[lindex[split$text]0]]]set vict [join[lindex[split$text]1]]set reason [join[lrange[split$text]2 end]]if{$vict eq "" || $netindex == -1}{
putserv "NOTICE $nick :Syntaxe is @kick <network|all> nick \[reason of kickin\]"return0}if{$netindex<99}{
putbot [lindex$::crelay::eggdrops$netindex]">okick $chan $nick $vict $reason"}else{[namespace current]::trans:bot ">okick"$chan$nick[concat$vict$reason]}return0}proc recv:okick {frm_bot command arg}{set nick [join[lindex[split$arg]1]]if{![[namespace current]::hasRights$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"return0}set vict [join[lindex[split$arg]2]]if{![onchan $vict$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"}set reason [join[lrange[split$arg]3 end]]if{$reason eq ""}{regsub -all %n $::crelay::breason$nick reason }
putkick $::crelay::me(chan)$vict$reasonreturn0}proc trans:oban {nick uhost handle chan text}{set netindex [[namespace current]::checkDest[join[lindex[split$text]0]]]set vict [join[lindex[split$text]1]]set reason [join[lrange[split$text]2 end]]if{$vict eq "" || $netindex == -1}{
putserv "NOTICE $nick :Syntaxe is @ban <network|all> nick \[reason of banning\]"return0}if{$netindex<99}{
putbot [lindex$::crelay::eggdrops$netindex]">oban $chan $nick $vict $reason"}else{[namespace current]::trans:bot ">oban"$chan$nick[concat$vict$reason]}return0}proc recv:oban {frm_bot command arg}{set nick [join[lindex[split$arg]1]]if{![[namespace current]::hasRights$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"return0}set vict [join[lindex[split$arg]2]]if{![onchan $vict$::crelay::me(chan)]}{
putbot $frm_bot">notop $::crelay::me(chan) $nick"}set reason [join[lrange[split$arg]3 end]]if{$reason eq ""}{regsub -all %n $::crelay::breason$nick reason }set bmask [[namespace current]::mask[getchanhost $vict$::crelay::me(chan)]$vict]
pushmode $::crelay::me(chan) +b $bmask
putkick $::crelay::me(chan)$vict$reason
flushmode $::crelay::me(chan)return0}
###################################### # Private messaging #
bind msg - "say"[namespace current]::prv:say_send
proc prv:say_send {nick uhost handle text}{if{[lsearch[package names]"MDS"]>= 0}{[namespace current]::priv_sendmsg$nick$uhost$handle$textreturn0}set dest [join[lindex[split$text]0]]set msg [join[lrange[split$text]1 end]]set vict [join[lindex[split$dest @]0]]set net [join[lindex[split$dest @]1]]if{$vict == "" || $net == ""}{
putserv "PRIVMSG $nick :Use \002say user@network your message to \037user\037\002";return0}set him [lsearch -nocase $::crelay::networks$net]if{$him == -1}{
putserv "PRIVMSG $nick :I don't know any network called $net.";
putserv "PRIVMSG $nick :Available networks: [join [split $::crelay::networks]]"return0}if{[string length $msg] == 0}{
putserv "PRIVMSG $nick :Did you forget your message to $vict@$net ?";return0}
putbot [lindex$::crelay::eggdrops$him]">pvmsg $vict $nick@$::crelay::me(network) $msg"}
bind bot - ">pvmsg"[namespace current]::prv:say_get
proc prv:say_get {frm_bot command arg}{set dest [join[lindex[split$arg]0]]set from [join[lindex[split$arg]1]]set msg [join[lrange[split$arg]2 end]]if{[onchan $dest$::crelay::me(chan)] == 1}{
putserv "PRIVMSG $dest :$from: $msg"}}
# Addition of MDS interceptionproc priv_sendmsg {nick host hand text}{[namespace current]::pub_sendmsg$nick$host$hand$::crelay::me(chan)$text}proc pub_sendmsg {nick host hand chan arg}{set dest [join[lindex[split$arg]0]]set vict [join[lindex[split$dest @]0]]set net [join[lindex[split$dest @]1]]set msg [join[lrange[split$arg]1 end]]if{$vict == ""}{
putserv "PRIVMSG $nick :Use \002$MDS::pub_msg_cmd user[@network] your message to \037user\037\002";
putserv "PRIVMSG $nick :If network is not filled, all networks will receive it";return0}if{[string length $msg] == 0}{
putserv "PRIVMSG $nick :Did you forget your message to $vict@$net ?";return0}if{($net eq "") || ([lsearch -nocase $::crelay::networks$net] == -1)}{
putallbots ">mds $vict $nick@$::crelay::me(network) $msg"
send_msg_to dest $vict"crelay"$msg}else{set him [lsearch -nocase $::crelay::networks$net]if{[lindex$::crelay::eggdrops$him] eq $::username}{
send_msg_to dest $vict"crelay"$msg}else{
putbot [lindex$::crelay::eggdrops$him]">mds $vict $nick@$::crelay::me(network) $msg"}}return0}proc recv:mds {frm_bot command arg}{set dest [join[lindex[split$arg]0]]set from [join[lindex[split$arg]1]]set msg [join[lrange[split$arg]2 end]]if{[onchan $dest$::crelay::me(chan)] == 1}{
putserv "PRIVMSG $dest :$from: $msg"}else{
send_msg_to dest "crelay"$msg}}
###################################### # Small tools #proc checkDest { network }{set netindex [lsearch -nocase $::crelay::networks$network]if{$network ne "all"&&$netindex == -1}{return -1}if{$network eq "all"}{return99}return$netindex}proc hasRights { chan }{if{![botisop $chan]&&![botishalfop $chan]}{return0}return1}proc mask {uhost nick}{switch -- $::crelay::bantype{1{set mask "*!*@[lindex [split $uhost @] 1]"}2{set mask "*!*@[lindex [split [maskhost $uhost] "@"] 1]"}3{set mask "*!*$uhost"}4{set mask "*!*[lindex [split [maskhost $uhost] "!"] 1]"}5{set mask "*!*[lindex [split $uhost "@"] 0]*@[lindex [split $uhost "@"] 1]"}6{set mask "*$nick*!*@[lindex [split [maskhost $uhost] "@"] 1]"}7{set mask "*$nick*!*@[lindex [split $uhost "@"] 1]"}8{set mask "$nick![lindex [split $uhost "@"] 0]@[lindex [split $uhost @] 1]"}9{set mask "$nick![lindex [split $uhost "@"] 0]@[lindex [split [maskhost $uhost] "@"] 1]"}default{set mask "*!*@[lindex [split $uhost @] 1]"}}return$mask}
###################################### # proc for helping # # proc statusproc help:status { nick host handle arg }{
puthelp "PRIVMSG $nick :Chanrelay status for $::crelay::me(chan)@$crelay::me(network)"
puthelp "PRIVMSG $nick :\002 Global status\002"
puthelp "PRIVMSG $nick :\037type\037 -- | trans -|- recept |"
puthelp "PRIVMSG $nick :global -- | -- $::crelay::me(transmit) -- | -- $::crelay::me(receive) -- |"
puthelp "PRIVMSG $nick :pub -- | -- $::crelay::trans_pub -- | -- $::crelay::recv_pub -- |"
puthelp "PRIVMSG $nick :act -- | -- $::crelay::trans_act -- | -- $::crelay::recv_act -- |"
puthelp "PRIVMSG $nick :nick -- | -- $::crelay::trans_nick -- | -- $::crelay::recv_nick -- |"
puthelp "PRIVMSG $nick :join -- | -- $::crelay::trans_join -- | -- $::crelay::recv_join -- |"
puthelp "PRIVMSG $nick :part -- | -- $::crelay::trans_part -- | -- $::crelay::recv_part -- |"
puthelp "PRIVMSG $nick :quit -- | -- $::crelay::trans_quit -- | -- $::crelay::recv_quit -- |"
puthelp "PRIVMSG $nick :topic -- | -- $::crelay::trans_topic -- | -- $::crelay::recv_topic -- |"
puthelp "PRIVMSG $nick :kick -- | -- $::crelay::trans_kick -- | -- $::crelay::recv_kick -- |"
puthelp "PRIVMSG $nick :mode -- | -- $::crelay::trans_mode -- | -- $::crelay::recv_mode -- |"
puthelp "PRIVMSG $nick :who -- | -- $::crelay::trans_who -- | -- $::crelay::recv_who -- |"
puthelp "PRIVMSG $nick :nicks appears as $::crelay::hlnick$nick$::crelay::hlnick"
puthelp "PRIVMSG $nick :\002 END of STATUS"}
# proc helpproc help:cmds { nick host handle arg }{
puthelp "NOTICE $nick :/msg $::botnick trans <type> on|off to change the transmissions"
puthelp "NOTICE $nick :/msg $::botnick recv <type> on|off to change the receptions"
puthelp "NOTICE $nick :/msg $::botnick rc.status to see my actual status"
puthelp "NOTICE $nick :/msg $::botnick rc.help for this help"
puthelp "NOTICE $nick :/msg $::botnick rc.light <bo|un|off> to bold, underline or no higlight"
puthelp "NOTICE $nick :/msg $::botnick rc.net <yes|no> to show the network"}}
::crelay::init
putlog "CHANRELAY $::crelay::version by \002$::crelay::author\002 loaded - http://www.eggdrop.fr"
mais bon je pense que c'est pas du tout comme çà je je sais même pas si c'est au bon endroit.
merci pour votre aide.
Bonne journée
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
Ca ne pourra pas marcher comme ça, car Arbitre est l'un des eggdrops du relay, donc il ne déclenche pas les binds lorsqu'il parle.
En fait, il faudrait que les questions soient annoncées par un autre egg ou bien modifier le système des annonces
RE: Condition sur script chanrelais - protec - 24/01/2015
OK.
Donc par exemple si je monte un autre bot qui pause les questions "Botannonce" il faut que arbitre1 envoie uniquement le message de botannonce vers arbitre2
mais en aucun cas les messages des autres membres du salon.
c'est possible ?
merci pour ta réponse
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
Tout à fait.
Il suffira de faire les bons réglages dans la config pour que le relay ne fonctionne que dans un seul sens et d'ajouter les bonnes conditions dans les procédures d'émission.
Je pense que je vais faire une petite évolution du script pour ajouter quelques réglages permettant de gérer ça plus facilement.
RE: Condition sur script chanrelais - protec - 24/01/2015
Je pense que c'est une bonne évolution qui servira bien.
tu peux prévoir avec 1 seul nick et plusieurs ( on ne sais jamais )
un grand merci à toi pour les réponses et pour ton script
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
Oui, je suis en train de bosser dessus du coup:
Une liste de nicks/masks à exclure (quoi qu'il arrive)
Une liste de nicks qui seront les seuls relayés
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
RE: Condition sur script chanrelais - protec - 24/01/2015
je test et je te fais un retour
RE: Condition sur script chanrelais - protec - 24/01/2015
Pour sa fonctionne avec 1 utilisateur.
par contre pour ajouter plusieurs Nick c'est , ou ; ?
merci à toi
RE: Condition sur script chanrelais - protec - 24/01/2015
J'ai un soucis je ne sais pas du tout d'ou il viens....
j'ai un décalage d'un espace quand le bot reçois une phrase
exemple :
#salon source : !nvquestion combien ..... ?
#salon echo : !nvquestion combien..... ?
voici mon code si tu trouve une erreur dedans sinon sa fonctionne tres bien sauf avec un nick avec des caratères devant exemple [NICK1]
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
Concernant le pseudo avec des [ et ], je vais voir ça, mais à priori:
Code :
variable users_only {\[annonce\]}
devrait être bon.
Pour ton souci d'espace, est-ce que tu peux copier exactement les lignes qu'il y a sur IRC, dans les deux salons ? Il y a de fortes chances que ça vienne de l'affichage du pseudo ou quelque chose de ce genre.
RE: Condition sur script chanrelais - protec - 24/01/2015
Je te confirme sa fonctionne chez moi pour le nick.
Sinon pour mon problème d'espace j'ai modifier ceci dans le code :
Code :
# Generates an user@network name
# based on nick and from bot
proc make:user { nick frm_bot } {
return ""
}
c'est peut être le return "" non ?
Mais oui je veux copier exactement les lignes d'un salon à un autre.
RE: Condition sur script chanrelais - CrazyCat - 24/01/2015
En fait, ça vient des procédures d'affichage.
Par exemple:
Code :
# proc reception of pub
proc recv:pub {frm_bot command arg} {
if {[set him [lsearch $::crelay::eggdrops $frm_bot]] >= 0} {
set argl [split $arg]
set speaker [[namespace current]::make:user [lindex $argl 0] $frm_bot]
putquick "PRIVMSG $::crelay::me(chan) :$speaker [join [lrange $argl 1 end]]"
[namespace current]::cr:log p "$::crelay::me(chan)" "<[lindex $argl 0]> [join [lrange $argl 1 end]]"
}
return 0
}