Skip to content

Commit 53dda33

Browse files
committed
Tweak Wikipedia formatting
1 parent e144fa1 commit 53dda33

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

glyph-bot/src/modules/WikipediaModule.kt

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import net.dv8tion.jda.api.events.interaction.command.GenericCommandInteractionE
1010
import net.dv8tion.jda.api.interactions.commands.Command
1111
import net.dv8tion.jda.api.interactions.commands.CommandAutoCompleteInteraction
1212
import net.dv8tion.jda.api.requests.restaction.CommandListUpdateAction
13+
import net.dv8tion.jda.api.utils.MarkdownUtil
1314
import org.jsoup.Jsoup
1415
import org.yttr.glyph.bot.wrappers.Wikipedia
16+
import java.time.Instant
1517

1618
class WikipediaModule(private val wikipedia: Wikipedia = Wikipedia()) : Module {
1719
override fun boot(jda: JDA) {
@@ -43,6 +45,8 @@ class WikipediaModule(private val wikipedia: Wikipedia = Wikipedia()) : Module {
4345
}
4446

4547
private suspend fun summarizeArticle(event: GenericCommandInteractionEvent) {
48+
// event.deferReply().queue()
49+
4650
val result = event.getOption("article")?.asLong?.let { wikipedia.extract(it) }
4751

4852
if (result == null) {
@@ -52,10 +56,11 @@ class WikipediaModule(private val wikipedia: Wikipedia = Wikipedia()) : Module {
5256

5357
val embed = Embed {
5458
title = result.title
55-
description = Jsoup.parse(result.extract).text().let { extract ->
56-
extract.take(MAX_LENGTH) + if (extract.length > MAX_LENGTH) "..." else ""
59+
description = formatDescription(result.extract).let { extract ->
60+
extract.take(MAX_LENGTH).substringBeforeLast(" ", "") + if (extract.length > MAX_LENGTH) "..." else ""
5761
}
5862
url = "https://en.wikipedia.org/wiki/${result.title.replace(" ", "_")}"
63+
timestamp = Instant.now()
5964

6065
footer {
6166
name = "Wikipedia"
@@ -65,6 +70,28 @@ class WikipediaModule(private val wikipedia: Wikipedia = Wikipedia()) : Module {
6570
event.replyEmbeds(embed).queue()
6671
}
6772

73+
private fun formatDescription(extract: String): String {
74+
val soup = Jsoup.parse(extract)
75+
76+
for (link in soup.select("a")) {
77+
link.text(MarkdownUtil.maskedLink(link.text(), link.attr("href")))
78+
}
79+
80+
for (bold in soup.select("b")) {
81+
bold.text(MarkdownUtil.bold(bold.text()))
82+
}
83+
84+
for (italic in soup.select("i")) {
85+
italic.text(MarkdownUtil.italics(italic.text()))
86+
}
87+
88+
for (sup in soup.select("sup")) {
89+
sup.prependText("^")
90+
}
91+
92+
return soup.text()
93+
}
94+
6895
companion object {
6996
private const val MAX_RESULTS = 10
7097
private const val MAX_LENGTH = 512

glyph-bot/src/wrappers/Wikipedia.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Wikipedia {
5959
parameter("format", "json")
6060
parameter("prop", "extracts")
6161
parameter("exintro", true)
62-
parameter("explaintext", true)
62+
// parameter("explaintext", true)
6363
parameter("pageids", pageId)
6464
}.body<SearchResponse>().query.pages[pageId]
6565
}

0 commit comments

Comments
 (0)