From 55af38931e4990d5c212cce26684eede52750a39 Mon Sep 17 00:00:00 2001 From: RTAkland Date: Fri, 20 Sep 2024 11:36:27 +0800 Subject: [PATCH] feat: add full url --- .../commands/lookup/WikipediaCommand.kt | 19 +++++++++++++++ .../fancybot/entity/wiki/PageInfoResponse.kt | 23 +++++++++++++++++++ .../fancybot/entity/wiki/WikipediaResponse.kt | 4 ++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/kotlin/cn/rtast/fancybot/entity/wiki/PageInfoResponse.kt diff --git a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WikipediaCommand.kt b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WikipediaCommand.kt index 4fe1df8..16b6ae2 100644 --- a/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WikipediaCommand.kt +++ b/src/main/kotlin/cn/rtast/fancybot/commands/lookup/WikipediaCommand.kt @@ -7,6 +7,7 @@ package cn.rtast.fancybot.commands.lookup +import cn.rtast.fancybot.entity.wiki.PageInfoResponse import cn.rtast.fancybot.entity.wiki.WikipediaResponse import cn.rtast.fancybot.util.Http import cn.rtast.rob.entity.GroupMessage @@ -26,6 +27,12 @@ class WikipediaCommand : BaseCommand() { } override suspend fun executeGroup(listener: OneBotListener, message: GroupMessage, args: List) { + if (args.isEmpty()) { + val msg = MessageChain.Builder() + .addText("发送`/wiki <关键字>`即可查询出最匹配的wiki页面~") + .build() + message.reply(msg) + } val title = args.first() val response = Http.get( wikipediaAPI, @@ -36,10 +43,22 @@ class WikipediaCommand : BaseCommand() { "format" to "json" ) ).query.search.first() + val fullUrl = Http.get( + wikipediaAPI, + mapOf( + "action" to "query", + "prop" to "info", + "pageids" to response.pageId, + "inprop" to "url", + "format" to "json" + ) + ).query.pages.values.first().fullUrl val msg = MessageChain.Builder() .addText("标题: ${response.title} 内容片段如下") .addNewLine() .addText(response.snippet.extractPlainTextFromHtml()) + .addNewLine(2) + .addText(fullUrl) .build() message.reply(msg) } diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/wiki/PageInfoResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/wiki/PageInfoResponse.kt new file mode 100644 index 0000000..1fc7f21 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/wiki/PageInfoResponse.kt @@ -0,0 +1,23 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/9/20 + */ + + +package cn.rtast.fancybot.entity.wiki + +import com.google.gson.annotations.SerializedName + +data class PageInfoResponse( + val query: Query +) { + data class Query( + val pages: Map + ) + + data class PageInfo( + @SerializedName("fullurl") + val fullUrl: String + ) +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/wiki/WikipediaResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/wiki/WikipediaResponse.kt index 598279c..2705cff 100644 --- a/src/main/kotlin/cn/rtast/fancybot/entity/wiki/WikipediaResponse.kt +++ b/src/main/kotlin/cn/rtast/fancybot/entity/wiki/WikipediaResponse.kt @@ -7,6 +7,8 @@ package cn.rtast.fancybot.entity.wiki +import com.google.gson.annotations.SerializedName + data class WikipediaResponse( val query: Query ) { @@ -15,6 +17,8 @@ data class WikipediaResponse( ) data class Search( + @SerializedName("pageid") + val pageId: Long, val title: String, val snippet: String, )