mirror of
https://github.com/jie65535/JChatGPT.git
synced 2025-12-08 18:31:36 +08:00
69 lines
2.4 KiB
Kotlin
69 lines
2.4 KiB
Kotlin
package top.jie65535.mirai
|
|
|
|
import net.mamoe.mirai.console.command.CommandSender
|
|
import net.mamoe.mirai.console.command.CompositeCommand
|
|
import net.mamoe.mirai.console.permission.PermissionService.Companion.cancel
|
|
import net.mamoe.mirai.console.permission.PermissionService.Companion.permit
|
|
import net.mamoe.mirai.console.permission.PermitteeId.Companion.permitteeId
|
|
import net.mamoe.mirai.contact.Contact
|
|
import net.mamoe.mirai.contact.Group
|
|
import net.mamoe.mirai.contact.Member
|
|
import net.mamoe.mirai.contact.User
|
|
import top.jie65535.mirai.JChatGPT.reload
|
|
|
|
object PluginCommands : CompositeCommand(
|
|
JChatGPT, "jgpt", description = "J OpenAI ChatGPT"
|
|
) {
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.reload() {
|
|
PluginConfig.reload()
|
|
PluginData.reload()
|
|
LargeLanguageModels.reload()
|
|
sendMessage("OK")
|
|
}
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.enable(contact: Contact) {
|
|
when (contact) {
|
|
is Member -> contact.permitteeId.permit(JChatGPT.chatPermission)
|
|
is User -> contact.permitteeId.permit(JChatGPT.chatPermission)
|
|
is Group -> contact.permitteeId.permit(JChatGPT.chatPermission)
|
|
}
|
|
sendMessage("OK")
|
|
}
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.disable(contact: Contact) {
|
|
when (contact) {
|
|
is Member -> contact.permitteeId.cancel(JChatGPT.chatPermission, false)
|
|
is User -> contact.permitteeId.cancel(JChatGPT.chatPermission, false)
|
|
is Group -> contact.permitteeId.cancel(JChatGPT.chatPermission, false)
|
|
}
|
|
sendMessage("OK")
|
|
}
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.clearMemory() {
|
|
PluginData.contactMemory.clear()
|
|
sendMessage("OK")
|
|
}
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.setFavor(user: User, value: Int) {
|
|
// 限制好感度值在-100到100之间
|
|
val clampedValue = value.coerceIn(-100, 100)
|
|
// 获取当前的好感度信息
|
|
val currentInfo = PluginData.userFavorability[user.id] ?: FavorabilityInfo(user.id)
|
|
// 创建新的好感度信息,保持原因和印象不变
|
|
val newInfo = currentInfo.copy(value = clampedValue)
|
|
PluginData.userFavorability[user.id] = newInfo
|
|
sendMessage("OK")
|
|
}
|
|
|
|
@SubCommand
|
|
suspend fun CommandSender.clearFavor() {
|
|
PluginData.userFavorability.clear()
|
|
sendMessage("OK")
|
|
}
|
|
} |