mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2025-04-29 09:32:04 +08:00
move morny.core morny.data to morny-core subproject.
- add fake BuildConfig to pass type check - add CoreCommandsReports.onUnauthorizedManageCommandCall for a report.
This commit is contained in:
parent
96101ec434
commit
9d43345659
@ -3,7 +3,7 @@ package cc.sukazyo.cono.morny.reporter
|
||||
import cc.sukazyo.cono.morny.core.internal.MornyInternalModule
|
||||
import cc.sukazyo.cono.morny.core.Log.logger
|
||||
import cc.sukazyo.cono.morny.core.MornyCoeur
|
||||
import cc.sukazyo.cono.morny.core.event.TelegramBotEvents
|
||||
import cc.sukazyo.cono.morny.core.event.{TelegramBotEvents, TelegramCoreCommandEvents}
|
||||
|
||||
class Module extends MornyInternalModule {
|
||||
|
||||
@ -46,6 +46,8 @@ class Module extends MornyInternalModule {
|
||||
.registerListener(instance.botErrorsReport.onGetUpdateFailed)
|
||||
TelegramBotEvents.inCoeur.OnListenerOccursException
|
||||
.registerListener(instance.botErrorsReport.onEventListenersThrowException)
|
||||
TelegramCoreCommandEvents.inCoeur.OnUnauthorizedManageCommandCall
|
||||
.registerListener(instance.coreCommandsReports.onUnauthorizedManageCommandCall)
|
||||
|
||||
} || {
|
||||
logger `warn` "There seems no reporter instance is provided; skipped start it."
|
||||
|
@ -3,7 +3,7 @@ package cc.sukazyo.cono.morny.reporter
|
||||
import cc.sukazyo.cono.morny.core.{MornyCoeur, MornyConfig}
|
||||
import cc.sukazyo.cono.morny.core.Log.logger
|
||||
import cc.sukazyo.cono.morny.data.MornyInformation.getVersionAllFullTagHTML
|
||||
import cc.sukazyo.cono.morny.reporter.telegram_bot.BotErrorsReport
|
||||
import cc.sukazyo.cono.morny.reporter.telegram_bot.{BotErrorsReport, CoreCommandsReports}
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.event.{EventEnv, EventListener, EventRuntimeException}
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.formatting.TelegramFormatter.*
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.formatting.TelegramParseEscape.escapeHtml as h
|
||||
@ -150,6 +150,7 @@ class MornyReport (using val coeur: MornyCoeur) {
|
||||
}
|
||||
|
||||
object botErrorsReport extends BotErrorsReport()
|
||||
object coreCommandsReports extends CoreCommandsReports()
|
||||
|
||||
object EventStatistics {
|
||||
|
||||
|
@ -0,0 +1,18 @@
|
||||
package cc.sukazyo.cono.morny.reporter.telegram_bot
|
||||
|
||||
import cc.sukazyo.cono.morny.core.event.TelegramCoreCommandEvents
|
||||
import cc.sukazyo.cono.morny.reporter.MornyReport
|
||||
|
||||
class CoreCommandsReports (using reporter: MornyReport) {
|
||||
|
||||
private val _Event = TelegramCoreCommandEvents.inCoeur(using reporter.coeur)
|
||||
|
||||
val onUnauthorizedManageCommandCall: _Event.OnUnauthorizedManageCommandCall.MyCallback
|
||||
= (context, command) => {
|
||||
reporter.unauthenticatedAction(
|
||||
s"/${command.name}",
|
||||
context.bind_user
|
||||
)
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
// $COVERAGE-OFF$
|
||||
package cc.sukazyo.cono.morny
|
||||
|
||||
/** This object was generated by sbt-buildinfo. */
|
||||
case object BuildConfig {
|
||||
/** The value is "Morny Coeur". */
|
||||
val name: String = "Morny Coeur"
|
||||
/** The value is "2.0.0-alpha21-SNAPSHOT". */
|
||||
val version: String = "2.0.0-alpha21-SNAPSHOT"
|
||||
/** The value is "3.4.1". */
|
||||
val scalaVersion: String = "3.4.1"
|
||||
/** The value is "1.10.0". */
|
||||
val sbtVersion: String = "1.10.0"
|
||||
/** The value is "2.0.0-alpha21-SNAPSHOT". */
|
||||
val VERSION: String = "2.0.0-alpha21-SNAPSHOT"
|
||||
/** The value is "2.0.0-alpha21-SNAPSHOT+gitbd958708.δ". */
|
||||
val VERSION_FULL: String = "2.0.0-alpha21-SNAPSHOT+gitbd958708.δ"
|
||||
/** The value is "2.0.0-alpha21". */
|
||||
val VERSION_BASE: String = "2.0.0-alpha21"
|
||||
/** The value is scala.None. */
|
||||
val VERSION_DELTA: scala.Option[String] = scala.None
|
||||
/** The value is "xinzheng". */
|
||||
val CODENAME: String = "xinzheng"
|
||||
/** The value is 1739975193572L. */
|
||||
val CODE_TIMESTAMP: scala.Long = 1739975193572L
|
||||
/** The value is "bd95870864075e9921257e14bf446f53d4bc5e02". */
|
||||
val COMMIT: String = "bd95870864075e9921257e14bf446f53d4bc5e02"
|
||||
/** The value is false. */
|
||||
val CLEAN_BUILD: scala.Boolean = false
|
||||
/** The value is "https://github.com/Eyre-S/Coeur-Morny-Cono". */
|
||||
val CODE_STORE: String = "https://github.com/Eyre-S/Coeur-Morny-Cono"
|
||||
/** The value is "https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s". */
|
||||
val COMMIT_PATH: String = "https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s"
|
||||
override val toString: String = {
|
||||
"name: %s, version: %s, scalaVersion: %s, sbtVersion: %s, VERSION: %s, VERSION_FULL: %s, VERSION_BASE: %s, VERSION_DELTA: %s, CODENAME: %s, CODE_TIMESTAMP: %s, COMMIT: %s, CLEAN_BUILD: %s, CODE_STORE: %s, COMMIT_PATH: %s".format(
|
||||
name, version, scalaVersion, sbtVersion, VERSION, VERSION_FULL, VERSION_BASE, VERSION_DELTA, CODENAME, CODE_TIMESTAMP, COMMIT, CLEAN_BUILD, CODE_STORE, COMMIT_PATH
|
||||
)
|
||||
}
|
||||
}
|
||||
// $COVERAGE-ON$
|
@ -6,7 +6,7 @@ import cc.sukazyo.cono.morny.core.bot.api.{BotExtension, EventListenerManager, M
|
||||
import cc.sukazyo.cono.morny.core.bot.api.messages.ThreadingManager
|
||||
import cc.sukazyo.cono.morny.core.bot.event.{MornyOnInlineQuery, MornyOnTelegramCommand, MornyOnUpdateTimestampOffsetLock}
|
||||
import cc.sukazyo.cono.morny.core.bot.internal.{ErrorMessageManager, ThreadingManagerImpl}
|
||||
import cc.sukazyo.cono.morny.core.event.TelegramBotEvents
|
||||
import cc.sukazyo.cono.morny.core.event.{TelegramBotEvents, TelegramCoreCommandEvents}
|
||||
import cc.sukazyo.cono.morny.core.http.api.{HttpServer, MornyHttpServerContext}
|
||||
import cc.sukazyo.cono.morny.core.http.internal.MornyHttpServerContextImpl
|
||||
import cc.sukazyo.cono.morny.core.module.ModuleHelper
|
||||
@ -119,6 +119,7 @@ class MornyCoeur (modules: List[MornyModule])(using val config: MornyConfig)(tes
|
||||
given MornyCoeur = this
|
||||
|
||||
val telegramBotEvents = new TelegramBotEvents()
|
||||
val telegramCoreCommandEvents = new TelegramCoreCommandEvents()
|
||||
|
||||
val externalContext: GivenContext = GivenContext()
|
||||
logger `info`
|
@ -4,7 +4,6 @@ import cc.sukazyo.cono.morny.core.{MornyCoeur, MornySystem}
|
||||
import cc.sukazyo.cono.morny.core.bot.api.messages.{ErrorMessage, MessagingContext}
|
||||
import cc.sukazyo.cono.morny.data.MornyInformation.*
|
||||
import cc.sukazyo.cono.morny.data.TelegramStickers
|
||||
import cc.sukazyo.cono.morny.reporter.MornyReport
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.formatting.TelegramParseEscape.escapeHtml as h
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.TelegramExtensions.Requests.unsafeExecute
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.command.{ICommandAlias, InputCommand, ITelegramCommand}
|
||||
@ -220,23 +219,24 @@ class MornyInformation (using coeur: MornyCoeur) extends ITelegramCommand {
|
||||
.unsafeExecute
|
||||
}
|
||||
|
||||
// todo: fix this
|
||||
private def echoEventStatistics (using update: Update): Unit = {
|
||||
coeur.externalContext >> { (reporter: MornyReport) =>
|
||||
SendMessage(
|
||||
update.message.chat.id,
|
||||
VarText(
|
||||
// language=html
|
||||
"""<b>Event Statistics :</b>
|
||||
|in today
|
||||
|{event_statistics}""".stripMargin
|
||||
).render(
|
||||
"event_statistics" -> reporter.EventStatistics.eventStatisticsHTML
|
||||
)
|
||||
).parseMode(ParseMode.HTML).replyToMessageId(update.message.messageId)
|
||||
.unsafeExecute
|
||||
} || {
|
||||
echo404
|
||||
}
|
||||
// coeur.externalContext >> { (reporter: MornyReport) =>
|
||||
// SendMessage(
|
||||
// update.message.chat.id,
|
||||
// VarText(
|
||||
// // language=html
|
||||
// """<b>Event Statistics :</b>
|
||||
// |in today
|
||||
// |{event_statistics}""".stripMargin
|
||||
// ).render(
|
||||
// "event_statistics" -> reporter.EventStatistics.eventStatisticsHTML
|
||||
// )
|
||||
// ).parseMode(ParseMode.HTML).replyToMessageId(update.message.messageId)
|
||||
// .unsafeExecute
|
||||
// } || {
|
||||
// echo404
|
||||
// }
|
||||
}
|
||||
|
||||
private def echo404 (using event: Update): Unit =
|
@ -4,8 +4,8 @@ import cc.sukazyo.cono.morny.core.Log.logger
|
||||
import cc.sukazyo.cono.morny.core.MornyCoeur
|
||||
import cc.sukazyo.cono.morny.core.bot.api.messages
|
||||
import cc.sukazyo.cono.morny.core.bot.api.messages.MessagingContext
|
||||
import cc.sukazyo.cono.morny.core.event.TelegramCoreCommandEvents
|
||||
import cc.sukazyo.cono.morny.data.TelegramStickers
|
||||
import cc.sukazyo.cono.morny.reporter.MornyReport
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.command.ICommandAlias.HiddenAlias
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.formatting.TelegramFormatter.*
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.TelegramExtensions.Requests.unsafeExecute
|
||||
@ -24,7 +24,7 @@ class MornyManagers (using coeur: MornyCoeur) {
|
||||
).replyToMessageId(cxt.bind_message.messageId)
|
||||
.unsafeExecute
|
||||
logger `attention` s"403 ${command.name} caught from user ${cxt.bind_user toLogTag}"
|
||||
coeur.externalContext.consume[MornyReport](_.unauthenticatedAction(s"/${command.name}", cxt.bind_user))
|
||||
TelegramCoreCommandEvents.inCoeur.OnUnauthorizedManageCommandCall.emit((cxt, command))
|
||||
false
|
||||
else true
|
||||
}
|
@ -2,16 +2,12 @@ package cc.sukazyo.cono.morny.core.event
|
||||
|
||||
import cc.sukazyo.cono.morny.core.MornyCoeur
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.event.{EventEnv, EventListener as TelegramEventListener}
|
||||
import cc.sukazyo.std.event.{EventContext, RichEvent}
|
||||
import cc.sukazyo.std.event.RichEvent
|
||||
import cc.sukazyo.std.event.impl.NormalEventManager
|
||||
import com.pengrad.telegrambot.TelegramException
|
||||
|
||||
class TelegramBotEvents (using coeur: MornyCoeur) {
|
||||
|
||||
private val contextInitializer: EventContext[?]=>Unit = context => {
|
||||
context.givenCxt << coeur
|
||||
}
|
||||
|
||||
/**
|
||||
* Event: OnGetUpdateFailed in TelegramBotEvents
|
||||
*
|
||||
@ -25,10 +21,10 @@ class TelegramBotEvents (using coeur: MornyCoeur) {
|
||||
* You should register your own listener at stage [[MornyModule.onStartingPost]].
|
||||
*/
|
||||
val OnGetUpdateFailed: NormalEventManager[TelegramException, Unit] =
|
||||
NormalEventManager().initContextWith(contextInitializer)
|
||||
NormalEventManager().initContextWith(initWithCoeur)
|
||||
|
||||
val OnListenerOccursException: RichEvent[(Throwable, TelegramEventListener, EventEnv), Unit] =
|
||||
NormalEventManager().initContextWith(contextInitializer)
|
||||
NormalEventManager().initContextWith(initWithCoeur)
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
package cc.sukazyo.cono.morny.core.event
|
||||
|
||||
import cc.sukazyo.cono.morny.core.MornyCoeur
|
||||
import cc.sukazyo.cono.morny.core.bot.api.messages.MessagingContext
|
||||
import cc.sukazyo.cono.morny.system.telegram_api.command.ISimpleCommand
|
||||
import cc.sukazyo.std.event.RichEvent
|
||||
import cc.sukazyo.std.event.impl.NormalEventManager
|
||||
|
||||
class TelegramCoreCommandEvents (using coeur: MornyCoeur) {
|
||||
|
||||
val OnUnauthorizedManageCommandCall: RichEvent[(MessagingContext.WithUserAndMessage, ISimpleCommand), Unit] =
|
||||
NormalEventManager().initContextWith(initWithCoeur)
|
||||
|
||||
}
|
||||
|
||||
object TelegramCoreCommandEvents {
|
||||
|
||||
def inCoeur (using coeur: MornyCoeur): TelegramCoreCommandEvents =
|
||||
coeur.telegramCoreCommandEvents
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package cc.sukazyo.cono.morny.core
|
||||
|
||||
import cc.sukazyo.std.event.EventContext
|
||||
|
||||
package object event {
|
||||
|
||||
def initWithCoeur (using coeur: MornyCoeur): EventContext[?]=>Unit
|
||||
= context => {
|
||||
context.givenCxt << coeur
|
||||
}
|
||||
|
||||
}
|
@ -74,7 +74,32 @@ object MornyConfiguration {
|
||||
override val group = GROUP
|
||||
override val root_package = s"$GROUP.cono.morny.core"
|
||||
|
||||
override val dependencies = Seq()
|
||||
override val dependencies = Seq(
|
||||
|
||||
"com.github.spotbugs" % "spotbugs-annotations" % "4.9.1" % Compile,
|
||||
|
||||
"cc.sukazyo" % "messiva" % "0.2.0",
|
||||
"cc.sukazyo" % "resource-tools" % "0.3.1",
|
||||
"cc.sukazyo" % "da4a" % "0.2.0-SNAPSHOT" changing(),
|
||||
|
||||
"com.github.pengrad" % "java-telegram-bot-api" % "6.2.0",
|
||||
"org.http4s" %% "http4s-dsl" % "0.23.30",
|
||||
"org.http4s" %% "http4s-circe" % "0.23.30",
|
||||
"org.http4s" %% "http4s-netty-server" % "0.5.22",
|
||||
|
||||
"io.circe" %% "circe-core" % "0.14.10",
|
||||
"io.circe" %% "circe-generic" % "0.14.10",
|
||||
"io.circe" %% "circe-parser" % "0.14.10",
|
||||
|
||||
"com.cronutils" % "cron-utils" % "9.2.1",
|
||||
|
||||
"org.scalatest" %% "scalatest" % "3.2.19" % Test,
|
||||
"org.scalatest" %% "scalatest-freespec" % "3.2.19" % Test,
|
||||
// for test report
|
||||
"com.vladsch.flexmark" % "flexmark" % "0.64.8" % Test,
|
||||
"com.vladsch.flexmark" % "flexmark-profile-pegdown" % "0.64.8" % Test
|
||||
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user