package Ġcom . kot l ind is cord . k ord . extensions Ċ Ċ import Ġcom . kot l ind is cord . k ord . extensions . commands . Message Command Ċ import Ġcom . kot l ind is cord . k ord . extensions . events . EventHandler Ċ import Ġcom . kot l ind is cord . k ord . extensions . extensions . Extension Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠA Ġbase Ġclass Ġfor Ġall Ġcustom Ġexceptions Ġin Ġour Ġbot Ġframework . Ċ Ġ*/ Ċ public Ġopen Ġclass ĠExtensions Exception Ġ: ĠException () Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġan Ġattempt Ġto Ġload Ġan Ġ[ Extension ] Ġfails . Ċ Ġ* Ċ Ġ* Ġ@ param Ġclazz ĠThe Ġinvalid Ġ[ Extension ] Ġclass . Ċ Ġ* Ġ@ param Ġreason ĠWhy Ġthis Ġ[ Extension ] Ġis Ġconsidered Ġinvalid . Ċ Ġ*/ Ċ public Ġclass ĠInvalid Extension Exception ( ĊĠĠĠ Ġpublic Ġval Ġclazz : ĠK Class < out ĠExtension >, ĊĠĠĠ Ġpublic Ġval Ġreason : ĠString ? Ċ ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformatted Reason Ġ= Ġif Ġ( reason Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ($ reason )" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" Invalid Ġextension Ġclass : Ġ${ clazz . qualified Name } Ġ$ formatted Reason " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġan Ġ[ EventHandler ] Ġcould Ġnot Ġbe Ġvalidated . Ċ Ġ* Ċ Ġ* Ġ@ param Ġreason ĠWhy Ġthis Ġ[ EventHandler ] Ġis Ġconsidered Ġinvalid . Ċ Ġ*/ Ċ public Ġclass ĠInvalid EventHandler Exception ( public Ġval Ġreason : ĠString ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Invalid Ġevent Ġhandler : Ġ$ reason " Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġan Ġattempt Ġto Ġregister Ġa Ġ[ EventHandler ] Ġfails . Ċ Ġ* Ċ Ġ* Ġ@ param Ġreason ĠWhy Ġthis Ġ[ EventHandler ] Ġcould Ġnot Ġbe Ġregistered . Ċ Ġ*/ Ċ public Ġclass ĠEventHandler Registration Exception ( public Ġval Ġreason : ĠString ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Failed Ġto Ġregister Ġevent Ġhandler : Ġ$ reason " Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġa Ġ[ Message Command ] Ġcould Ġnot Ġbe Ġvalidated . Ċ Ġ* Ċ Ġ* Ġ@ param Ġname ĠThe Ġ[ Message Command ] Ġname Ċ Ġ* Ġ@ param Ġreason ĠWhy Ġthis Ġ[ Message Command ] Ġis Ġconsidered Ġinvalid . Ċ Ġ*/ Ċ public Ġclass ĠInvalid Command Exception ( public Ġval Ġname : ĠString ?, Ġpublic Ġval Ġreason : ĠString ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Invalid Ġcommand : Ġ$ reason " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" Invalid Ġcommand Ġ$ name : Ġ$ reason " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġan Ġattempt Ġto Ġregister Ġa Ġ[ Message Command ] Ġfails . Ċ Ġ* Ċ Ġ* Ġ@ param Ġname ĠThe Ġ[ Message Command ] Ġname Ċ Ġ* Ġ@ param Ġreason ĠWhy Ġthis Ġ[ Message Command ] Ġcould Ġnot Ġbe Ġregistered . Ċ Ġ*/ Ċ public Ġclass ĠCommand Registration Exception ( public Ġval Ġname : ĠString ?, Ġpublic Ġval Ġreason : ĠString ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Failed Ġto Ġregister Ġcommand : Ġ$ reason " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" Failed Ġto Ġregister Ġcommand Ġ$ name : Ġ$ reason " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThrow n Ġwhen Ġsomething Ġbad Ġhappens Ġduring Ġcommand Ġprocessing . Ċ Ġ* Ċ Ġ* ĠProvide d Ġ[ reason ] Ġwill Ġbe Ġreturned Ġto Ġthe Ġuser Ġver batim . Ċ Ġ* Ċ Ġ* Ġ@ param Ġreason ĠHuman - readable Ġreason Ġfor Ġthe Ġfailure . Ċ Ġ*/ Ċ public Ġopen Ġclass ĠCommand Exception ( public Ġvar Ġreason : ĠString ) Ġ: ĠExtensions Exception () Ġ{ ĊĠĠĠ Ġpublic Ġconstructor ( other : ĠCommand Exception ) Ġ: Ġthis ( other . reason ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġreason Ċ } Ċ