06/07/2013, 14:29
Bon, demande supplémentaire : le canal "cible" est protégé par un mot de passe :
Une autre alternative proposée par MenzAgitat sur le canal, c'est de ne pas gérer le mot de passe et de mettre un "cs invite" sur le need-key.
A voir en fonction des possibilités du réseau, du canal, ...
tcl
namespace eval joiner {
# Nom de l'eggdrop hub
variable hub "toto"
# Canal "pool"
variable pool "#eggdrops"
# Canal à nombre d'eggdrops fixe
variable target "#target"
# Mot de passe du canal cible
variable tpass "lepassword"
# Nombre d'eggdrops
variable nbb 6
bind part - "$::joiner::target *" ::joiner::partchan
bind sign - "$::joiner::target *" ::joiner::partchan
proc partchan {nick uhost handle chan {msg ""}} {
if { [string tolower $::botnick] != [string tolower $::joiner::hub] } { return 0; }
set nb [llength [chanlist $chan]]
if { $nb < $::joiner::nbb } {
::joiner::invite [expr $::joiner::nbb - $nb]
}
return 0
}
proc invite { nb } {
set pres [chanlist $::joiner::target]
set pot [chanlist $::joiner::pool]
foreach drop [split $pres] {
set e [lsearch $pot $drop]
set pot [lreplace $pot $e $e]
}
set inv 0
while {$inv < $nb } {
set bot [lindex $pot [rand [llength $pot]]]
set e [lsearch $pot $bot]
set pot [lreplace $pot $e $e]
putbot $bot ">come"
incr inv
}
return 0
}
bind bot - ">come" ::joiner::come
proc come {frm_bot command arg} {
if { [string tolower $frm_bot] != [string tolower $::joiner::hub] } { return 0; }
channel add $::joiner::target
if { $::joiner::pass != '' } {
channel set $::joiner::target need-key { putquick "JOIN $::joiner::target $::joiner::tpass" }
}
}
bind evnt - "init-server" ::joiner::init_server
proc init_server {$type} {
if {[string tolower $::botnick] == [string tolower $::joiner::hub]} { return 0;}
if {[lsearch [channels] $::joiner::target]} {
channel remove $::joiner::target
}
}
}
Une autre alternative proposée par MenzAgitat sur le canal, c'est de ne pas gérer le mot de passe et de mettre un "cs invite" sur le need-key.
A voir en fonction des possibilités du réseau, du canal, ...