package Ġcom . dong tr onic . di abot . listener Ċ Ċ import Ġcom . dong tr onic . di abot . converters . Blood G lu co se Converter Ċ import Ġcom . dong tr onic . di abot . converters . G lu co se Unit Ċ import Ġcom . dong tr onic . di abot . data . Conversion DTO Ċ import Ġcom . dong tr onic . di abot . exceptions . Unknown Unit Exception Ċ import Ġcom . dong tr onic . di abot . util . Patterns Ċ import Ġnet . dv 8 tion . j da . core . events . message . guild . Guild Message Received Event Ċ import Ġnet . dv 8 tion . j da . core . hooks . Listener Adapter Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠConversion Listener Ġ: ĠListener Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Conversion Listener :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Guild Message Received ( event : ĠGuild Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . author . is Bot ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġevent . channel ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġevent . message ĊĠĠĠĠĠĠĠ Ġval Ġmessage Text Ġ= Ġmessage . content Raw ĊĊĠĠĠĠĠĠĠ Ġval Ġinline Matcher Ġ= ĠPattern s . inline Bg Pattern . matcher ( message Text ) ĊĠĠĠĠĠĠĠ Ġval Ġseparate Matcher Ġ= ĠPattern s . separate Bg Pattern . matcher ( message Text ) ĊĠĠĠĠĠĠĠ Ġval Ġunit Matcher Ġ= ĠPattern s . unit Bg Pattern . matcher ( message Text ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġnumber String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġunit String Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( unit Matcher . matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber String Ġ= Ġunit Matcher . group ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit String Ġ= Ġunit Matcher . group ( 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( inline Matcher . matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber String Ġ= Ġinline Matcher . group ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( separate Matcher . matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber String Ġ= Ġseparate Matcher . group ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( number String . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠConversion DTO ? Ġ= Ġif Ġ( unit String . length Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB lood G lu co se Converter . convert ( number String , Ġunit String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB lood G lu co se Converter . convert ( number String , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. input Unit Ġ=== ĠG lu co se Unit . MM OL Ġ-> Ġchannel . sendMessage ( String . format ("% s Ġmm ol / L Ġis Ġ% s Ġmg / dL ", Ġresult !!. mm ol , Ġresult . mg dl )). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult !!. input Unit Ġ=== ĠG lu co se Unit . MG DL Ġ-> Ġchannel . sendMessage ( String . format ("% s Ġmg / dL Ġis Ġ% s Ġmm ol / L ", Ġresult !!. mg dl , Ġresult . mm ol )). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreply Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"* I 'm Ġnot Ġsure Ġif Ġyou Ġgave Ġme Ġmm ol / L Ġor Ġmg / dL , Ġso ĠI 'll Ġgive Ġyou Ġboth .* ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% s Ġmg / dL Ġis Ġ** % s Ġmm ol / L ** ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% s Ġmm ol / L Ġis Ġ** % s Ġmg / dL ** "). join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% n ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage ( String . format ( reply , Ġnumber String , Ġresult !!. mm ol , Ġnumber String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . mg dl )). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ# 2 0 : ĠReply Ġwith Ġ: sm irk : Ġwhen Ġvalue Ġis Ġ 6 9 Ġmg / dL Ġor Ġ 6 . 9 Ġmm ol / L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . mm ol Ġ== Ġ 6 . 9 Ġ|| Ġresult . mg dl Ġ== Ġ 6 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message . add Reaction ("\ uD 8 3 D \ u DE 0 F "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ# 3 6 : ĠReply Ġwith Ġ: 1 0 0 : Ġwhen Ġvalue Ġis Ġ 1 0 0 Ġmg / dL Ġor Ġ 5 . 5 Ġmm ol / L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . mm ol Ġ== Ġ 5 . 5 Ġ|| Ġresult . mg dl Ġ== Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message . add Reaction ("\ uD 8 3 D \ uD CA F "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore d Ġon Ġpurpose ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" IllegalArgumentException Ġoccurred Ġbut Ġwas Ġignored Ġin ĠBG Ġconversion ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠUnknown Unit Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore d Ġon Ġpurpose ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ