import Ġdao .* Ċ import Ġroutes .* Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġtk . s ke pt ick . bot . Bot Application Ċ import Ġtk . s ke pt ick . bot . Chat Ċ import Ġtk . s ke pt ick . bot . Default Message Route Ċ import Ġtk . s ke pt ick . bot . User Ċ import Ġjava . util .* Ċ Ċ val Ġapp Properties Ġby Ġlazy Ġ{ Ġload Properties () Ġ} Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġinit Database () ĊĊĠĠĠ Ġval Ġbot Ġ= ĠBot Application ( app Properties . getProperty (" accessToken ")) ĊĠĠĠ Ġbot . any Message Ġ{ Ġchat () Ġ} ĊĠĠĠ Ġbot . on Pts Updated Ġ{ ĠSettings . save Pts ( it ) Ġ} ĊĠĠĠ Ġbot . on History Loaded ( Settings . getP ts ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . filter Ġ{ Ġ! it . is Service Act Ġ&& Ġit . is From Chat Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġsave Messages History ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbot . run () Ċ } Ċ Ċ private Ġfun ĠDefault Message Route . chat () Ġ{ ĊĠĠĠ Ġon Message From < Chat > Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Ġ{ Ġsave Chat Event ( it . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġintercept Ġ{ Ġintercept Quiz Answer ( it . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġon Incoming Message (" Ð± ÐµÑĤ ", Ġ" Ð± ÐµÑĤ Ñħ Ð¾Ð² ÐµÐ½ ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquiz () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelp () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatistics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Friend Chat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġon Message From < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġon Incoming Message Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Friend User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġinit Database () Ġ{ ĊĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig ("/ hikari . properties ") ĊĠĠĠ Ġval ĠdataSource Ġ= ĠH ikari DataSource ( config ) ĊĠĠĠ ĠDatabase . connect ( dataSource ) ĊĠĠĠ Ġtransaction Ġ{ ĠSchema Utils . create ( Messages History , ĠSettings ) Ġ} Ċ } Ċ Ċ private Ġfun Ġload Properties (): ĠProperties Ġ{ ĊĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠ ĠThread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getResource AsStream (" application . properties ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġproperties . load ( this ) Ġ} ĊĊĠĠĠ Ġreturn Ġproperties Ċ }