; ================================================================ ; Delay Hidden Voice Script (+Dm Auto Voice Handler) ; ================================================================ ; Usage: ; This script is designed for Undernet channels using mode +Dm ; (Delay Join + Moderated). When enabled, users join the channel ; without voice and are automatically voiced (+v) after a short delay. ; ; Features: ; - Automatically scans joining users via NAMES reply (RAW 355) ; - WHOIS checks users before voicing ; - Voices users after a short delay (5 seconds) ; - Includes anti-flood protection when unhiding users ; - Toggle-safe with timer cleanup ; ; Requirements: ; - Must be on Undernet ; - Requires channel operator access to set +Dm and +v ; ; Notes: ; - The script sets channel mode +Dm when enabled. ; - When disabled, it removes +Dm and clears timers. ; - Uses a temporary hash system to prevent voice flooding. ; ================================================================ menu channel, { $iif(undernet isin $network,Delay Voice) ..ON:husers | mode $chan +Dm ..OFF:husers | mode $chan -Dm } alias dm.off { .names -d $chan if ($timer(hUsers) != $null) { .timerhUsers off unset %huserchan echo -at Delay Hidden voice Script is Off! .mode $chan -Dm unhide $chan } } alias dm.on { .timerhUsers 0 15 .names -d $chan set %huserchan $chan .mode $chan +Dm echo -at Delay Hidden voice Script is On! } raw 355:*: { if ( $4 == $null ) { HALT } else { set %allnicks $4- set %i 1 :next set %nick $gettok(%allnicks,%i, 32) if %nick == $null goto done if $istok( %nrdone,%nick,32 ) { inc %i | goto next } .set -u60 %nrdone %nrdone %nick .enable #ghost .whois %nick ;.timern 1 1 .notice %nick You Are hidden under +Dm channel modes, in a moment you will be voiced(+v) and you will be able to speak. .timerv 1 5 mode %huserchan +v %nick inc %i goto next :done } halt } raw 366:*: halt #ghost off raw 301:*: halt raw 310:*: halt raw 311:*: { echo -at 4 $+ Scanning Hidden User: $address($2,5)  | halt } raw 312:*: halt raw 313:*: halt raw 330:*: halt raw 319:*: halt raw 317:*: halt raw 318:*: { .timer 1 15 .disable #ghost | haltdef } #ghost end alias unhide { hadd -mu4 noflood plx 1 .timer 1 0 names -d $1 } raw 355:*:{ if ( $hget(noflood,plx) ) { var %total = $numtok($4-,32) hadd -mu15 user list $4- var %x = $hget(user,0).item while ( %x > 0 ) { var %a = $gettok($hget(user,list),1-6,32) .timer 1 0 mode $3 +vvvvvv %a .timer 1 1 mode $3 -vvvvvv %a hadd user list $gettok($hget(user,list),7-,32) dec %x 6 } HALT } } raw 366:*:{ if ( $Hget(noflood,plx) ) { HALT } }