package Ġs ib yl . core Ċ Ċ import Ġs ib yl . Message Processor Ċ import Ġs ib yl . api . Api Message Ċ import Ġs ib yl . commands . S ib yl Command Ċ import Ġkotlinx . coroutines . channels . Send Channel Ċ import Ġmu . Kotlin Logging Ċ Ċ class ĠCommands Command ( private Ġval Ġmessage Processor : ĠMessage Processor ) Ġ: ĠS ib yl Command ( ĊĠĠĠ Ġname Ġ= Ġ" commands ", ĊĠĠĠ Ġhelp Ġ= Ġ" lists Ġcommand Ġnames Ġgrouped Ġby Ġmodule ", ĊĠĠĠ Ġinvoke Without Sub command Ġ= Ġtrue Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Processor . modules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . commands . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġmodule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" append ing Ġcommands Ġfor Ġ${ module . name } "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġecho ("${ module . name }: Ġ${ module . commands . join ToString (" Ġ") Ġ{ Ġmodule . command Prefix Ġ+ Ġit . command Name Ġ}} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }