/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ġ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 . core . configuration Ċ Ċ import Ġlove . fort e . common . ioc . Depend BeanFactory Ċ import Ġlove . fort e . common . ioc . annotation . Config Beans Ċ import Ġlove . fort e . common . ioc . annotation . Depend Ċ import Ġlove . fort e . common . ioc . annotation . Post Pass Ċ import Ġlove . fort e . sim bot . bot . Bot Manager Ċ import Ġlove . fort e . sim bot . core . Typed Comp Logger Ċ import Ġlove . fort e . sim bot . core . info f Ċ import Ġlove . fort e . sim bot . listener . Listener Manager Ċ import Ġlove . fort e . sim bot . listener . Listener Registered Ċ import Ġlove . fort e . sim bot . listener . Post Listener Registrar ĊĊ Ċ @ Config Beans (" core Listener Registrar ") Ċ public Ġclass ĠCore Listener Registrar Ġ{ ĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ: ĠTyped Comp Logger ( Core Listener Registrar :: class . java ) ĊĊĠĠĠ Ġ@ Depend ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdepend BeanFactory : ĠDepend BeanFactory ĊĊĠĠĠ Ġ@ Depend ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlistener Manager : ĠListener Manager ĊĊĠĠĠ Ġ@ Depend ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbot Manager : ĠBot Manager ĊĊĊĠĠĠ Ġ@ Post Pass ĊĠĠĠ Ġpublic Ġfun Ġregister Listeners (){ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" Start Ġregister Ġlisteners .") ĊĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġregister . ĊĠĠĠĠĠĠĠ Ġdepend BeanFactory . all Beans . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Post Listener Registrar :: class . java . isAssignableFrom ( depend BeanFactory . getType ( it ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepend BeanFactory [ it ] Ġas ĠPost Listener Registrar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Starter Ġregister Ġlisteners Ġby Ġ$ it .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . register Listener Functions ( listener Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" Listeners Ġregistered .") ĊĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġdone . ĊĠĠĠĠĠĠĠ Ġdepend BeanFactory . all Beans . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Listener Registered :: class . java . isAssignableFrom ( depend BeanFactory . getType ( it ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepend BeanFactory [ it ] Ġas ĠListener Registered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Do Ġregistered Ġby Ġ$ it .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Registered ( listener Manager ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġbots Ġ= Ġbot Manager . bots ĊĊĠĠĠĠĠĠĠ Ġ// Ġshow Ġbots . ĊĠĠĠĠĠĠĠ Ġif Ġ( bots . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Registration ĠB ots Ġis Ġempty .") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbots . map Ġ{ Ġbot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġbot . bot Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠName Code Level ( i . bot Name , Ġi . bot Code , Ġi . bot Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ Ġinfo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Try Ġget Ġbot Info Ġfor Ġ${ info . name } (${ info . code }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( info . level Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info f (" Registration ĠBot : Ġcode ={}, Ġname ={}, Ġlevel ={ }", Ġinfo . code , Ġinfo . name , Ġinfo . level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info f (" Registration ĠBot : Ġcode ={}, Ġname ={ }", Ġinfo . code , Ġinfo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ } ĊĊ Ċ private Ġdata Ġclass ĠName Code Level ( val Ġname : ĠString , Ġval Ġcode : ĠString , Ġval Ġlevel : ĠLong Ġ= Ġ- 1 ) Ċ