Paul Klumpp 12 år sedan
förälder
incheckning
3b2854ee15
1 ändrade filer med 33 tillägg och 10 borttagningar
  1. 33 10
      cims.tcl

+ 33 - 10
cims.tcl

@@ -63,6 +63,7 @@ namespace eval ::cims {
   variable mnet_colors
   variable mnet_colors_optional
   variable mnet_reached_users
+	variable mnet_reached_userlist
   variable mnet_reached_chans
   variable mnet_http_config 
   variable mnet_local_config
@@ -613,6 +614,16 @@ proc ::cims::chanstat_users {chan users} {
 	return $users
 }
 
+proc ::cims::chanstat_userlist {chan unique_userlist} {
+	set ch_userlist [chanlist ${chan}]
+
+	lappend unique_userlist $ch_userlist
+	putlog "userlist: $unique_userlist"
+	set unique_userlist [lsort -unique $unique_userlist]
+
+	return $unique_userlist	
+}
+
 proc ::cims::history_queue {bucket nickname channel rec_text} {
 #::cims::history_queue $network,$name "$timestamp $rec_nickname $rec_channel $rec_text"
   variable mnet_histories 
@@ -704,6 +715,7 @@ proc ::cims::receive_message {rec_botnick cmd rec_data} {
 	
 	putlog "::cims:: + Relaying Message from: $rec_nickname @ $rec_botnick @ $rec_channel: $rec_text"
 	
+	set unique_userlist ""
 	set users 0
 	set count_channels 0
 			
@@ -720,6 +732,8 @@ proc ::cims::receive_message {rec_botnick cmd rec_data} {
 				incr count_channels
 	
 				set users [::cims::chanstat_users $chan $users]
+				set unique_userlist [::cims::chanstat_userlist $chan $unique_userlist]
+				
 				putlog "::cims:: * Remote counting $chan users: $users"
 				::cims::put_local_netmessage $network $name $chan $rec_nickname $rec_channel $rec_text
 				
@@ -735,13 +749,14 @@ proc ::cims::receive_message {rec_botnick cmd rec_data} {
 	}
 	
 	# ANSWER! SEND!
-	::cims::put_bot $rec_botnick "mnet_answer $network $name $rec_channel $users $count_channels"
+	::cims::put_bot $rec_botnick "mnet_answer $network $name $rec_channel $users $count_channels $unique_userlist"
 	return 0
 }
 
 proc ::cims::receive_answer {rec_botnick cmd rec_data} {
   variable mnet 
   variable mnet_reached_users 
+	variable mnet_reached_userlist
   variable mnet_reached_chans
 
 	# we receive a STRING in rec_data! convert into list!
@@ -750,20 +765,22 @@ proc ::cims::receive_answer {rec_botnick cmd rec_data} {
 	# work with list (lindex, lrange) and put together to a STRING again with JOIN.
 	set network [join [lindex $rec_data 0]]
 	set name    [join [lindex $rec_data 1]]
-        set chan    [join [lindex $rec_data 2]]
-	
-        set rec_usercount [join [lindex $rec_data 3]]
+	set chan    [join [lindex $rec_data 2]]
+
+	set rec_usercount [join [lindex $rec_data 3]]
 	set rec_chancount [join [lindex $rec_data 4]]
-#	set rec_text [lrange $rec_data 2 end]
+	set rec_userlist [join [lindex $rec_data 5]]
 
 	# get this bots results to our namespaced variable:
 	# FIXME: make simple userstats more accurate by sending nicknames back..
 	# done: userstats should be counted in a correct variablename .. according to network and frequency
-	#        if you don't pay attention to it, a conflict between two broadcasts counting users may appear.
-	#     $mnet_reached_chans($name,$chan) <- $mnet_reached_users($name,$chan)
+	#       if you don't pay attention to it, a conflict between two broadcasts counting users may appear.
+	#       $mnet_reached_chans($name,$chan) <- $mnet_reached_users($name,$chan)
 	set mnet_reached_users($name,$chan) [expr $mnet_reached_users($name,$chan) + $rec_usercount]
 	set mnet_reached_chans($name,$chan) [expr $mnet_reached_chans($name,$chan) + $rec_chancount]
+	set mnet_reached_userlist($name,$chan) [lsort -unique [lappend mnet_reached_userlist($name,$chan) $rec_userlist]]
 	
+  #hau
 	putlog "::cims:: * $rec_botnick told me he sent its message to $rec_usercount people in $rec_chancount channels for $network frequency $name!"
 	#putlog "::cims:: * Users reached since $name call: $mnet_reached_users($name,$chan) in channels: $mnet_reached_chans($name,$chan)"
 	
@@ -963,6 +980,7 @@ proc ::cims::allowed_netbot {network netbot} {
 proc ::cims::reply_timeout {name chan} {
   variable mnet 
   variable mnet_reached_users 
+	variable mnet_reached_userlist
   variable mnet_reached_chans
 	
 	# clean $name and $chan
@@ -971,16 +989,19 @@ proc ::cims::reply_timeout {name chan} {
 	
 	# easify variables
 	set users $mnet_reached_users($name,$chan)
+	set userlist $mnet_reached_userlist($name,$chan)
 	set chans $mnet_reached_chans($name,$chan)
 
+	set user_cnt [llength [join $userlist]]
+	
 	#putlog "::cims:: HIER $name UND $chan"
 	# inzwischen drfte auch die antwort gekommen sein.. also jetzt mnet_reached_* auswerten nach timeout..
 	
-	# make stats channel-dependent
+	# make stats channel-dependent 
 	putlog "::cims:: * After ALL: Count_Users: $mnet_reached_users($name,$chan) Count_Channels: $mnet_reached_chans($name,$chan)"
 	
 	# Give me some reply.
-	::putils::put_local_msg ${chan} "::cims:: Message sent to $users users in $chans channels."
+	::putils::put_local_msg ${chan} "::cims:: Message sent to $chans channels, reaching $user_cnt unique users."
 }
 
 
@@ -1417,6 +1438,7 @@ proc ::cims::messaging_public {nick mask hand chan text} {
   variable mnet_delay
   variable mnet_histories
   variable mnet_reached_users 
+  variable mnet_reached_userlist
   variable mnet_reached_chans
 
   global botnet-nick lastbind
@@ -1485,6 +1507,7 @@ proc ::cims::messaging_public {nick mask hand chan text} {
 
 		# reset stats .. because he is just freshly sending
 		set mnet_reached_users($name,$chan) "0"
+		set mnet_reached_userlist($name,$chan) ""
 		set mnet_reached_chans($name,$chan) "0"
 
 		::cims::history_queue $network,$name $nick $chan $text
@@ -1524,8 +1547,8 @@ proc ::cims::messaging_public {nick mask hand chan text} {
 					if {$mnet_freqs_onoff($name,$_ownchan) == 1} {
 					
 						# userstats local
-#						set mnet(reached) [::cims::chanstat_users $_ownchan $mnet(reached)]
 						set mnet_reached_users($name,$chan) [::cims::chanstat_users $_ownchan $mnet_reached_users($name,$chan)]
+						set mnet_reached_userlist($name,$chan) [::cims::chanstat_userlist $_ownchan $mnet_reached_userlist($name,$chan)]
 						
 						putlog "::cims:: * Localcounting up $_ownchan users: $mnet_reached_users($name,$chan)"