#nop 做一个安静的客户端。; #nop 「隐藏自己,做好清理。」—— 《三体·黑暗森林》; #nop 命令白名单。; #nop 只有纯小写字母,空格,减号组成的命令无需再加白名单。这里只维护例外; #var silent-WhiteList { chat; chat*; qq; qq*; helpme; helpme*; tt; tt*; rumor; rumor*; tell; say; bd; bd*; group; group*; nation; nation*; ask; i2; buy; list; node; fullme; shu; dang; verify; perform; amber_alert; status_me; set; unset; }; #nop 文字表情; #cat silent-WhiteList { ...; :)..; :D; :P; ?; ??; @@; ad.; }; #var silent-LastCmd {}; #alias {^%*{|ID=paotin/silent}$} { #local cmd {%0}; #if { {$cmd} === {} } { #return; }; #local ok {@silent.Check{$cmd}}; #if { $ok } { #var silent-LastCmd {}; xtt.Send {$cmd}; #return; }; #echo {<169>命令「<139>$cmd<169>」不是一个合法的 MUD 命令,如果确认是,请更新白名单。<099>}; #if { {$cmd} != {$silent-LastCmd} } { #echo {<169>本次命令<119>已被抑制<169>。如果你着急输入,可以重复一次本命令,将临时通过一次。<099>}; #var silent-LastCmd {$cmd}; }; #else { #var silent-LastCmd {}; xtt.Send {%0}; }; } {9.999}; #func {silent.Check} { #local cmd {%0}; #replace {cmd} {^%S{| (.*)}$} { {cmd}{&1} {args}{&3} }; #local cmd {$cmd}; #nop 这个是 chat; #if { {$cmd[cmd]} == {'%*} } { #return 1; }; #nop 白名单通行; #if { {$silent-WhiteList[$cmd[cmd]]} == {true} } { #return 1; }; #nop 否则只接受指定格式的命令; #if { {$cmd[cmd]} != {{[a-z0-9_]{1,10}}} } { #return 0; }; #nop 参数不允许有特殊字符; #var silent-check-retcode {}; #regex {$cmd[args]} {{*UTF8}{^([a-z0-9. -]|\p{Han})*$}} { #var silent-check-retcode {1}; } { #var silent-check-retcode {0}; }; #local retcode {$silent-check-retcode}; #unvar silent-check-retcode; #return $retcode; }; #alias {silent.Init} { #local list {$silent-WhiteList}; #local cmd {}; #var silent-WhiteList {}; #foreach {$list} {cmd} { #var {silent-WhiteList[$cmd]} {true}; }; }; silent.Init;