Skip to content
This repository was archived by the owner on May 19, 2024. It is now read-only.

Commit 01735ac

Browse files
committed
Add support for attachments
1 parent 7909b83 commit 01735ac

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ repositories {
1414
dependencies {
1515
implementation(libs.jda) { exclude("opus-java") }
1616
implementation(libs.mongo)
17+
implementation(libs.webhooks)
1718
}
1819

1920
kotlin.jvmToolchain(17)

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ jda = "5.0.0-beta.2"
33
kotlin = "1.7.22"
44
mongo = "4.8.0"
55
shadow = "7.1.2"
6+
webhooks = "0.8.2"
67

78
[libraries]
89
jda = { module = "net.dv8tion:JDA", version.ref = "jda" }
910
mongo = { module = "org.litote.kmongo:kmongo", version.ref = "mongo"}
11+
webhooks = { module = "club.minnced:discord-webhooks", version.ref = "webhooks" }
1012

1113
[plugins]
1214
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }

src/main/kotlin/io/github/petercrawley/aggregator/Aggregator.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.petercrawley.aggregator
22

3+
import club.minnced.discord.webhook.external.JDAWebhookClient
4+
import club.minnced.discord.webhook.send.WebhookMessageBuilder
35
import com.mongodb.ConnectionString
46
import com.mongodb.MongoClientSettings
57
import io.github.petercrawley.aggregator.commands.HelpCommand
@@ -13,10 +15,10 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent
1315
import net.dv8tion.jda.api.hooks.ListenerAdapter
1416
import net.dv8tion.jda.api.interactions.commands.build.SlashCommandData
1517
import net.dv8tion.jda.api.requests.GatewayIntent
16-
import org.litote.kmongo.*
1718
import org.litote.kmongo.KMongo.createClient
18-
import java.net.HttpURLConnection
19-
import java.net.URL
19+
import org.litote.kmongo.contains
20+
import org.litote.kmongo.ensureIndex
21+
import org.litote.kmongo.getCollection
2022
import kotlin.system.exitProcess
2123

2224
object Aggregator : ListenerAdapter() {
@@ -96,20 +98,18 @@ object Aggregator : ListenerAdapter() {
9698

9799
val webhooks = targetChannel.retrieveWebhooks().complete()
98100
val webhook = webhooks.find { it.ownerAsUser?.idLong == jda.selfUser.idLong } ?: targetChannel.createWebhook("Aggregator Target").complete()
99-
100-
val connection = URL(webhook.url).openConnection() as HttpURLConnection
101-
connection.requestMethod = "POST"
102-
connection.setRequestProperty("Content-Type", "application/json")
103-
connection.doOutput = true
104-
105-
val stream = connection.outputStream
106-
stream.write("{\"username\":\"${event.author.name}\",\"avatar_url\":\"${event.author.avatarUrl}\",\"content\":\"${event.message.contentRaw}\"}".toByteArray())
107-
stream.flush()
108-
stream.close()
109-
110-
connection.responseCode
111-
112-
connection.disconnect()
101+
val webhookClient = JDAWebhookClient.from(webhook)
102+
103+
val message = WebhookMessageBuilder()
104+
.setUsername(event.author.name)
105+
.setAvatarUrl(event.author.avatarUrl)
106+
.setContent(event.message.contentRaw)
107+
.apply {
108+
event.message.attachments.forEach { addFile(it.fileName, it.proxy.download().join()) }
109+
}
110+
.build()
111+
112+
webhookClient.send(message)
113113
}
114114
}
115115

0 commit comments

Comments
 (0)