package Ġnet . my th oc last . weather bot kt Ċ Ċ import Ġnet . my th oc last . weather bot kt . ConfigFile . IRC Ċ Ċ import Ġorg . p irc bot x . Configuration Ċ import Ġorg . p irc bot x . P irc Bot X Ċ import Ġorg . p irc bot x . Util SS LS ocket Factory Ċ import Ġorg . p irc bot x . hooks . Listener Adapter Ċ import Ġorg . p irc bot x . hooks . events . Kick Event Ċ import Ġorg . p irc bot x . hooks . events . Part Event Ċ import Ġorg . p irc bot x . hooks . types . Generic Message Event Ċ Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . net . Socket Ċ import Ġjava . util . logging . Logger Ċ Ċ internal Ġobject ĠWeather Bot IRC Ġ: ĠListener Adapter () Ġ{ ĊĊĠ Ġprivate Ġval Ġconfig : ĠConfiguration ĊĠ Ġprivate Ġval Ġclient : ĠP irc Bot X ĊĊĠ Ġinternal Ġvar Ġpart Message : ĠString ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġconf Builder Ġ= ĠConfiguration . Builder () ĊĊĠĠĠ Ġconf Builder . name Ġ= ĠIRC . name ĊĠĠĠ Ġconf Builder . login Ġ= ĠIRC . login ĊĠĠĠ Ġconf Builder . real Name Ġ= ĠIRC . real Name ĊĠĠĠ Ġconf Builder . nick serv Password Ġ= ĠIRC . nick serv Password ĊĠĠĠ Ġconf Builder . f inger Ġ= ĠIRC . f inger ĊĠĠĠ Ġconf Builder . add Server ( IRC . server , ĠIRC . port ) ĊĊĠĠĠ Ġif Ġ( IRC . auto Re connect Attempts Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġconf Builder . is Auto Re connect Ġ= Ġtrue ĊĠĠĠĠĠ Ġif Ġ( IRC . auto Re connect Attempts Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconf Builder . auto Re connect Attempts Ġ= ĠInt . MAX _ VALUE ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġconf Builder . auto Re connect Attempts Ġ= ĠIRC . auto Re connect Attempts ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( IRC . ssl ) Ġ{ ĊĠĠĠĠĠ Ġconf Builder . socket Factory Ġ= ĠUtil SS LS ocket Factory (). trust All Certificates () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( channel Ġin ĠIRC . channels ) Ġ{ ĊĠĠĠĠĠ Ġconf Builder . add Auto Join Channel ( channel . asString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconf Builder . version Ġ= Ġ" Weather Bot Kt Ġ 1 . 3 " ĊĠĠĠ Ġconf Builder . is Auto Nick Change Ġ= Ġtrue ĊĠĠĠ Ġconf Builder . is Shutdown Hook Enabled Ġ= Ġfalse ĊĠĠĠ Ġconf Builder . addListener ( this ) ĊĠĠĠ Ġconf Builder . addListener ( Admin Command Listener ) ĊĊĠĠĠ Ġconfig Ġ= Ġconf Builder . build Configuration () ĊĠĠĠ Ġpart Message Ġ= ĠIRC . part Message ĊĠĠĠ Ġclient Ġ= ĠP irc Bot X ( config ) ĊĠĠĠ ĠRuntime . get Runtime (). add Shutdown Hook ( IRC Shutdown Hook ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Kick ( event : ĠK ick Event ) Ġ{ ĊĠĠĠ Ġif Ġ( event . recipient ?. nick . equals ( config . name , Ġtrue )) Ġ{ ĊĠĠĠĠĠ Ġre join ( event . channel . get Bot (), Ġevent . channel . name ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Part ( event : ĠPart Event ) Ġ{ ĊĠĠĠ Ġif Ġ( event . user . nick Ġ== Ġconfig . name ) Ġ{ ĊĠĠĠĠĠ Ġre join ( event . channel . get Bot (), Ġevent . channel . name ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Generic Message ( event : ĠGeneric Message Event ?) Ġ{ ĊĠĠĠ Ġ// ĠStrings Ġfor Ġthe Ġnick Ġof Ġthe Ġrequesting Ġuser , Ġand Ġthe Ġlocation Ġused Ġto Ġfetch Ġdata ĊĠĠĠ Ġval Ġrequest User : ĠString Ġ= Ġevent ?. user ?. nick Ġ?: Ġ"" ĊĊĠĠĠ Ġif Ġ( Weather Bot Core . isValid Command ( event ?. message )) Ġ{ ĊĠĠĠĠĠ Ġevent ?. respond With ( Weather Bot Core . getResponse For Command ( event . message , Ġrequest User )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġevent ?. message ?. let Ġ{ Ġmessage Ġ-> ĠURL T it ler . get ListOf Titles For Message ( message )?. let Ġ{ Ġevent . respond With ( it ) Ġ} Ġ} ĊĠ Ġ} ĊĊĠ Ġinternal Ġfun Ġstart () Ġ{ ĊĠĠĠ Ġclient . start Bot () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġre join ( bot : ĠP irc Bot X , Ġchannel Name : ĠString ) Ġ{ ĊĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠ Ġbot . send (). join Channel ( channel Name ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġobject ĠIRC Shutdown Hook Ġ: ĠThread () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġthis Bot Ref Ġ= ĠWeak Reference ( client ) ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠ Ġval Ġthis Bot Ġ= Ġthis Bot Ref . get () ĊĠĠĠĠĠ Ġif Ġ( P irc Bot X . State . DIS CONNECTED Ġ!= Ġthis Bot ?. state ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Bot ?. stop Bot Re connect () ĊĠĠĠĠĠĠĠ Ġthis Bot ?. send IRC ()?. quit Server ( part Message ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Bot ?. isConnected Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠW oo Ġreflection ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsocket Field Ġ= Ġthis Bot . java Class . getDeclared Field (" socket ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbot Socket Ġ= Ġsocket Field . get ( this Bot ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( bot Socket Ġas ĠSocket ). close () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLogger . getLogger (" Weather Bot "). fin est (" Unable Ġto Ġfor c ibly Ġclose Ġsocket \ n Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ