BT.VoiceMe.tcl 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #########################################################################
  2. ## BlackTools - The Ultimate Channel Control Script ##
  3. ## One TCL. One smart Eggdrop ##
  4. #########################################################################
  5. ########################### VOICEME TCL #############################
  6. #########################################################################
  7. ## ##
  8. ## BlackTools : http://blacktools.tclscripts.net ##
  9. ## Bugs report : http://www.tclscripts.net/ ##
  10. ## GitHub page : https://github.com/tclscripts/BlackToolS-TCL ##
  11. ## Online Help : irc://irc.undernet.org/tcl-help ##
  12. ## #TCL-HELP / UnderNet ##
  13. ## You can ask in english or romanian ##
  14. ## ##
  15. #########################################################################
  16. proc voiceme:join {nick host hand chan} {
  17. global black
  18. if {[isbotnick $nick]} {
  19. if {[setting:get $chan voiceme]} {
  20. utimer 30 [list voiceme:check:valid $chan]
  21. }
  22. }
  23. }
  24. proc voiceme:mode {nick host hand chan mod who} {
  25. global black
  26. if {[setting:get $chan voiceme]} {
  27. if {$mod == "+m"} {
  28. utimer 30 [list voiceme:check:valid $chan]
  29. }
  30. if {$mod == "-m"} {
  31. utimer 15 [list voiceme:check:nomod $chan]
  32. }
  33. }
  34. }
  35. proc voiceme:check:nomod {chan} {
  36. global black botnick
  37. set getlang [string tolower [setting:get $chan lang]]
  38. if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
  39. set chanmode [getchanmode $chan]
  40. if {[string match "*m*" $chanmode]} {
  41. return
  42. }
  43. if {[info exists black(voiceme:stat:$chan)]} {
  44. set replace(%chan%) $chan
  45. set replace(%botnick%) $botnick
  46. set text [black:color:set "" $black(say.$getlang.voiceme.2)]
  47. set text [join $text]
  48. puthelp "PRIVMSG $chan :[string map [array get replace] $text]"
  49. if {[info exists black(voiceme:stat:$chan)]} {
  50. unset black(voiceme:stat:$chan)
  51. }
  52. if {[info exists black(voiceme:$chan:timer_start)]} {
  53. unset black(voiceme:$chan:timer_start)
  54. }
  55. }
  56. }
  57. proc voiceme:get:time {chan} {
  58. global black
  59. if {[setting:get $chan voiceme-showtime] != ""} {
  60. set return_time [time_return_minute [setting:get $chan voiceme-showtime]]
  61. } else {
  62. set return_time [time_return_minute $black(voiceme:msgtime)]
  63. }
  64. return $return_time
  65. }
  66. proc voiceme:check:valid {chan} {
  67. global black botnick
  68. set found_timer 0
  69. set getlang [string tolower [setting:get $chan lang]]
  70. if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
  71. set replace(%chan%) $chan
  72. set replace(%botnick%) $botnick
  73. set replace(%chanserv%) $black(chanserv)
  74. set chanmode [getchanmode $chan]
  75. if {[info exists black(voiceme:stat:$chan)]} {
  76. return
  77. }
  78. if {[string match "*m*" $chanmode]} {
  79. set black(voiceme:stat:$chan) 1
  80. if {[setting:get $chan nologged]} {
  81. set text [black:color:set "" $black(say.$getlang.voiceme.6)]
  82. } else {
  83. set text [black:color:set "" $black(say.$getlang.voiceme.1)]
  84. }
  85. set text [join $text]
  86. puthelp "PRIVMSG $chan :[string map [array get replace] $text]"
  87. if {![info exists black(voiceme:$chan:timer_start)]} {
  88. set black(voiceme:$chan:timer_start) [voiceme:get:time $chan]
  89. }
  90. }
  91. }
  92. proc voiceme:showmsg_timer {chans} {
  93. global black botnick
  94. set found_entry 0
  95. set unixtime [unixtime]
  96. foreach chan $chans {
  97. if {[setting:get $chan voiceme]} {
  98. if {[info exists black(lastaction:$chan)]} {
  99. set total_anunt 0
  100. set unixtime [unixtime]
  101. if {[setting:get $chan voiceme-showtime] != ""} {
  102. set return_time [time_return_minute [setting:get $chan voiceme-showtime]]
  103. } else {
  104. set return_time [time_return_minute $black(voiceme:msgtime)]
  105. }
  106. set time [expr [expr [expr $return_time * $black(entry:shown)] * 60] + $unixtime]
  107. if {[expr $unixtime - $black(lastaction:$chan)] > [expr $time - $unixtime]} {
  108. continue
  109. }
  110. } else { continue }
  111. set getlang [string tolower [setting:get $chan lang]]
  112. set replace(%botnick%) $botnick
  113. set replace(%chanserv%) $black(chanserv)
  114. if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
  115. set replace(%chan%) $chan
  116. if {![info exists black(voiceme:stat:$chan)]} {
  117. continue
  118. } else {
  119. if {[setting:get $chan nologged]} {
  120. set text [black:color:set "" $black(say.$getlang.voiceme.6)]
  121. } else {
  122. set text [black:color:set "" $black(say.$getlang.voiceme.1)]
  123. }
  124. set text [join $text]
  125. puthelp "PRIVMSG $chan :[string map [array get replace] $text]"
  126. set found_entry 1
  127. }
  128. } else {
  129. if {[info exists black(voiceme:stat:$chan)]} {
  130. unset black(voiceme:stat:$chan)
  131. }
  132. if {[info exists black(voiceme:$chan:timer_start)]} {
  133. unset black(voiceme:$chan:timer_start)
  134. }
  135. }
  136. }
  137. }
  138. ##############
  139. #########################################################################
  140. ## END ##
  141. #########################################################################