mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-23 14:54:05 +00:00
[discord] thread/forum channel support (#4099)
This commit is contained in:
parent
6bfb1be71a
commit
4e24e96dab
3 changed files with 74 additions and 4 deletions
|
@ -13,6 +13,10 @@ class Discord extends NotificationProvider {
|
|||
|
||||
try {
|
||||
const discordDisplayName = notification.discordUsername || "Uptime Kuma";
|
||||
const webhookUrl = new URL(notification.discordWebhookUrl);
|
||||
if (notification.discordChannelType === "postToThread") {
|
||||
webhookUrl.searchParams.append("thread_id", notification.threadId);
|
||||
}
|
||||
|
||||
// If heartbeatJSON is null, assume we're testing.
|
||||
if (heartbeatJSON == null) {
|
||||
|
@ -20,7 +24,12 @@ class Discord extends NotificationProvider {
|
|||
username: discordDisplayName,
|
||||
content: msg,
|
||||
};
|
||||
await axios.post(notification.discordWebhookUrl, discordtestdata);
|
||||
|
||||
if (notification.discordChannelType === "createNewForumPost") {
|
||||
discordtestdata.thread_name = notification.postName;
|
||||
}
|
||||
|
||||
await axios.post(webhookUrl.toString(), discordtestdata);
|
||||
return okMsg;
|
||||
}
|
||||
|
||||
|
@ -72,12 +81,14 @@ class Discord extends NotificationProvider {
|
|||
],
|
||||
}],
|
||||
};
|
||||
|
||||
if (notification.discordChannelType === "createNewForumPost") {
|
||||
discorddowndata.thread_name = notification.postName;
|
||||
}
|
||||
if (notification.discordPrefixMessage) {
|
||||
discorddowndata.content = notification.discordPrefixMessage;
|
||||
}
|
||||
|
||||
await axios.post(notification.discordWebhookUrl, discorddowndata);
|
||||
await axios.post(webhookUrl.toString(), discorddowndata);
|
||||
return okMsg;
|
||||
|
||||
} else if (heartbeatJSON["status"] === UP) {
|
||||
|
@ -108,11 +119,15 @@ class Discord extends NotificationProvider {
|
|||
}],
|
||||
};
|
||||
|
||||
if (notification.discordChannelType === "createNewForumPost") {
|
||||
discordupdata.thread_name = notification.postName;
|
||||
}
|
||||
|
||||
if (notification.discordPrefixMessage) {
|
||||
discordupdata.content = notification.discordPrefixMessage;
|
||||
}
|
||||
|
||||
await axios.post(notification.discordWebhookUrl, discordupdata);
|
||||
await axios.post(webhookUrl.toString(), discordupdata);
|
||||
return okMsg;
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
|
@ -16,4 +16,50 @@
|
|||
<label for="discord-prefix-message" class="form-label">{{ $t("Prefix Custom Message") }}</label>
|
||||
<input id="discord-prefix-message" v-model="$parent.notification.discordPrefixMessage" type="text" class="form-control" autocomplete="false" :placeholder="$t('Hello @everyone is...')">
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="discord-message-type" class="form-label">{{ $t("Select message type") }}</label>
|
||||
<select id="discord-message-type" v-model="$parent.notification.discordChannelType" class="form-select">
|
||||
<option value="channel">{{ $t("Send to channel") }}</option>
|
||||
<option value="createNewForumPost">{{ $t("Create new forum post") }}</option>
|
||||
<option value="postToThread">{{ $t("postToExistingThread") }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div v-if="$parent.notification.discordChannelType === 'createNewForumPost'">
|
||||
<div class="mb-3">
|
||||
<label for="discord-target" class="form-label">
|
||||
{{ $t("forumPostName") }}
|
||||
</label>
|
||||
<input id="discord-target" v-model="$parent.notification.postName" type="text" class="form-control" autocomplete="false">
|
||||
<div class="form-text">
|
||||
{{ $t("whatHappensAtForumPost", { option: $t("postToExistingThread") }) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="$parent.notification.discordChannelType === 'postToThread'">
|
||||
<div class="mb-3">
|
||||
<label for="discord-target" class="form-label">
|
||||
{{ $t("threadForumPostID") }}
|
||||
</label>
|
||||
<input id="discord-target" v-model="$parent.notification.threadId" type="text" class="form-control" autocomplete="false" :placeholder="$t('e.g. {discordThreadID}', { discordThreadID: 1177566663751782411 })">
|
||||
<div class="form-text">
|
||||
<i18n-t keypath="wayToGetDiscordThreadId">
|
||||
<a
|
||||
href="https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-"
|
||||
target="_blank"
|
||||
>{{ $t("here") }}</a>
|
||||
</i18n-t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
mounted() {
|
||||
if (!this.$parent.notification.discordChannelType) {
|
||||
this.$parent.notification.discordChannelType = "channel";
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -527,6 +527,15 @@
|
|||
"Bot Display Name": "Bot Display Name",
|
||||
"Prefix Custom Message": "Prefix Custom Message",
|
||||
"Hello @everyone is...": "Hello {'@'}everyone is…",
|
||||
"Select message type": "Select message type",
|
||||
"Send to channel": "Send to channel",
|
||||
"Create new forum post": "Create new forum post",
|
||||
"postToExistingThread": "Post to existing thread / forum post",
|
||||
"forumPostName": "Forum post name",
|
||||
"threadForumPostID": "Thread / Forum post ID",
|
||||
"e.g. {discordThreadID}": "e.g. {discordThreadID}",
|
||||
"whatHappensAtForumPost": "Create a new forum post. This does NOT post messages in existing post. To post in existing post use \"{option}\"",
|
||||
"wayToGetDiscordThreadId": "Getting a thread / forum post id is similar to getting a channel id. Read more about how to get ids {0}",
|
||||
"wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
|
||||
"wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.",
|
||||
"needSignalAPI": "You need to have a signal client with REST API.",
|
||||
|
|
Loading…
Reference in a new issue