Răsfoiți Sursa

Add files via upload

Daniel Voipan 5 ani în urmă
părinte
comite
d606ba20f1
1 a modificat fișierele cu 221 adăugiri și 0 ștergeri
  1. 221 0
      BlackTools/Modules/BT.GuestNick.tcl

+ 221 - 0
BlackTools/Modules/BT.GuestNick.tcl

@@ -0,0 +1,221 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+###########################   GUESTNICK TCL   ###########################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL        ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc guestnick:process {nick host hand chan chan1 who gnick type number modul} {
+	global black
+	set num 0
+	set temp_num 0
+	set cmd_status [btcmd:status $chan $hand "guestnick" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $modul
+	return
+}
+
+switch $who {
+
+	on {
+	setting:set $chan +guestnick ""
+	blacktools:tell $nick $host $hand $chan $chan1 guestnick.1 none
+}
+	off {
+	setting:set $chan -guestnick ""
+	blacktools:tell $nick $host $hand $chan $chan1 guestnick.2 none
+}
+	add {
+if {$gnick == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "guestnick"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "guestnick"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "guestnick"
+		}
+	}
+	return
+}
+
+	set findword [prot:findword $chan "GUESTNICK" $gnick]
+if {$findword == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.wordexists $gnick
+	return
+}
+
+while {$temp_num == 0} {
+	set get [find:num $num $chan "GUESTNICK"]
+if {$get == "$num"} {
+	set num [expr $num + 1]
+	} else { set temp_num 1 }
+}
+	set file [open $black(add_file) a]
+	set enc_chan [encoding convertto utf-8 $chan]
+	puts $file "$enc_chan GUESTNICK $num $gnick"
+	close $file
+	blacktools:tell $nick $host $hand $chan $chan1 guestnick.3 "$gnick $num"
+}
+del {
+
+if {![regexp {^[0-9]} $number]} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "guestnick"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "guestnick"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "guestnick"
+		}
+	}
+	return
+}
+	set ret [find:num $number $chan "GUESTNICK"]
+if {$ret == 0} { 
+	blacktools:tell $nick $host $hand $chan $chan1 guestnick.5 $number
+	return
+}
+	set file [open $black(add_file) "r"]
+	set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
+	set temp "$black(tempdir)/bt_temp.$timestamp"
+	set tempwrite [open $temp w]
+while {[gets $file line] != -1} {
+	set read_num [lindex [split $line] 2]
+	set read_type [lindex [split $line] 1]
+	set read_chan [lindex [split $line] 0]
+	set enc_chan [encoding convertfrom utf-8 $read_chan]
+if {[string equal $number $read_num] && [string equal $read_type "GUESTNICK"] && [string equal $enc_chan $chan]} { 
+	continue
+} else {
+	puts $tempwrite $line
+		}	 
+    }
+	close $tempwrite
+	close $file
+    file rename -force $temp $black(add_file)
+	blacktools:tell $nick $host $hand $chan $chan1 guestnick.4 $number		
+}
+
+list {
+	array set nicklist [list]
+	set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
+	set temp "$black(tempdir)/nick_temp.$timestamp"
+	set file [open $black(add_file) "r"]
+	set w [read -nonewline $file]
+	close $file
+	set data [split $w "\n"]
+foreach line $data {
+	set read_chan [lindex [split $line] 0]
+	set enc_chan [encoding convertfrom utf-8 $read_chan]
+	set read_type [lindex [split $line] 1]
+if {[string match -nocase $enc_chan $chan] && [string match -nocase $read_type "GUESTNICK"]} {
+	set msg_num [lindex [split $line] 2]
+	set message [lrange [split $line] 3 end]
+lappend nicklist($msg_num) $message
+	}
+}
+	set tempwrite [open $temp w]
+foreach msg [lsort -integer -increasing [array names nicklist]] {
+	puts $tempwrite "$msg [join $nicklist($msg)]"
+	}
+	close $tempwrite
+	set file [open $temp "r"]
+	set w [read -nonewline $file]
+	close $file
+	set data [split $w "\n"]
+	file delete $temp
+	module:getinfo $nick $host $hand $chan $chan1 $type $data "guestnick" "0" $number
+		}
+default {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "guestnick"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "guestnick"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "guestnick"
+				}
+			}
+		}		
+	}	
+}
+
+proc guestnick:module {nick host hand chan} {
+	global black
+if {![validchan $chan]} {
+		return
+}
+if {[setting:get $chan guestnick]} {
+if {[info exists black(turnOnFlood:$chan)]} {
+	return
+}
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set method [setting:get $chan guestnick-msgmethod]
+if {$method == ""} {
+	set method $black(guestnick:msgmethod)
+}
+	set file [open $black(add_file) r]
+while {[gets $file line] != -1} {
+	set read_chan [lindex [split $line] 0]
+	set read_type [lindex [split $line] 1]
+	set read_msg [lrange [split $line] 3 end]
+if {[string equal -nocase $read_chan $chan] && [string equal -nocase $read_type "GUESTNICK"] && [string match -nocase $read_msg $nick]} {
+	set replace(%nick%) $nick
+	set replace(%chan%) $chan
+	set message [setting:get $chan guestnick-message]
+if {$message == ""} {
+	set message $black(say.$getlang.guestnick.10)
+}
+	set text [black:color:set "" $message]
+	set reply [join $text]
+	set message [string map [array get replace] $reply]
+	switch [string tolower $method] {
+	chan {
+	putserv "PRIVMSG $chan :$message"
+	}	
+	privmsg {
+	putserv "PRIVMSG $nick :$message"
+	}
+	notice {
+	putserv "NOTICE $nick :$message"
+	}
+				}
+			}
+		}
+	close $file
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################