Skip to content
This repository has been archived by the owner on Oct 30, 2022. It is now read-only.

Commit

Permalink
upt
Browse files Browse the repository at this point in the history
  • Loading branch information
LaoLittle committed Dec 29, 2021
1 parent be6fffd commit 380b564
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 11 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
@@ -1,5 +1,5 @@
plugins {
val kotlinVersion = "1.6.10"
val kotlinVersion = "1.5.30"
kotlin("jvm") version kotlinVersion
kotlin("plugin.serialization") version kotlinVersion

Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/AutoConfig.kt
Expand Up @@ -157,6 +157,9 @@ object AutoConfig : AutoSavePluginConfig("AutoConfig") {
@ValueDescription("祖安次数超限回复")
val outOfLimitation: String by value("我才不会骂你那么多次啦!")

@ValueDescription("机器人说话叠词词的概率")
val reduplicate: Int by value(0)

/*
@ValueDescription("是否在禁言期间持续发送消息给操作人以及发送的消息")
val keepSendMessageWhenMuted: Boolean by value(false)
Expand Down
21 changes: 19 additions & 2 deletions src/main/kotlin/AutoGroup.kt
Expand Up @@ -18,6 +18,7 @@ import net.mamoe.mirai.event.*
import net.mamoe.mirai.event.events.*
import net.mamoe.mirai.message.code.MiraiCode.deserializeMiraiCode
import net.mamoe.mirai.message.data.*
import net.mamoe.mirai.message.nextMessage
import net.mamoe.mirai.utils.MiraiExperimentalApi
import net.mamoe.mirai.utils.error
import net.mamoe.mirai.utils.info
Expand All @@ -39,6 +40,7 @@ import org.laolittle.plugin.joinorquit.AutoConfig.newMemberJoinPat
import org.laolittle.plugin.joinorquit.AutoConfig.nudgeMin
import org.laolittle.plugin.joinorquit.AutoConfig.nudgedReply
import org.laolittle.plugin.joinorquit.AutoConfig.quitMessage
import org.laolittle.plugin.joinorquit.AutoConfig.reduplicate
import org.laolittle.plugin.joinorquit.AutoConfig.repeatSec
import org.laolittle.plugin.joinorquit.AutoConfig.roulette
import org.laolittle.plugin.joinorquit.AutoConfig.rouletteOutMessage
Expand All @@ -58,6 +60,7 @@ import org.laolittle.plugin.joinorquit.utils.Tools.encodeImageToMiraiCode
import org.laolittle.plugin.joinorquit.utils.Tools.encodeToAudio
import org.laolittle.plugin.joinorquit.utils.Tools.encodeToMiraiCode
import org.laolittle.plugin.joinorquit.utils.Tools.getYinglishNode
import org.laolittle.plugin.joinorquit.utils.Tools.reduplicate
import java.io.File
import java.time.LocalDateTime
import java.util.*
Expand Down Expand Up @@ -339,6 +342,13 @@ object AutoGroup : KotlinPlugin(
})
}

"叠词词" Here@{
val promMsg = subject.sendMessage("叠词词")
val next = runCatching { nextMessage(30_000) }.getOrNull() ?: return@Here
subject.sendMessage(next.reduplicate())
promMsg.recall()
}

yinglishCommand {
if (onYinable.contains(sender.id)) return@yinglishCommand
onYinable.add(sender.id)
Expand All @@ -352,8 +362,8 @@ object AutoGroup : KotlinPlugin(

foo.forEach { keyWord ->
val part = WordDictionary.getInstance().parts[keyWord.word]
val chars = keyWord.word.toCharArray()
yinglish.append(getYinglishNode(chars, part))
val word = keyWord.word
yinglish.append(getYinglishNode(word, part))
}

subject.sendMessage(yinglish.toString())
Expand Down Expand Up @@ -512,6 +522,13 @@ object AutoGroup : KotlinPlugin(
}
}

GlobalEventChannel.filter { reduplicate > 0 }.subscribeAlways<MessagePreSendEvent> {
val random = (1..100).random()
if (random < reduplicate) {
message = message.reduplicate()
}
}

GlobalEventChannel.subscribeFriendMessages {
/* "心灵控制" {
subject.sendMessage("请发送你需要转换的聊天记录")
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/GroupList.kt
Expand Up @@ -27,5 +27,5 @@ object GroupList : AutoSavePluginConfig("GroupList") {
val type by value(ListType.BlackList)

@ValueDescription("群聊名单")
val groupList by value(mutableSetOf<Long>(123456))
val groupList by value(mutableSetOf(123456L))
}
2 changes: 1 addition & 1 deletion src/main/kotlin/command/Zuan.kt
Expand Up @@ -28,7 +28,7 @@ object Zuan : SimpleCommand(
return
}
repeat(inTimes) {
val zuAn = KtorHttpUtil.getZuan()
val zuAn = KtorHttpUtil.getZuan()
subject?.sendMessage(At(user!!).plus(PlainText(zuAn)))
?: AutoGroup.logger.info { zuAn }
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/utils/KtorHttpUtil.kt
Expand Up @@ -7,7 +7,8 @@ import org.laolittle.plugin.joinorquit.AutoConfig.maxZuanLevel
object KtorHttpUtil {
private val client = HttpClient()
private val zuanUrl = StringBuffer()
private const val ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.57"
private const val ua =
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.57"

suspend fun getZuan(): String {
return client.get {
Expand Down
36 changes: 31 additions & 5 deletions src/main/kotlin/utils/Tools.kt
@@ -1,9 +1,15 @@
package org.laolittle.plugin.joinorquit.utils

import com.huaban.analysis.jieba.JiebaSegmenter
import com.huaban.analysis.jieba.WordDictionary
import net.mamoe.mirai.contact.AudioSupported
import net.mamoe.mirai.contact.Contact
import net.mamoe.mirai.contact.User
import net.mamoe.mirai.message.code.MiraiCode.deserializeMiraiCode
import net.mamoe.mirai.message.data.Message
import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.message.data.OfflineAudio
import net.mamoe.mirai.message.data.toMessageChain
import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
import net.mamoe.mirai.utils.ExternalResource.Companion.uploadAsImage
import org.laolittle.plugin.joinorquit.AutoConfig.yinLevel
Expand Down Expand Up @@ -39,21 +45,41 @@ object Tools {
else replace("%被动%", "[mirai:at:${user.id}]")
}

fun getYinglishNode(wordChars: CharArray, part: String?): String {
fun getYinglishNode(wordChars: String, part: String?): String {
val randomOneTen = { (1..100).random() }
var pon = ""
if (randomOneTen() > yinLevel)
return String(wordChars)
return wordChars
if (wordChars[0] == '' || wordChars[0] == '!')
return ""
if (wordChars[0] == '' || wordChars[0] == '')
return ""
if (wordChars.size > 1 && randomOneTen() > 50)
return "${wordChars[0]}${String(wordChars)}"
if (wordChars.length > 1 && randomOneTen() > 50)
return "${wordChars[0]}$wordChars"
else if (part == "n" && randomOneTen() > 50) {
repeat(wordChars.count()) { pon += "" }
return pon
}
return "${String(wordChars)}"
return "$wordChars"
}

fun Message.reduplicate(): MessageChain {
val miraiCode = toMessageChain().serializeToMiraiCode()
val foo = JiebaSegmenter().process(miraiCode, JiebaSegmenter.SegMode.SEARCH)
val reduplicate = StringBuffer()
val random = { (1..10).random() }
foo.forEach { keyWord ->
val part = WordDictionary.getInstance().parts[keyWord.word]
val word = keyWord.word
val bar = if (random() > 7) {
if ((part == "n") && word.length == 2)
if (random() > 3)
"$word${word[1]}"
else "${word[1]}${word[1]}"
else word
} else word
reduplicate.append(bar)
}
return reduplicate.toString().deserializeMiraiCode()
}
}

0 comments on commit 380b564

Please sign in to comment.