Code: Select all
#De Kus' RnS-Guest script
set rnsgpass "PASS"
set rnsgnotify "OWNER"
bind time - "00 06 ?2*" rnsg:hold
bind pub m|m !recover rnsg:recover
catch {unbind notc f|- "*" rnsg:recover:cb}
proc rnsg:hold {m h d mo y} {
set nick "RnS-Guest"
set sock [socket irc.de.euirc.net 6667]
if { [fconfigure $sock -error] != "" } {
timer 1 [list rnsg:hold [expr $m + 1] $h $d $mo $y]]
putlog "RnS-Guest.tcl: Verbindung fehlgeschlagen, versuche es gleich nochmal."
return 0
}
puts $sock "NICK RnS-Guest"
puts $sock "PASS $::rnsgpass"
puts $sock "USER guesthold . . :der geschützte Gastnick für den RnS JavaChat"
flush $sock
while { [lindex [split [gets $sock] :] 1] == "Nickname is already in use." } {
puts $sock "NICK [set nick \"RnS-Guest[rand 99]\"]"
flush $sock
}
gets $sock line
set lines "$line\n"
set reply [lindex [split $line :] 1]
puts $sock "PONG :$reply"
puts $sock "NOTICE $reply :VERSION ${::ctcp-version}"
puts $sock "MODE $nick +B"
flush $sock
while { [set line [gets $sock]] != ":$nick MODE $nick :+B" && ![eof $sock] } {
append lines "$line\n"
}
if { $nick != "RnS-Guest" } {
puthelp "PRIVMSG #rns :RnS-Guest: Es tut mir leid, dass dich stören musste, aber ich brauche Nick 2mal im Monat diesen Nick für 1 Sekunde. Du kannst ihn jetzt wieder haben."
puts $sock "$::nickservmask :RECOVER RnS-Guest $::rnsgpass"
flush $sock
append lines "[gets $sock]\n"
puts $sock "$::nickservmask :RELEASE RnS-Guest $::rnsgpass"
flush $sock
append lines "[gets $sock]\n"
puts $sock "NICK RnS-Guest"
flush $sock
append lines "[gets $sock]\n"
puts $sock "$::nickservmask :IDENTIFY $::rnsgpass"
flush $sock
append lines "[gets $sock]\n"
}
puts $sock "QUIT :thats all I wanted"
flush $sock
close $sock
if { [string match "*Passwort akzeptiert*" $lines] } {
putlog "RnS-Guest.tcl: Nick erfolgreich identifiziert"
} else {
putserv "PRIVMSG [hand2nick $::rnsgnotify]:Nick RnS-Guest nicht erfolgreich identifiziert. Schreibe error Log..."
putlog "RnS-Guest.tcl: Nick nicht erfolgreich identifiziert. Schreibe error Log..."
set fd [open logs/rnsg_error.log w]
puts -nonewline $fd $lines
close $fd
}
return 0
}
proc rnsg:recover {nick uhost hand chan text} {
if { [string equal -nocase $chan "#rns"] && [string equal -nocase $text "RnS-Guest"] } {
putquick "$::nickservmask :RECOVER RnS-Guest $::rnsgpass"
set ::rnsglastnick $nick
bind notc f|- "*" rnsg:recover:cb
bind nick - "*" rnsg:sorry
timer 2 [list catch {unbind notc f|- "*" rnsg:recover:cb}]
timer 2 [list catch {unbind nick - "*" rnsg:sorry}]
return 1
}
return 0
}
proc rnsg:recover:cb {nick uhost hand text dest} {
if { $hand == "nickserv" } {
puthelp "NOTICE $::rnsglastnick :NickServ antwortete: $text"
catch {unbind notc f|- "*" rnsg:recover:cb}
if { $text == "User claiming your nick has been killed." } {
putserv "$::nickservmask :RELEASE RnS-Guest $::rnsgpass"
puthelp "NOTICE $::rnsglastnick :Release Chatname wieder..."
}
}
return 0
}
proc rnsg:sorry {nick uhost hand chan newnick} {
if { [string equal -nocase $nick RnS-Guest] } {
puthelp "NOTICE $newnick :Es tut mir leid, $::rnsglastnick veranlasste den allgemeinen Java-Chat Nick von RnS freizugeben. Dies geschah wahrscheinlich, weil du ihn zu lange ohne ersichtlichen Grund benutzt hattest."
puthelp "NOTICE $newnick :Es ist dir freigestellt einen neuen Nick zu wählen. Wenn dich der Java-Client nicht ohnehin dazu auffordert kannst du dies mit \"/nick <neuernick>\" machen (ohne die Anführungszeichen)."
catch {unbind nick - "*" rnsg:sorry}
}
return 0
}
heh... try "/ns help identify" on euircDe Kus wrote:You cannot identify a nick you are not currently having (at least no nickserv I met until now supported that).
-NickServ- If you provide a nickname, you will be identified for this
-NickServ- nick, including vhost and autojoin.