feat: add compiler and format class dir
This commit is contained in:
23 files changed
+128
-68
No files matched your search
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/9/4
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.fancybot.entity.cigarette.Cigarette
|
||||
import cn.rtast.fancybot.util.Http
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
|
||||
class CigaretteCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/香烟", "/tobacco", "/cigarette")
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
if (args.isEmpty()) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addNewLine()
|
||||
.addText("发送/tobacco <名称> [数量] 来搜索结果哦~")
|
||||
.addNewLine()
|
||||
.addText("最多只能显示出10条结果哦, 不指定数量的话默认是3条~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
return
|
||||
}
|
||||
val limit = if (args.size == 1) 3 else if (args.last().toInt() > 10) 3 else args.last().toInt()
|
||||
val productName = args.first()
|
||||
val result = Http.get<Cigarette>(
|
||||
"https://www.yanyue.cn/api/rc/product/yanlist",
|
||||
mapOf("productname" to productName)
|
||||
)
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addNewLine()
|
||||
.addText("搜索到${result.totalCount}条结果, 仅展示前 $limit 条结果哦~")
|
||||
.addNewLine()
|
||||
|
||||
result.productList.asSequence().take(limit).forEach {
|
||||
msg.addImage(it.cover)
|
||||
.addText("名称: ${it.productName} | 类型: ${it.type.typeName}")
|
||||
.addNewLine()
|
||||
.addText("焦油量: ${it.tar}mg | 尼古丁含量: ${it.nicotine}mg")
|
||||
.addNewLine()
|
||||
.addText("参考价: 单盒: ${it.packPrice}元 | 整条: ${it.barPrice}元")
|
||||
.addNewLine()
|
||||
}
|
||||
msg.addNewLine().addText("吸烟有害健康, 尽早戒烟有益健康。")
|
||||
listener.sendGroupMessage(message.groupId, msg.build())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/9/3
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.fancybot.entity.MCPing
|
||||
import cn.rtast.fancybot.util.str.fromJson
|
||||
import cn.rtast.motdpinger.MotdPinger
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
|
||||
class MCPingCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/mcping", "/mcPing")
|
||||
|
||||
private val pingInstance = MotdPinger()
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
if (args.isEmpty()) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addNewLine()
|
||||
.addText("使用方法: /mcping <host>:[port]")
|
||||
.addNewLine()
|
||||
.addText("仅限Java版服务器哦~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
return
|
||||
}
|
||||
val parts = args.first().split(":")
|
||||
val host: String
|
||||
val port: Int
|
||||
if (parts.size == 2) {
|
||||
host = parts[0]
|
||||
port = parts[1].toIntOrNull() ?: 25565
|
||||
} else {
|
||||
host = args.first()
|
||||
port = 25565
|
||||
}
|
||||
try {
|
||||
val rawResponse = pingInstance.pingServer(host, port)
|
||||
val jsonResponse = rawResponse?.fromJson<MCPing>()!!
|
||||
val msg = MessageChain.Builder().addAt(message.sender.userId).addNewLine()
|
||||
if (jsonResponse.favicon != null) msg.addImage(jsonResponse.favicon, true)
|
||||
msg.addText("服务器地址: $host:$port")
|
||||
msg.addNewLine()
|
||||
msg.addText("协议版本号: ${jsonResponse.version.protocol}/${jsonResponse.version.name}")
|
||||
msg.addNewLine()
|
||||
msg.addText("玩家: ${jsonResponse.players.online}/${jsonResponse.players.max}")
|
||||
listener.sendGroupMessage(message.groupId, msg.build())
|
||||
} catch (_: Exception) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("ping失败~")
|
||||
.addNewLine()
|
||||
.addText("检查一下地址或者端口是否正确吧~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/8/27
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.fancybot.configManager
|
||||
import cn.rtast.fancybot.entity.music.Search
|
||||
import cn.rtast.fancybot.entity.music.SearchedResult
|
||||
import cn.rtast.fancybot.util.Http
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.enums.MusicShareType
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
import java.time.Instant
|
||||
|
||||
class MusicCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/music", "/点歌")
|
||||
|
||||
private val searchedResult = mutableMapOf<Long, List<SearchedResult>>()
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
if (args.isEmpty()) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("发送`/点歌`或者`/music` <关键词> 来搜索音乐~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
return
|
||||
}
|
||||
searchedResult.forEach { (key, results) ->
|
||||
val validResults = results.filter { result ->
|
||||
Instant.now().epochSecond - result.timestamp <= 30
|
||||
}
|
||||
if (validResults.isEmpty()) {
|
||||
searchedResult.remove(key)
|
||||
} else {
|
||||
searchedResult[key] = validResults
|
||||
}
|
||||
}
|
||||
val method = args.first()
|
||||
when (method) {
|
||||
"p", "pp", "play", "播放" -> {
|
||||
try {
|
||||
val index = args.drop(1).last().toInt()
|
||||
val searchedResultGet = searchedResult[message.sender.userId]!!
|
||||
val finalResult = searchedResultGet[index]
|
||||
val msg = MessageChain.Builder()
|
||||
.addMusicShare(MusicShareType.Netease, finalResult.id.toString())
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
} catch (_: Exception) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("输入有误请重新搜索本次搜索结果已清除")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
searchedResult.remove(message.sender.userId)
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (searchedResult.containsKey(message.sender.userId)) {
|
||||
searchedResult.remove(message.sender.userId)
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("你上次的搜索结果还没用呢, 已经帮你把上次的搜索结果清除掉啦~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
val keyword = args.joinToString(" ")
|
||||
val result = Http.get<Search>(
|
||||
"${configManager.ncmAPI}/search",
|
||||
mapOf("keywords" to keyword),
|
||||
)
|
||||
val tempResults = mutableListOf<SearchedResult>()
|
||||
result.result.songs.asSequence().take(5).forEach {
|
||||
val artists = it.artists.joinToString(", ") { it.name }
|
||||
tempResults.add(SearchedResult(it.id, it.name, artists, Instant.now().epochSecond))
|
||||
}
|
||||
searchedResult[message.sender.userId] = tempResults
|
||||
val stringResult = StringBuilder("搜索结果如下:\n")
|
||||
tempResults.forEachIndexed { index, searchedResult ->
|
||||
stringResult.append("| $index | 《${searchedResult.name}》-- ${searchedResult.artists}\n")
|
||||
}
|
||||
stringResult.append("输入/music p <序号> 播放\n你有30秒的时间进行操作")
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText(stringResult.toString())
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/9/6
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
import java.net.InetAddress
|
||||
|
||||
class NslookupCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/nslookup", "/ns")
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addReply(message.messageId)
|
||||
.addText("域名: ${args.first()}解析后的IP地址为: ")
|
||||
.addText(InetAddress.getByName(args.first()).hostAddress)
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/9/5
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.fancybot.entity.pixiv.Ranking
|
||||
import cn.rtast.fancybot.util.Http
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
|
||||
class PixivCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/pixiv", "/p")
|
||||
|
||||
private val pixivRankingURL = "https://proxy.rtast.cn/https/www.pixiv.net/ranking.php?format=json&mode=daily&p=1"
|
||||
private val imageProxyURL = "https://pixiv.nl"
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
if (args.isEmpty()) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("发送/pixiv <id> | rank 来进行操作哦~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
return
|
||||
}
|
||||
val keyword = args.first()
|
||||
when (keyword) {
|
||||
"rank", "排名", "r" -> {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("今日Pixiv Ranking~")
|
||||
.addNewLine()
|
||||
|
||||
val result = Http.get<Ranking>(pixivRankingURL)
|
||||
result.contents.asSequence().take(5).forEach {
|
||||
msg.addText(it.title)
|
||||
.addImage(it.getOriginUrl())
|
||||
.addNewLine()
|
||||
}
|
||||
listener.sendGroupMessage(message.groupId, msg.build())
|
||||
return
|
||||
}
|
||||
|
||||
else -> {
|
||||
try {
|
||||
val id = keyword.toLong()
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("来咯~ 你要的图片~~~")
|
||||
.addImage("$imageProxyURL/$id.png")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
} catch (_: Exception) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("输入错误~检查一下有没有输错吧~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/8/30
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
|
||||
class QRCodeCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/qrcode", "/qr", "/二维码")
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
val content = args.joinToString(" ")
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addImage("https://api.rtast.cn/api/generate_qr?data=$content")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright © 2024 RTAkland
|
||||
* Author: RTAkland
|
||||
* Date: 2024/9/4
|
||||
*/
|
||||
|
||||
|
||||
package cn.rtast.fancybot.commands.lookup
|
||||
|
||||
import cn.rtast.fancybot.configManager
|
||||
import cn.rtast.fancybot.entity.weather.Geo
|
||||
import cn.rtast.fancybot.entity.weather.Weather
|
||||
import cn.rtast.fancybot.util.Http
|
||||
import cn.rtast.rob.entity.GroupMessage
|
||||
import cn.rtast.rob.util.BaseCommand
|
||||
import cn.rtast.rob.util.ob.MessageChain
|
||||
import cn.rtast.rob.util.ob.OBMessage
|
||||
|
||||
class WeatherCommand : BaseCommand() {
|
||||
override val commandNames = listOf("/weather", "/天气")
|
||||
|
||||
override suspend fun executeGroup(listener: OBMessage, message: GroupMessage, args: List<String>) {
|
||||
if (args.isEmpty()) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("发送/weather <地区名>即可查看实时天气哦~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
return
|
||||
}
|
||||
try {
|
||||
val locationName = args.first()
|
||||
val lookupLocation = Http.get<Geo>(
|
||||
"https://geoapi.qweather.com/v2/city/lookup",
|
||||
mapOf("location" to locationName, "key" to configManager.qweatherKey)
|
||||
).location.first()
|
||||
val weather = Http.get<Weather>(
|
||||
"https://devapi.qweather.com/v7/weather/now",
|
||||
mapOf("location" to lookupLocation.id, "key" to configManager.qweatherKey)
|
||||
)
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addNewLine()
|
||||
.addText("地区: ${lookupLocation.country}")
|
||||
.addText("-${lookupLocation.adm1}")
|
||||
.addText("-${lookupLocation.adm2}")
|
||||
.addText("-${lookupLocation.name}")
|
||||
.addNewLine()
|
||||
.addText("温度: ${weather.now.temp} ℃ | ${weather.now.text}/${weather.now.windDir}")
|
||||
.addNewLine()
|
||||
.addText("数据来源: ${weather.refer.sources.joinToString(",")}")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
} catch (_: NullPointerException) {
|
||||
val msg = MessageChain.Builder()
|
||||
.addAt(message.sender.userId)
|
||||
.addText("没有查询到该城市的天气信息哦~")
|
||||
.build()
|
||||
listener.sendGroupMessage(message.groupId, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user