mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-27 16:54:04 +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 {
|
try {
|
||||||
const discordDisplayName = notification.discordUsername || "Uptime Kuma";
|
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 is null, assume we're testing.
|
||||||
if (heartbeatJSON == null) {
|
if (heartbeatJSON == null) {
|
||||||
|
@ -20,7 +24,12 @@ class Discord extends NotificationProvider {
|
||||||
username: discordDisplayName,
|
username: discordDisplayName,
|
||||||
content: msg,
|
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;
|
return okMsg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,12 +81,14 @@ class Discord extends NotificationProvider {
|
||||||
],
|
],
|
||||||
}],
|
}],
|
||||||
};
|
};
|
||||||
|
if (notification.discordChannelType === "createNewForumPost") {
|
||||||
|
discorddowndata.thread_name = notification.postName;
|
||||||
|
}
|
||||||
if (notification.discordPrefixMessage) {
|
if (notification.discordPrefixMessage) {
|
||||||
discorddowndata.content = notification.discordPrefixMessage;
|
discorddowndata.content = notification.discordPrefixMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.post(notification.discordWebhookUrl, discorddowndata);
|
await axios.post(webhookUrl.toString(), discorddowndata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
|
|
||||||
} else if (heartbeatJSON["status"] === UP) {
|
} 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) {
|
if (notification.discordPrefixMessage) {
|
||||||
discordupdata.content = notification.discordPrefixMessage;
|
discordupdata.content = notification.discordPrefixMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.post(notification.discordWebhookUrl, discordupdata);
|
await axios.post(webhookUrl.toString(), discordupdata);
|
||||||
return okMsg;
|
return okMsg;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
@ -16,4 +16,50 @@
|
||||||
<label for="discord-prefix-message" class="form-label">{{ $t("Prefix Custom Message") }}</label>
|
<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...')">
|
<input id="discord-prefix-message" v-model="$parent.notification.discordPrefixMessage" type="text" class="form-control" autocomplete="false" :placeholder="$t('Hello @everyone is...')">
|
||||||
</div>
|
</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>
|
</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",
|
"Bot Display Name": "Bot Display Name",
|
||||||
"Prefix Custom Message": "Prefix Custom Message",
|
"Prefix Custom Message": "Prefix Custom Message",
|
||||||
"Hello @everyone is...": "Hello {'@'}everyone is…",
|
"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}.",
|
"wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.",
|
||||||
"wayToGetZohoCliqURL": "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.",
|
"needSignalAPI": "You need to have a signal client with REST API.",
|
||||||
|
|
Loading…
Reference in a new issue