mirai-console-jms-plugin/src/main/kotlin/JMSCommand.kt
jie65535 1902e922a3 更新到v0.1.1
修复 未查询到数据时提示异常问题
修复 获取玩家头像未显示双层皮肤问题
2022-02-12 20:10:29 +08:00

92 lines
2.9 KiB
Kotlin

package top.jie65535
import net.mamoe.mirai.console.command.CommandSender
import net.mamoe.mirai.console.command.CompositeCommand
import net.mamoe.mirai.contact.Contact.Companion.sendImage
import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
object JMSCommand : CompositeCommand(
JMinecraftSkin, "jms",
description = "Minecraft Skin Commands"
) {
@SubCommand("uuid")
@Description("查询玩家UUID")
suspend fun CommandSender.getUuid(username: String) {
try {
sendMessage(MinecraftPlayer(username).uuid)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("获取玩家UUID失败", e)
e.message?.let { sendMessage(it) }
}
}
@SubCommand("avatar")
@Description("查询玩家头像")
suspend fun CommandSender.getAvatar(username: String) {
try {
sendImage(MinecraftPlayer(username).avatar)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("获取玩家头像失败", e)
e.message?.let { sendMessage(it) }
}
}
@SubCommand("head")
@Description("查询玩家头模型")
suspend fun CommandSender.getHead(username: String) {
try {
sendImage(MinecraftPlayer(username).head)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("查询玩家头模型失败", e)
e.message?.let { sendMessage(it) }
}
}
@SubCommand("body")
@Description("查询玩家皮肤模型")
suspend fun CommandSender.getBody(username: String) {
try {
sendImage(MinecraftPlayer(username).body)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("查询玩家皮肤模型失败", e)
e.message?.let { sendMessage(it) }
}
}
@SubCommand("skin")
@Description("获取玩家皮肤文件")
suspend fun CommandSender.getSkin(username: String) {
try {
sendImage(MinecraftPlayer(username).skin)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("获取玩家皮肤文件失败", e)
e.message?.let { sendMessage(it) }
}
}
@SubCommand("cape")
@Description("获取玩家披风文件")
suspend fun CommandSender.getCape(username: String) {
try {
sendImage(MinecraftPlayer(username).cape)
} catch (e: Throwable) {
JMinecraftSkin.logger.error("获取玩家披风文件失败", e)
e.message?.let { sendMessage(it) }
}
}
private suspend fun CommandSender.sendImage(data: ByteArray) {
try {
if (data.isEmpty()) {
subject?.sendMessage("未查询到数据")
return
}
data.toExternalResource().use {
subject?.sendImage(it)
}
} catch (e: Throwable) {
subject?.sendMessage(String(data))
}
}
}