/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠF orte Sc ar let ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ Ġ* ĠProject Ġ Ġsimple - robot Ċ Ġ* Ġ Ġ* ĠFile ĠĠĠĠ ĠMir ai Avatar . kt Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠYou Ġcan Ġcontact Ġthe Ġauthor Ġthrough Ġthe Ġfollowing Ġchannels : Ċ Ġ* Ġ Ġ* Ġgithub Ġhttps :// github . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġg itee Ġ Ġhttps :// g itee . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġemail Ġ ĠF orte Sc ar let @ 1 6 3 . com Ċ Ġ* Ġ Ġ* ĠQQ ĠĠĠĠĠ 1 1 4 9 1 5 9 2 1 8 Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġlove . fort e . sim bot . filter Ċ Ċ import Ġlove . fort e . sim bot . Context Ċ import Ġlove . fort e . sim bot . filter . Filter Target Processor . Default Processor . getTarget Text Ċ import Ġlove . fort e . sim bot . processor . Processor Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ /** Ċ Ġ* Ġ[ Filter Target Processor ] Ġæ£Ģ æµĭ åĻ¨ ãĢĤ Ċ Ġ*/ Ċ public Ġinterface ĠFilter Target Processor Checker Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ£Ģ æµĭ æīĢ æıĲä¾Ľ çļĦ Ġ` target ` ĠçļĦ åĢ¼ æĺ¯åĲ¦ ç¬¦åĲĪ æŃ¤ å¤ĦçĲĨ åĻ¨ çļĦ é¢Ħ æľŁ ãĢĤ ĊĠĠĠĠ Ġ* Ġå¦Ĥæŀľ ç¬¦åĲĪ é¢Ħ æľŁ ï¼Į åĪĻ ä¼ļ è¿ĶåĽŀ ä¸Ģä¸ª Ġ[ Filter Target Processor ] Ġ å®ŀä¾ĭ ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ null ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck ( target : ĠString ): ĠFilter Target Processor ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Filter Target Processor Checker ] ĠçļĦ æĹł æķĪ åĮĸ å®ŀä¾ĭ ï¼Į ä¸ĢèĪ¬ åľ¨ æī¾ ä¸įåĪ° åı¯çĶ¨ è§£æŀĲ åĻ¨ çļĦæĹ¶åĢĻ æīį ä¼ļ ä½¿çĶ¨ æŃ¤ å®ŀä¾ĭ æĿ¥ æıĲä¾Ľ å¼Ĥå¸¸ ä¿¡æģ¯ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠæŃ¤ å®ŀä¾ĭ çļĦ Ġ[ check ] Ġæ ° ¸ è¿ľ ä¼ļ å¤±è´¥ å¹¶ ä¼ļ æĬĽ åĩº å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject ĠDefault Checker Ġ: ĠFilter Target Processor Checker Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ£Ģ æµĭ æīĢ æıĲä¾Ľ çļĦ Ġ` target ` ĠçļĦ åĢ¼ æĺ¯åĲ¦ ç¬¦åĲĪ æŃ¤ å¤ĦçĲĨ åĻ¨ çļĦ é¢Ħ æľŁ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġå¦Ĥæŀľ ç¬¦åĲĪ é¢Ħ æľŁ ï¼Į åĪĻ ä¼ļ è¿ĶåĽŀ ä¸Ģä¸ª Ġ[ Filter Target Processor ] Ġ å®ŀä¾ĭ ï¼Į åĲ¦åĪĻ è¿ĶåĽŀ null ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠIllegalStateException Ġ[ check ] Ġæ ° ¸ è¿ľ ä¼ļ æĬĽ åĩº æŃ¤ å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck ( target : ĠString ): ĠNothing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException (" Cannot Ġfound Ġany Ġprocessor Ġfor Ġtarget Ġ'$ target '. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ public Ġdata Ġclass ĠFilter Target Processor Context ( override Ġval Ġmain Value : ĠFilter Data ) Ġ: ĠContext < Filter Data > Ċ Ċ /** Ċ Ġ* ĠFilter çļĦ target å¤ĦçĲĨ åĻ¨ ï¼Į åĲĮ äºİ æł¹æį® Ġ` target ` ĠçļĦ åĢ¼ èİ·åıĸ ä¸Ģä¸ª Ġ` String ` Ġ ç±»åŀĭ çļĦåĢ¼ ä»¥ è¿Ľè¡Į è¿ĩæ»¤ åĮ¹éħį ãĢĤ Ċ Ġ* Ċ Ġ* Ġ[ è¿ĩæ»¤ åĻ¨ çĽ®æłĩ å¤ĦçĲĨ åĻ¨ ][ Filter Target Processor ] Ġ å±ŀ äºİ ä¸Ģç§į Ġ[ å¤ĦçĲĨ åĻ¨ ][ Processor ] ãĢĤ Ċ Ġ*/ Ċ public Ġinterface ĠFilter Target Processor Ġ: ĠProcessor < Filter Data , ĠFilter Target Processor Context , ĠString ?> Ġ{ ĊĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġprocessor ( process Context : ĠFilter Target Processor Context ): ĠString ? Ġ= Ġget Target Text ( process Context . main Value ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĽ®æłĩ åĮ¹éħį åĢ¼ ï¼Į åĮ¹éħį æĸ¹å¼ı ä¸İ Ġ[ love . fort e . sim bot . annotation . Filter . match Type ] Ġ ä¸Ģèĩ´ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠæŃ¤ åĢ¼ æľĢç»Ī ä¼ļ ä¸İ Ġ[ love . fort e . sim bot . annotation . Filter . value ] Ġ è¿Ľè¡Į åĮ¹éħį æ¯Ķ å¯¹ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġå¦Ĥæŀľ è¿ĶåĽŀ åĢ¼ä¸º null ï¼ļ ĊĠĠĠĠ Ġ* Ġ Ġ- Ġå¦Ĥæŀľ å½ĵåīį äºĭä»¶ ç±»åŀĭ ä¸º Ġ[ æ¶Īæģ¯ äºĭä»¶ ][ love . fort e . sim bot . api . message . events . Message Get ] ï¼Į ĊĠĠĠĠ Ġ* Ġ Ġ éĤ£ä¹Ī çĲĨ è®º ä¸Ĭ æĺ¯ ä¸į åħģè®¸ ä¸º null çļĦ ï¼Į åĽłæŃ¤ å¦Ĥæŀľ æľĢç»Ī ä¸º null ï¼Į åĪĻ ä¼ļ è§Ĩ ä¸º ** ç©º åŃĹç¬¦ä¸² ** (` '' `) Ġ è¿Ľè¡Į åĮ¹éħį ãĢĤ ĊĠĠĠĠ Ġ* Ġ Ġ- Ġå¦Ĥæŀľ æĺ¯ åħ¶ä»ĸ äºĭä»¶ ç±»åŀĭ ï¼Į çĽ´æİ¥ è®¤ å®ļ ä¸º åĮ¹éħį å¤±è´¥ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġå½ĵ çĦ¶ ï¼Į å¦Ĥæŀľ [ love . fort e . sim bot . annotation . Filter . value ] ä¸ºç©º ï¼Į åĪĻ ä¼ļ çĽ´æİ¥ æĶ¾ è¡Į ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Target Text ( filter Data : ĠFilter Data ): ĠString ? ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Default Processor ] Ġ æĹł æķĪ çļĦ å®ŀçİ° ï¼Į ä¸ĢèĪ¬ åľ¨ æī¾ ä¸įåĪ° åı¯çĶ¨ è§£æŀĲ åĻ¨ çļĦæĹ¶åĢĻ æīį ä¼ļ ä½¿çĶ¨ æŃ¤ å®ŀä¾ĭ æĿ¥ æıĲä¾Ľ å¼Ĥå¸¸ ä¿¡æģ¯ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠæŃ¤ å®ŀä¾ĭ çļĦ Ġ[ getTarget Text ] Ġæ ° ¸ è¿ľ ä¼ļ å¤±è´¥ å¹¶ ä¼ļ æĬĽ åĩº å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalStateException Ġ[ getTarget Text ] Ġæ ° ¸ è¿ľ ä¼ļ æĬĽ åĩº æŃ¤ å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject ĠDefault Processor Ġ: ĠFilter Target Processor Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ ° ¸ è¿ľ ä¼ļ å¤±è´¥ å¹¶ æĬĽ åĩº Ġ[ IllegalStateException ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Target Text ( filter Data : ĠFilter Data ): ĠNothing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Default Ġfilter ĠProcessor Ġcannot Ġget Ġany Ġtarget Ġtext .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ[ Filter Target Processor ] ĠçļĦ åŁºç¡Ģ target æĬ½ è±¡ æ£Ģæµĭ åĻ¨ ï¼Į æıĲä¾Ľ ä¸Ģä¸ª åĮ¹éħį åĩ½æķ° è¿Ľè¡Į æ£Ģæµĭ ãĢĤ Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠBase Filter Target Processor Checker ( private Ġval Ġcheck Function : Ġ( String ) Ġ-> ĠFilter Target Processor ?) Ġ: ĊĠĠĠ ĠFilter Target Processor Checker Ġ{ ĊĠĠĠ Ġ/** ĠéĢļè¿ĩ æ£Ģæµĭ åĩ½æķ° è¿Ľè¡Į æ£Ģæµĭ ãĢĤ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcheck ( target : ĠString ): ĠFilter Target Processor ? Ġ= Ġcheck Function ( target ) Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ[ Filter Target Processor ] ĠçļĦ åĽºå®ļ target åĢ¼ æĬ½ è±¡ æ£Ģæµĭ åĻ¨ ï¼Į åį³ æıĲä¾Ľ ä¸Ģä¸ª åĽº å®ļçļĦ åĮ¹éħį åĢ¼ ãĢĤ Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠConst Filter Target Processor Checker < T Ġ: ĠFilter Target Processor >( ĊĠĠĠ Ġconst Target : ĠString , ĊĠĠĠ Ġconst Processor : ĠT , ĊĠĠĠ Ġignore Case : ĠBoolean Ġ= Ġfalse , Ċ ) Ġ: ĊĠĠĠ ĠBase Filter Target Processor Checker ({ Ġt Ġ-> Ġif Ġ( t . equals ( const Target , Ġignore Case )) Ġconst Processor Ġelse Ġnull Ġ}) ĊĊ Ċ /** Ċ Ġ* Ġ[ Filter Target Processor ] ĠçļĦ é¦ĸ éĥ¨ target åĢ¼ æĬ½ è±¡ æ£Ģæµĭ åĻ¨ ï¼Į åį³ æıĲä¾Ľ ä¸Ģä¸ª åĽº å®ļçļĦ åĮ¹éħį åĢ¼ ãĢĤ Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠStart sWith Const Filter Target Processor Checker < T Ġ: ĠFilter Target Processor >( ĊĠĠĠ Ġtarget : ĠString , ĊĠĠĠ Ġconst Processor : ĠT , ĊĠĠĠ Ġignore Case : ĠBoolean Ġ= Ġfalse , Ċ ) Ġ: ĊĠĠĠ ĠBase Filter Target Processor Checker ({ Ġt Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( t . startsWith ( target , Ġignore Case )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Processor ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ}) ĊĊ Ċ /** Ċ Ġ* Ġ[ Filter Target Processor ] ĠçļĦ æŃ£ åĪĻ åĮ¹éħį target åĢ¼ æĬ½ è±¡ æ£Ģæµĭ åĻ¨ ï¼Į æıĲä¾Ľ ä¸Ģä¸ª æŃ£ åĪĻ å®ŀä¾ĭ å¹¶ è¿Ľè¡Į åĮ¹éħį ãĢĤ Ċ Ġ*/ Ċ public Ġabstract Ġclass ĠRegex Matches Filter Target Processor Checker < T Ġ: ĠFilter Target Processor >( ĊĠĠĠ Ġregex : ĠRegex , ĊĠĠĠ Ġconst Processor : ĠT , Ċ ) Ġ: ĊĠĠĠ ĠBase Filter Target Processor Checker ({ Ġt Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( regex . matches ( t )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Processor ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠ Ġconstructor ( pattern : ĠPattern , Ġconst Processor : ĠT ) Ġ: Ġthis ( pattern . to Regex (), Ġconst Processor ) ĊĠĠĠ Ġconstructor ( regex Str : ĠString , Ġconst Processor : ĠT ) Ġ: Ġthis ( Regex ( regex Str ), Ġconst Processor ) Ċ } ĊĊĊĊ