/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠSp ice Utils , Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* ĠĊ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠCos mic Sp ice Ċ Ġ* ĠĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* ĠĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġsp ices w . ip bot Ċ Ċ import Ġorg . bukkit . plugin . java . Java Plugin Ċ import Ġnet . dv 8 tion . j da . api . entities . Text Channel Ċ import Ġorg . bukkit . Bu kkit Ċ import Ġjavax . security . auth . login . Login Exception Ċ import Ġjava . io . BufferedReader Ċ import Ġnet . dv 8 tion . j da . api . Embed Builder Ċ import Ġnet . dv 8 tion . j da . api . exceptions . ErrorResponse Exception Ċ import Ġjava . awt . Color Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . URL Ċ import Ġjava . util . logging . Level Ċ Ċ class ĠIP Bot Ġ: ĠJava Plugin () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdiscord Ġ= ĠDiscord ( this ) ĊĠĠĠ Ġprivate Ġvar Ġdelay : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġchannel : ĠText Channel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmsg ID : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġthread : ĠThread ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġrun : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay Startup () ĊĠĠĠĠĠĠĠ Ġsave Default Config () ĊĊĠĠĠĠĠĠĠ Ġrun Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġthread Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscord . init () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( Level . SEVERE , Ġ" Invalid Ġdiscord Ġtoken ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġconfig . getLong (" delay ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delay Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay Ġ= Ġ 9 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Ġ= Ġdiscord . bot . getText Channel ById ( config . getString (" target - channel ") !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( Level . SEVERE , Ġ" Please Ġspecify Ġa Ġchannel Ġto Ġsend Ġthe ĠServer ĠIP ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( run ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg ID Ġ= Ġconfig . getString (" msgid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsystem ip address Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Name Ġ= ĠURL (" https :// check ip . amazonaws . com /") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= ĠBufferedReader ( InputStream Reader ( url Name . open Stream ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsystem ip address Ġ= Ġsc . readLine (). trim Ġ{ Ġit Ġ== Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . log ( Level . SEVERE , Ġ" Failed Ġto Ġreach Ġhttps :// check ip . amazonaws . com /", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġembed Ġ= ĠEmbed Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġembed . set Author (" Server ĠIP : Ġ$ system ip address ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġembed . setColor ( Color ( 0 x 6 9 6 9 6 9 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg ID Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel !!. retrieve Message ById ( msg ID !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel !!. edit Message Embed s ById ( msg ID !! , Ġembed . build ()). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠError Response Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel !!. sendMessage Embed s ( embed . build ()). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfix Msg Id () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( delay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Thread ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthread !!. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Disable () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġthread Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfix Msg Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg ID Ġ= Ġchannel !!. latest MessageId ĊĠĠĠĠĠĠĠ Ġconfig [" msgid "] Ġ= Ġmsg ID ĊĠĠĠĠĠĠĠ Ġsave Config () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Startup () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġc ew l ĠAF Ġstartup Ġmessage ĊĠĠĠĠĠĠĠ ĠBu kkit . getLogger (). log ( Level . INFO , Ġ" ĠĠĠĠĠ ĠÂ§ 3 Ġ__ ") ĊĠĠĠĠĠĠĠ ĠBu kkit . getLogger (). log ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLevel . INFO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ ĠÂ§ 9 | ĠÂ§ 3 | __) ĠĠ ĠÂ§ 2 IP Bot ĠÂ§ a Ġ${ description . version }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠBu kkit . getLogger (). log ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLevel . INFO , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ ĠÂ§ 9 | ĠÂ§ 3 | ĠĠĠĠĠ ĠÂ§ 8 Running Ġon Ġ${ server . bukkit Version }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠBu kkit . getLogger (). log ( Level . INFO , Ġ"") ĊĠĠĠ Ġ} Ċ }