1
- import { Logger } from "../tools/logger" ;
2
- import { OffsetException } from "./OffsetException" ;
3
- import { TEvent } from "./TEvent" ;
1
+ import { Logger } from "../../ tools/logger" ;
2
+ import { OffsetException } from "../RunTime /OffsetException" ;
3
+ import { TEvent } from "../RunTime /TEvent" ;
4
4
5
5
let logger = new Logger ( "CommandSystem" ) ;
6
6
7
7
export namespace TMBotCmd {
8
+ let ACCEPT_SYMBOL = Symbol ( Math . floor ( Math . random ( ) * 1000 ) ) ;
8
9
export namespace CommandParams {
9
10
/**
10
11
* 父
@@ -65,6 +66,7 @@ export namespace TMBotCmd {
65
66
super ( ) ;
66
67
}
67
68
_paramIsThis ( str : string ) {
69
+ if ( typeof ( str ) != "string" ) { return false ; }
68
70
this . content = str ;
69
71
return true ;
70
72
}
@@ -115,6 +117,7 @@ export namespace TMBotCmd {
115
117
private rawText : string | undefined ;
116
118
constructor ( public name : string ) { super ( ) ; }
117
119
_paramIsThis ( _str : string , oriRes : string [ ] , index : number ) {
120
+ if ( typeof ( _str ) != "string" ) { return false ; }
118
121
this . rawText = oriRes . slice ( index ) . join ( " " ) ;
119
122
return true ;
120
123
}
@@ -302,7 +305,7 @@ export namespace TMBotCmd {
302
305
* @param perm 运行所需权限
303
306
*/
304
307
newCommand ( cmd : string , description : string , perm : RunCmdNeedPerm ) {
305
- let obj = new this . cmdClass ( cmd , description , perm , this ) ;
308
+ let obj = new this . cmdClass ( cmd , description , perm , this , ACCEPT_SYMBOL ) ;
306
309
return obj ;
307
310
}
308
311
@@ -386,9 +389,9 @@ export namespace TMBotCmd {
386
389
}
387
390
388
391
/**
389
- * 单个命令
392
+ * 单个命令,只作为父类存在
390
393
*/
391
- class TMBotCommand <
394
+ export class TMBotCommand <
392
395
RunCmdNeedPerm extends TMBotCommandPerm < any > ,
393
396
CmdRunner extends TMBotCommandRunner < RunCmdNeedPerm > ,
394
397
CmdOutput extends TMBotCommandOutput > {
@@ -432,7 +435,10 @@ export namespace TMBotCmd {
432
435
params : CommandParams . Param < unknown > [ ]
433
436
) => void
434
437
} [ ] = [ ] ;
435
- constructor ( private cmd_ : string , private _description : string , private needPerm : RunCmdNeedPerm , private cmdSystem : TMBotCommandSystem < RunCmdNeedPerm , CmdRunner , CmdOutput > ) {
438
+ constructor ( private cmd_ : string , private _description : string , private needPerm : RunCmdNeedPerm , private cmdSystem : TMBotCommandSystem < RunCmdNeedPerm , CmdRunner , CmdOutput > , accept_sym : Symbol ) {
439
+ if ( accept_sym != ACCEPT_SYMBOL ) {
440
+ throw new OffsetException ( 1 , `单个命令无法被直接构建出来` ) ;
441
+ }
436
442
if ( cmd_ . indexOf ( " " ) != - 1 ) {
437
443
throw new OffsetException ( 3 , `主命令不得含有空格字符` ) ;
438
444
} else if ( cmd_ == "" ) {
@@ -541,13 +547,11 @@ export namespace TMBotCmd {
541
547
if ( canHasMandatory ) {
542
548
canHasMandatory = param . isMandatory ;
543
549
} else if ( param . isMandatory ) {
544
- logger . warn ( `命令: "${ this . cmd } " 注册指令重载失败!原因:在非必须参数出现后就不可出现必须参数了!` ) ;
545
- return undefined ;
550
+ throw new OffsetException ( 1 , `命令: "${ this . cmd } " 注册指令重载失败!原因:在非必须参数出现后就不可出现必须参数了!` ) ;
546
551
}
547
552
if ( param instanceof CommandParams . RawText ) {
548
553
if ( ! ! params [ ( i + 1 ) ] ) {
549
- logger . warn ( `命令: "${ this . cmd } " 注册指令重载失败!原因:在RawText之后不能有任何参数了!` ) ;
550
- return undefined ;
554
+ throw new OffsetException ( 1 , `命令: "${ this . cmd } " 注册指令重载失败!原因:在RawText之后不能有任何参数了!` ) ;
551
555
}
552
556
}
553
557
i ++ ;
@@ -652,7 +656,7 @@ export namespace TMBotCmd {
652
656
this . helpCmd = cmdSystem . newCommand ( `help` , `命令帮助` , { "isEligible" : ( ) => true } as TMBotCommandPerm < any > ) ;
653
657
this . helpCmd . setAlias ( "?" ) ;
654
658
655
- this . helpCmd . overload ( [ ] ) ! ( ( cmd , _runner , out , _params ) => {
659
+ this . helpCmd . overload ( [ ] ) ( ( cmd , _runner , out , _params ) => {
656
660
let arr = MapMap ( this . cache ) [ 1 ] ;
657
661
let content = ( [ ] as string [ ] ) . concat ( ...arr ) ;
658
662
let pages = splitArr ( content , 7 ) ;
@@ -665,7 +669,7 @@ export namespace TMBotCmd {
665
669
cmd . RunningCompleted ( ) ;
666
670
} ) ;
667
671
668
- this . helpCmd . overload ( [ new CommandParams . Number ( "Page" , false ) ] ) ! ( ( cmd , _runner , out , params ) => {
672
+ this . helpCmd . overload ( [ new CommandParams . Number ( "Page" , false ) ] ) ( ( cmd , _runner , out , params ) => {
669
673
let arr = MapMap ( this . cache ) [ 1 ] ;
670
674
let content = ( [ ] as string [ ] ) . concat ( ...arr ) ;
671
675
let pages = splitArr ( content , 7 ) ;
@@ -682,7 +686,7 @@ export namespace TMBotCmd {
682
686
cmd . RunningCompleted ( ) ;
683
687
} ) ;
684
688
685
- this . helpCmd . overload ( [ new CommandParams . String ( "cmd" ) ] ) ! ( ( cmd , _runner , out , params ) => {
689
+ this . helpCmd . overload ( [ new CommandParams . String ( "cmd" ) ] ) ( ( cmd , _runner , out , params ) => {
686
690
let nowSelCmd = params [ 0 ] . value ! ;
687
691
let res = this . list . get ( nowSelCmd ) ;
688
692
if ( ! res ) {
0 commit comments