silent.tin 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #nop 做一个安静的客户端。;
  2. #nop 「隐藏自己,做好清理。」—— 《三体·黑暗森林》;
  3. #nop 命令白名单。;
  4. #nop 只有纯小写字母,空格,减号组成的命令无需再加白名单。这里只维护例外;
  5. #var silent-WhiteList {
  6. chat; chat*; qq; qq*;
  7. helpme; helpme*; tt; tt*;
  8. rumor; rumor*; tell; say;
  9. bd; bd*; group; group*;
  10. nation; nation*; ask; i2;
  11. buy; list; node; fullme;
  12. shu; dang; verify; perform;
  13. amber_alert; status_me; set; unset;
  14. };
  15. #nop 文字表情;
  16. #cat silent-WhiteList {
  17. ...; :)..; :D; :P; ?;
  18. ??; @@; ad.;
  19. };
  20. #var silent-LastCmd {};
  21. #alias {^%*{|ID=paotin/silent}$} {
  22. #local cmd {%0};
  23. #if { {$cmd} === {} } {
  24. #return;
  25. };
  26. #local ok {@silent.Check{$cmd}};
  27. #if { $ok } {
  28. #var silent-LastCmd {};
  29. xtt.Send {$cmd};
  30. #return;
  31. };
  32. #echo {<169>命令「<139>$cmd<169>」不是一个合法的 MUD 命令,如果确认是,请更新白名单。<099>};
  33. #if { {$cmd} != {$silent-LastCmd} } {
  34. #echo {<169>本次命令<119>已被抑制<169>。如果你着急输入,可以重复一次本命令,将临时通过一次。<099>};
  35. #var silent-LastCmd {$cmd};
  36. };
  37. #else {
  38. #var silent-LastCmd {};
  39. xtt.Send {%0};
  40. };
  41. } {9.999};
  42. #func {silent.Check} {
  43. #local cmd {%0};
  44. #replace {cmd} {^%S{| (.*)}$} {
  45. {cmd}{&1}
  46. {args}{&3}
  47. };
  48. #local cmd {$cmd};
  49. #nop 这个是 chat;
  50. #if { {$cmd[cmd]} == {'%*} } {
  51. #return 1;
  52. };
  53. #nop 白名单通行;
  54. #if { {$silent-WhiteList[$cmd[cmd]]} == {true} } {
  55. #return 1;
  56. };
  57. #nop 否则只接受指定格式的命令;
  58. #if { {$cmd[cmd]} != {{[a-z0-9_]{1,10}}} } {
  59. #return 0;
  60. };
  61. #nop 参数不允许有特殊字符;
  62. #var silent-check-retcode {};
  63. #regex {$cmd[args]} {{*UTF8}{^([a-z0-9. -]|\p{Han})*$}} {
  64. #var silent-check-retcode {1};
  65. } {
  66. #var silent-check-retcode {0};
  67. };
  68. #local retcode {$silent-check-retcode};
  69. #unvar silent-check-retcode;
  70. #return $retcode;
  71. };
  72. #alias {silent.Init} {
  73. #local list {$silent-WhiteList};
  74. #local cmd {};
  75. #var silent-WhiteList {};
  76. #foreach {$list} {cmd} {
  77. #var {silent-WhiteList[$cmd]} {true};
  78. };
  79. };
  80. silent.Init;