package Ġcom . github . iv an _ os ip ov . cl abo . dsl Ċ Ċ import Ġcom . github . iv an _ os ip ov . cl abo . api . internal . Incoming Interaction Api Ċ import Ġcom . github . iv an _ os ip ov . cl abo . api . internal . Outgoing Interaction Api Ċ import Ġcom . github . iv an _ os ip ov . cl abo . api . model .* Ċ import Ġcom . github . iv an _ os ip ov . cl abo . api . output . dto .* Ċ import Ġcom . github . iv an _ os ip ov . cl abo . dsl . config . Bot Config Ċ import Ġcom . github . iv an _ os ip ov . cl abo . dsl . per ks . command . Command Ċ import Ġcom . github . iv an _ os ip ov . cl abo . dsl . per ks . command . Commands Context Ċ import Ġcom . github . iv an _ os ip ov . cl abo . dsl . per ks . inline . Inline Mode Context Ċ import Ġcom . github . iv an _ os ip ov . cl abo . dsl . per ks . inline Keyboard . Callback DataContext Ċ import Ġcom . github . iv an _ os ip ov . cl abo . state . chat .* Ċ import Ġcom . github . iv an _ os ip ov . cl abo . utils . Chat Id Ċ import Ġcom . github . iv an _ os ip ov . cl abo . utils . File Pointer Ċ import Ġcom . github . iv an _ os ip ov . cl abo . utils . MessageId Ċ import Ġcom . github . iv an _ os ip ov . cl abo . utils . Text Ċ import Ġcom . google . common . base . Join er Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ open Ġclass ĠCommon Bot Context ( val Ġbot Name : ĠString ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġsender : ĠOut going Interaction Api ĊĊĠĠĠ Ġlateinit Ġvar Ġreceiver : ĠIncoming Interaction Api ĊĊĠĠĠ Ġval Ġconfig Context Ġ= ĠBot Config () ĊĊĠĠĠ Ġvar Ġcommands Context Ġ= ĠCommands Context ( bot Name ) ĊĊĠĠĠ Ġvar Ġcallback DataContext Ġ= ĠCallback DataContext () ĊĊĠĠĠ Ġvar Ġnamed Callbacks Ġ= ĠHashMap < String , Ġ( Update ) Ġ-> ĠUnit >() ĊĊĠĠĠ Ġvar Ġinline Mode Context Ġ= ĠInline Mode Context () ĊĊĠĠĠ Ġvar Ġchat Interaction Context : ĠChat Interaction Context < *, Ġ* >? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġchannel Context Ġ= ĠIn Channel Context () ĊĊĠĠĠ Ġval Ġstop Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Common Bot Context :: class . java ) ĊĊĠĠĠ Ġfun Ġchat ting ( init : ĠChat Interaction Context < Store Stub , ĠStatic Chat Context >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchat ting ( Store Stub , Ġinit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchannels ( init : ĠIn Channel Context . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel Context . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠChat State Store < C >, ĠC Ġ: ĠChat Context > Ġchat ting ( chat State Store : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠChat Interaction Context < T , ĠC >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchat Interaction Context Ġ= ĠChat Interaction Context ( chat State Store ). apply Ġ{ Ġinit () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure ( init : ĠBot Config . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Context . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop . set ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhello Message ( text : ĠText , Ġinit : ĠSend Params . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhello Message Send Params Ġ= ĠSend Params () ĊĠĠĠĠĠĠĠ Ġhello Message Send Params . text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġhello Message Send Params . init () ĊĊĠĠĠĠĠĠĠ ĠonStart Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . update . message ?. chat ?. id ?. let Ġ{ Ġchat Id : ĠChat Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhello Message Send Params . chat Id Ġ= Ġchat Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( hello Message Send Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcommands ( init : ĠCommands Context . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcommands Context . init () ĊĠĠĠĠĠĠĠ Ġlogger . info (" For Ġcomfort able Ġusage Ġyour Ġcommands Ġyou Ġcan Ġsend Ġto Ġ@ Bot F ather Ġfollow Ġcommands : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJoin er . on (", Ġ"). join ( commands Context . command List . filter Ġ{ Ġ! it . endsWith ("@ $ bot Name ") Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcallback Data ( init : ĠCallback DataContext . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback DataContext . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonStart ( init : Ġ( Command ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcommands Context . register (" start ", Ġinit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Help ( init : Ġ( Command ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcommands Context . register (" help ", Ġinit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Settings ( init : Ġ( Command ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcommands Context . register (" settings ", Ġinit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Named Callback ( name : ĠString , Ġcallback : Ġ(( Update ) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠ Ġnamed Callbacks [ name ] Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinvoke Named Callback ( name : ĠString , Ġupdate : ĠUpdate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnamed Callbacks [ name ] !! ( update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinline Mode ( init : ĠInline Mode Context . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" You Ġhave Ġto Ġset Ġinline Ġmode Ġt rough Ġ@ Bot F ather Ġfor Ġproviding Ġinline Ġmode ") ĊĠĠĠĠĠĠĠ Ġinline Mode Context . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( send Params : ĠSend Params , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( text : ĠText , Ġchat Id : ĠChat Id , Ġinit : ĠSend Params . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend ( text , Ġchat Id , Ġinit , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( text : ĠText , Ġchat Id : ĠChat Id , Ġinit : ĠSend Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( chat Id , Ġtext ) ĊĠĠĠĠĠĠĠ Ġsend Params . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Sync ( text : ĠText , Ġchat Id : ĠChat Id , Ġinit : ĠSend Params . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( chat Id , Ġtext ) ĊĠĠĠĠĠĠĠ Ġsend Params . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Sync ( send Params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region Ġsend Document ĊĊĠĠĠ Ġfun Ġsend Document ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Document Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Document Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Document ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Document Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Document Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . upload File Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Document Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Document Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Document Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . sendMessage Sync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Document Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Document Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Document Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . upload FileSync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region Ġsend Photo ĊĊĠĠĠ Ġfun Ġsend Photo ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Photo Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Photo Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Photo ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Photo Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Photo Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . upload File Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Photo Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Photo Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Photo Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . sendMessage Sync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Photo Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Photo Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Photo Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . upload FileSync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region Ġsend Audio ĊĊĠĠĠ Ġfun Ġsend Audio ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Audio Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Audio Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Audio ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Audio Params . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Audio Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . upload File Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Audio Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer : ĠFile Pointer ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Audio Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Audio Params ( chat Id , Ġfile Pointer ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . sendMessage Sync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Audio Sync ( chat Id : ĠChat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile : Ġjava . io . File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit : ĠSend Audio Params . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠSend Audio Params ( chat Id , Ġfile Ġ= Ġfile ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . upload FileSync ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġfun ĠonStart Reply ( text : ĠText , Ġinit : ĠSend Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonStart Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . update . message . reply ( text , Ġinit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠMessage ?. reply ( text : ĠText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreply ( text , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage ?. reply ( text : ĠText , Ġinit : ĠSend Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreply ( text , Ġinit , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage ?. reply ( text : ĠText , Ġinit : ĠSend Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( this !!. chat . id , Ġtext ) ĊĠĠĠĠĠĠĠ Ġsend Params . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage ?. reply Sync ( text : ĠText , Ġinit : ĠSend Params . () Ġ-> ĠUnit ) Ġ: ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( this !!. chat . id , Ġtext ) ĊĠĠĠĠĠĠĠ Ġsend Params . init () ĊĠĠĠĠĠĠĠ Ġreturn Ġsender . sendMessage Sync ( send Params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSend Params . reply Keyboard ( init : ĠReply Keyboard Markup . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreply Markup Ġ= ĠReply Keyboard Markup ( this ). apply ( init ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSend Params . reply Keyboard Remove ( select ive : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreply Markup Ġ= ĠReply Keyboard Remove ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . select ive Ġ= Ġselect ive ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠReply Keyboard Markup . line ( var arg Ġbuttons : ĠKeyboard Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . keyboard . add ( buttons . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠReply Keyboard Markup . one Button Per Line ( var arg Ġbuttons : ĠKeyboard Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( button Ġin Ġbuttons ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . keyboard . add ( listOf ( button )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠReply Keyboard Markup . button ( text : ĠText ) Ġ= ĠKeyboard Button (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġtext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . button ( text : ĠText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Data : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Query Processor : Ġ(( Callback Query , ĠUpdate ) Ġ-> ĠUnit )? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Data Ġ= Ġcallback Data ĊĠĠĠĠĠĠĠ Ġif Ġ( callback Query Processor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback DataContext . register ( callback Data , Ġcallback Query Processor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . url Button ( text : ĠText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . url Ġ= Ġurl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . switch Inline Query Button ( text : ĠText , Ġswitch Inline Query : ĠString ) Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . switch Inline Query Ġ= Ġswitch Inline Query ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . switch Inline Query Current Chat Button ( text : ĠText , Ġswitch Inline Query Current Chat : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . switch Inline Query Current Chat Ġ= Ġswitch Inline Query Current Chat ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . callback Game Button ( text : ĠText , Ġcallback Game : ĠCallback Game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Game Ġ= Ġcallback Game ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . pay Button ( text : ĠText ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġabstract Button ( text ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . pay Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠInline Keyboard Markup . abstract Button ( text : ĠText , Ġinit : ĠInline Keyboard Button . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ= ĠInline Keyboard Button ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( init ) ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . line ( var arg Ġbuttons : ĠInline Keyboard Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . keyboard . add ( buttons . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠInline Keyboard Markup . one Button Per Line ( var arg Ġbuttons : ĠInline Keyboard Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( button Ġin Ġbuttons ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . keyboard . add ( listOf ( button )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠReply Keyboard Markup . request Contact Button () Ġ= ĠKeyboard Button (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . request Contact Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠReply Keyboard Markup . request Location Button () Ġ= ĠKeyboard Button (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . request Location Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠMessage ?. answer ( text : ĠText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Trying Ġanswer Ġbut Ġmessage Ġis Ġundefined ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( this . chat . id , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠCallback Query . answer ( init : ĠAnswer Callback QueryParams . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Query Answer Ġ= Ġmake Answer (). apply ( init ) ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( callback Query Answer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠCallback Query . empty Answer () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Query Answer Ġ= Ġmake Answer () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( callback Query Answer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠCallback Query . make Answer (): ĠAnswer Callback QueryParams Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAnswer Callback QueryParams ( this . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠMessage ?. markdown Answer ( text : ĠText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Trying Ġanswer Ġbut Ġmessage Ġis Ġundefined ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( this . chat . id , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Params . parse Mode Ġ= ĠParse Mode . MARK DOWN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun ĠMessage ?. html Answer ( text : ĠText ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Trying Ġanswer Ġbut Ġmessage Ġis Ġundefined ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsend Params Ġ= ĠSend Params ( this . chat . id , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Params . parse Mode Ġ= ĠParse Mode . HTML ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( send Params ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠCommon Bot Context . delete Message ( chat Id : ĠChat Id , ĠmessageId : ĠMessage Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( Delete Message Params ( chat Id , ĠmessageId )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠCommon Bot Context . delete Message Sync ( chat Id : ĠChat Id , ĠmessageId : ĠMessage Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Sync ( Delete Message Params ( chat Id , ĠmessageId )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . delete Message () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete Message ( this . chat . id , Ġthis . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . delete Message Sync () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete Message Sync ( this . chat . id , Ġthis . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message At Chat ( text : ĠText , Ġinit : ĠEdit Message Text Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Message At Chat ( text , Ġinit , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message At Chat ( text : ĠText , Ġinit : ĠEdit Message Text Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġedit Message Text Params Ġ= ĠEdit Message Text Params ( text ) ĊĠĠĠĠĠĠĠ Ġedit Message Text Params . chat Id Ġ= Ġthis . chat . id ĊĠĠĠĠĠĠĠ Ġedit Message Text Params . message Id Ġ= Ġthis . id ĊĠĠĠĠĠĠĠ Ġedit Message Text Params . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( edit Message Text Params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message Caption At Chat ( init : ĠEdit Message Caption Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠEdit Message Caption Params ( chat Id Ġ= Ġchat . id , ĠmessageId Ġ= Ġid ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message Caption As Inline ( init : ĠEdit Message Caption Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠEdit Message Caption Params ( inline MessageId Ġ= Ġid ) ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message As Inline ( text : ĠText , Ġinit : ĠEdit Message Text Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Message As Inline ( text , Ġinit , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message As Inline ( text : ĠText , Ġinit : ĠEdit Message Text Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġedit Message Text Params Ġ= ĠEdit Message Text Params ( text ) ĊĠĠĠĠĠĠĠ Ġedit Message Text Params . inline MessageId Ġ= Ġthis . id ĊĠĠĠĠĠĠĠ Ġedit Message Text Params . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( edit Message Text Params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . forward To ( chat Id : ĠChat Id , Ġdisable Notification : ĠBoolean Ġ= Ġfalse , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġforward Message ( chat Id , Ġthis . chat . id , Ġthis . id , Ġdisable Notification , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġforward Message ( chat Id : ĠChat Id , Ġfrom Chat Id : ĠChat Id , ĠmessageId : ĠMessage Id , Ġdisable Notification : ĠBoolean Ġ= Ġfalse , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( Forward Message Params ( chat Id , Ġfrom Chat Id , ĠmessageId , Ġdisable Notification ), Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit Message Reply Markup ( init : ĠEdit Message Reply Markup Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠEdit Message Reply Markup Params () ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message Reply Markup ( init : ĠEdit Message Reply Markup Params . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġedit Message Reply Markup ( init , Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMessage . edit Message Reply Markup ( init : ĠEdit Message Reply Markup Params . () Ġ-> ĠUnit , Ġsuccess Callback : Ġ( Message ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠEdit Message Reply Markup Params () ĊĠĠĠĠĠĠĠ Ġparams . chat Id Ġ= Ġthis . chat . id ĊĠĠĠĠĠĠĠ Ġparams . message Id Ġ= Ġthis . id ĊĠĠĠĠĠĠĠ Ġparams . init () ĊĠĠĠĠĠĠĠ Ġsender . sendMessage Async ( params , Ġsuccess Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠChat Id . get Chat ( callback : Ġ( Chat ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreceiver . get Chat ( Get Chat Params ( this ), Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠChat Id . get Chat (): ĠChat Ġ= Ġreceiver . get Chat ( Get Chat Params ( this )) ĊĊĠĠĠ Ġfun ĠHas Editable Reply Markup < in ĠInline Keyboard Markup >. inline Keyboard ( init : ĠInline Keyboard Markup . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreply Markup Ġ= ĠInline Keyboard Markup ( this ). apply ( init ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠReply Markup > ĠHas Editable Reply Markup < T >. empty Reply Markup () Ġ{ ĊĠĠĠĠĠĠĠ Ġreply Markup Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ }