39 lines
1.2 KiB
Scala
39 lines
1.2 KiB
Scala
package lila.irc
|
|
|
|
import com.softwaremill.macwire._
|
|
import play.api.{ Configuration, Mode }
|
|
import play.api.libs.ws.StandaloneWSClient
|
|
|
|
import lila.common.Lilakka
|
|
import lila.common.config._
|
|
import lila.hub.actorApi.plan.ChargeEvent
|
|
import lila.hub.actorApi.irc.Event
|
|
import lila.hub.actorApi.user.Note
|
|
|
|
@Module
|
|
final class Env(
|
|
appConfig: Configuration,
|
|
getLightUser: lila.common.LightUser.Getter,
|
|
noteApi: lila.user.NoteApi,
|
|
ws: StandaloneWSClient,
|
|
shutdown: akka.actor.CoordinatedShutdown,
|
|
mode: Mode
|
|
)(implicit ec: scala.concurrent.ExecutionContext) {
|
|
|
|
private val zulipConfig = appConfig.get[ZulipClient.Config]("zulip")(ZulipClient.zulipConfigLoader)
|
|
private lazy val zulipClient = wire[ZulipClient]
|
|
|
|
lazy val api: IrcApi = wire[IrcApi]
|
|
|
|
if (mode == Mode.Prod) {
|
|
api.publishInfo("Lichess has started!")
|
|
Lilakka.shutdown(shutdown, _.PhaseBeforeServiceUnbind, "Tell IRC")(api.stop _)
|
|
}
|
|
|
|
lila.common.Bus.subscribeFun("slack", "plan", "userNote") {
|
|
case d: ChargeEvent => api.charge(d).unit
|
|
case Note(from, to, text, true) if from != "Irwin" => api.userModNote(from, to, text).unit
|
|
case e: Event => api.publishEvent(e).unit
|
|
}
|
|
}
|