package Ġcom . s br ati . spring . boot . starter . kotlin . telegram . handler . result Ċ Ċ import Ġcom . s br ati . spring . boot . starter . kotlin . telegram . component . Admin Chat Ids Provider Ċ import Ġcom . s br ati . spring . boot . starter . kotlin . telegram . handler . Message Handlers Ċ import Ġcom . s br ati . spring . boot . starter . kotlin . telegram . model . Route Message Ċ import Ġcom . s br ati . spring . boot . starter . kotlin . telegram . service . UserService Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠRoute MessageHandler ( ĊĠĠĠ Ġprivate Ġval ĠuserService : ĠUserService < *> ?, ĊĠĠĠ Ġprivate Ġval Ġadmin Chat Ids Provider : ĠAdmin Chat Ids Provider ?, ĊĠĠĠ Ġprivate Ġval Ġmessage Handlers : ĠMessage Handlers , Ċ ) Ġ: ĠResult Handler < Route Message >( Route Message :: class . java ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( chat Id : ĠLong , Ġresult Payload : ĠRoute Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadmins Message Ġ= Ġresult Payload . admins Message ĊĠĠĠĠĠĠĠ Ġadmins Message ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadmin Chat Ids Provider ?. admin Chat Ids ()?. forEach Ġ{ Ġmessage Handlers . process Message ( it , Ġadmins Message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġeveryone Message Ġ= Ġresult Payload . every one Message ĊĠĠĠĠĠĠĠ Ġeveryone Message ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserService ?. getAll Chat Ids ()?. forEach Ġ{ Ġchat Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Handlers . process Message ( chat Id , Ġeveryone Message ( chat Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Message Ġ= Ġresult Payload . receiver Message ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Chat Id Ġ= Ġresult Payload . receiver Chat Id ĊĠĠĠĠĠĠĠ Ġreceiver Message ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Chat Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Handlers . process Message ( receiver Chat Id , Ġreceiver Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsender Message Ġ= Ġresult Payload . sender Message ĊĠĠĠĠĠĠĠ Ġsender Message ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Handlers . process Message ( chat Id , Ġsender Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }