| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #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;
|