package Ġbot . commands Ċ Ċ import Ġdata . repository . Banner Preference Repository Ċ import Ġdiscord 4 j . core . event . domain . interaction . Slash Command Event Ċ import Ġdiscord 4 j . discord json . json . Application Command Option Data Ċ import Ġdiscord 4 j . discord json . json . Application Command Request Ċ import Ġdiscord 4 j . rest . util . Application Command Option Type Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . client . statement .* Ċ import Ġio . ktor . http .* Ċ import Ġkotlinx . coroutines . reactor . await Single Ċ import Ġorg . k oin . mp . K oin Platform Tools Ċ import Ġutils . get OrNull Ċ import Ġjava . nio . channels . Un resolved Address Exception ĊĊ Ċ /** Ċ Ġ* ĠCommand Ġto Ġupdate Ġbanner Ġbackground Ġimage Ċ Ġ*/ Ċ object ĠBanner Background Ġ: ĠCommand Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= Ġ" background " ĊĊĠĠĠ Ġoverride Ġfun Ġcommand Request (): ĠApplication Command Request Ġ= ĊĠĠĠĠĠĠĠ ĠApplication Command Request . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. description (" Set Ġa Ġbackground Ġimage Ġfor Ġyour Ġbanner .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Option ( Application Command Option Data . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name (" image url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. description (" URL Ġof Ġthe Ġimage Ġto Ġuse , Ġleave Ġempty Ġto Ġuse Ġdefault ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Application Command Option Type . STRING . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. required ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġval ĠhttpClient : ĠHttpClient Ġby Ġlazy Ġ{ ĠK oin Platform Tools . default Context (). get (). get () Ġ} ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠBanner Preference Repository Ġby Ġlazy Ġ{ ĠK oin Platform Tools . default Context (). get (). get () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġallowed Image Types Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠContentType . Image . JPEG , ĊĠĠĠĠĠĠĠ ĠContentType . Image . PNG , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( event : ĠSl ash Command Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġevent . interaction . user . id . as Long () ĊĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= Ġevent . getOption (" image url "). get OrNull ()?. value ?. get OrNull ()?. asString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠValidate ĠURL Ġand Ġurl Ġcontents ĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠHttpResponse Ġ= ĠhttpClient . get ( imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . contentType () Ġ! in Ġallowed Image Types ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply Ep hemeral (" Not Ġa Ġvalid ĠURL Ġof Ġan Ġimage . "). await Single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠURL Parser Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply Ep hemeral (" Not Ġa Ġvalid ĠURL . "). await Single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUn resolved Address Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply Ep hemeral (" Failed Ġto Ġresolve Ġaddress "). await Single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepository . setBackground ImageUrl ( userId , ĠimageUrl ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( imageUrl Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply Ep hemeral (" Background Ġimage Ġupdated . "). await Single () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply Ep hemeral (" Background Ġwas Ġreset Ġto Ġdefault . "). await Single () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }