silent.tin 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. register; check; answer; reply;
  14. amber_alert; status_me; set; unset;
  15. wield; wi; unwield; uw;
  16. record; part_abandon; help;
  17. };
  18. #nop 文字表情;
  19. #cat silent-WhiteList {
  20. ...; :)..; :D; :P; ?;
  21. ??; @@; ad.;
  22. };
  23. #var silent-LastCmd {};
  24. #alias {^%*{|ID=paotin/silent}$} {
  25. #local cmd {%0};
  26. #if { {$cmd} === {} } {
  27. #return;
  28. };
  29. #local ok {@silent.Check{$cmd}};
  30. #if { $ok } {
  31. #var silent-LastCmd {};
  32. xtt.Send {$cmd};
  33. #return;
  34. };
  35. #echo {<169>命令「<139>$cmd<169>」不是一个合法的 MUD 命令,如果确认是,请更新白名单。<099>};
  36. #if { {$cmd} !== {$silent-LastCmd} } {
  37. #echo {<169>本次命令<119>已被抑制<169>。如果你确认命令没问题,可以先<139>回车重复<169>一次本命令,将临时通过一次。<099>};
  38. #var silent-LastCmd {$cmd};
  39. };
  40. #else {
  41. #var silent-LastCmd {};
  42. xtt.Send {%0};
  43. };
  44. } {9.999};
  45. #func {silent.Check} {
  46. #local cmd {%0};
  47. #replace {cmd} {^%S{| (.*)}$} {
  48. {cmd}{&1}
  49. {args}{&3}
  50. };
  51. #local cmd {$cmd};
  52. #nop 这个是 chat;
  53. #if { {$cmd[cmd]} == {'%*} } {
  54. #return 1;
  55. };
  56. #nop 白名单通行;
  57. #if { {$silent-WhiteList[$cmd[cmd]]} == {true} } {
  58. #return 1;
  59. };
  60. #nop 否则只接受指定格式的命令;
  61. #if { {$cmd[cmd]} != {{[a-z0-9_]{1,20}}} } {
  62. #return 0;
  63. };
  64. #nop 参数不允许有特殊字符;
  65. #var silent-check-retcode {};
  66. #regex {$cmd[args]} {{*UTF8}{^([a-z0-9'. -]| |\p{Han})*$}} {
  67. #var silent-check-retcode {1};
  68. } {
  69. #var silent-check-retcode {0};
  70. };
  71. #local retcode {$silent-check-retcode};
  72. #unvar silent-check-retcode;
  73. #return $retcode;
  74. };
  75. #alias {silent.Init} {
  76. #local list {$silent-WhiteList};
  77. #local cmd {};
  78. #var silent-WhiteList {};
  79. #foreach {$list} {cmd} {
  80. #var {silent-WhiteList[$cmd]} {true};
  81. };
  82. };
  83. #action {^什么?$E} {
  84. errLog 服务器无法识别你发送的 <139>@ga.ThisCmd{}<119> 命令。请检查你的输入或者机器人。;
  85. };
  86. silent.Init;