Skip to content

Commit

Permalink
fix OnQuestionMarkReply false-trigger, add 尊嘟假嘟
Browse files Browse the repository at this point in the history
  • Loading branch information
Eyre-S committed Oct 9, 2023
1 parent 253208e commit 692abb9
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 26 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ MORNY_ARCHIVE_NAME = morny-coeur
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s

VERSION = 1.1.0-alpha1
VERSION = 1.1.0-alpha2

USE_DELTA = false
VERSION_DELTA =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ import cc.sukazyo.cono.morny.MornyCoeur

class MornyEventListeners (using manager: EventListenerManager) (using coeur: MornyCoeur) {

private val $OnUserRandom = OnUserRandom()
manager.register(
// ACTIVITY_RECORDER
// KUOHUANHUAN_NEED_SLEEP
OnUniMeowTrigger(using coeur.commands),
OnUserRandom(),
$OnUserRandom.RandomSelect,
//noinspection NonAsciiCharacters
$OnUserRandom.尊嘟假嘟,
OnQuestionMarkReply(),
OnUserSlashAction(),
OnCallMe(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ object OnQuestionMarkReply {

def isAllMessageMark (using text: String): Boolean = {
boundary[Boolean] {
for (c <- text) if QUESTION_MARKS contains c then boundary.break(false)
for (c <- text)
if !(QUESTION_MARKS contains c) then
boundary break false
true
}
}
Expand Down
74 changes: 51 additions & 23 deletions src/main/scala/cc/sukazyo/cono/morny/bot/event/OnUserRandom.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,65 @@ import cc.sukazyo.cono.morny.MornyCoeur
import cc.sukazyo.cono.morny.bot.api.EventListener
import cc.sukazyo.cono.morny.util.tgapi.TelegramExtensions.Bot.exec
import com.pengrad.telegrambot.model.Update
import com.pengrad.telegrambot.request.SendMessage
import com.pengrad.telegrambot.request.{AbstractSendRequest, SendMessage}
import com.pengrad.telegrambot.response.SendResponse

import scala.language.postfixOps

class OnUserRandom (using coeur: MornyCoeur) extends EventListener {

private val USER_OR_QUERY = "^(.+)(?:还是|or)(.+)$"r
private val USER_IF_QUERY = "^(.+)(?:吗\\?|?|\\?|吗?)$"r
class OnUserRandom (using coeur: MornyCoeur) {

override def onMessage(using update: Update): Boolean = {
object RandomSelect extends EventListener {


private val USER_OR_QUERY = "^(.+)(?:还是|or)(.+)$" r
private val USER_IF_QUERY = "^(.+)(?:吗\\?|?|\\?|吗?)$" r

if update.message.text == null then return false
if !(update.message.text startsWith "/") then return false
override def onMessage (using update: Update): Boolean = {

if update.message.text == null then return false
if !(update.message.text startsWith "/") then return false

import cc.sukazyo.cono.morny.util.UseRandom.rand_half
val query = update.message.text substring 1
val result: String | Null = query match
case USER_OR_QUERY(_con1, _con2) =>
if rand_half then _con1 else _con2
case USER_IF_QUERY(_con) =>
// for capability with [[OnQuestionMarkReply]]
if OnQuestionMarkReply.isAllMessageMark(using _con) then return false
(if rand_half then "" else "") + _con
case _ => null

if result == null then return false

coeur.account exec SendMessage(
update.message.chat.id, result
).replyToMessageId(update.message.messageId)
true

}

import cc.sukazyo.cono.morny.util.UseRandom.rand_half
val query = update.message.text substring 1
val result: String|Null = query match
case USER_OR_QUERY(_con1, _con2) =>
if rand_half then _con1 else _con2
case USER_IF_QUERY(_con) =>
// for capability with [[OnQuestionMarkReply]]
if OnQuestionMarkReply.isAllMessageMark(using _con) then return false
(if rand_half then "" else "") + _con
case _ => null
}

//noinspection NonAsciiCharacters
object 尊嘟假嘟 extends EventListener {

if result == null then return false
private val keywords = Array("尊嘟假嘟", "O.o", "o.O")

coeur.account exec SendMessage(
update.message.chat.id, result
).replyToMessageId(update.message.messageId)
true
override def onMessage (using event: Update): Boolean = {

if event.message.text == null then return false

if !(keywords contains event.message.text) then return false

import cc.sukazyo.cono.morny.util.UseRandom.rand_half
coeur.account exec SendMessage(
event.message.chat.id,
if rand_half then "尊嘟" else "假嘟"
).replyToMessageId(event.message.messageId)
true

}

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package cc.sukazyo.cono.morny.test.cc.sukazyo.cono.morny.event

import cc.sukazyo.cono.morny.bot.event.OnQuestionMarkReply
import cc.sukazyo.cono.morny.test.MornyTests
import org.scalatest.prop.TableDrivenPropertyChecks

class OnQuestionMarkReplyTest extends MornyTests with TableDrivenPropertyChecks {

"on replying a question mark :" - {

"on checking if a message is a question mark :" - {

val examples = Table(
("text", "is"),
("回来了", false),
("为什么?", false),
("?这不合理", false),
("??尊嘟假嘟", false),
("?????", true),
("?", true),
("", true),
("??❔", true),
)
forAll(examples) { (text, is) =>

s"$text should checked with result $is" in:
OnQuestionMarkReply.isAllMessageMark(using text) shouldEqual is

}

}

}

}

0 comments on commit 692abb9

Please sign in to comment.