-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: remove service name/type from discord notifier #5181
base: master
Are you sure you want to change the base?
Changes from all commits
0d328e7
c28710c
af230ba
8b82520
ecac291
cd69146
64f5284
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,6 +1,7 @@ | ||||||
const NotificationProvider = require("./notification-provider"); | ||||||
const axios = require("axios"); | ||||||
const { DOWN, UP } = require("../../src/util"); | ||||||
const { Settings } = require("../settings"); | ||||||
const { DOWN, UP, getMonitorRelativeURL } = require("../../src/util"); | ||||||
|
||||||
class Discord extends NotificationProvider { | ||||||
name = "discord"; | ||||||
|
@@ -19,8 +20,13 @@ class Discord extends NotificationProvider { | |||||
} | ||||||
|
||||||
// If heartbeatJSON is null, assume we're testing. | ||||||
|
||||||
const baseURL = await Settings.get("primaryBaseURL"); | ||||||
const address = this.extractAddress(monitorJSON); | ||||||
const hasAddress = address !== "" && address !== monitorJSON.hostname; | ||||||
|
||||||
if (heartbeatJSON == null) { | ||||||
let discordtestdata = { | ||||||
const discordtestdata = { | ||||||
username: discordDisplayName, | ||||||
content: msg, | ||||||
}; | ||||||
|
@@ -33,84 +39,89 @@ class Discord extends NotificationProvider { | |||||
return okMsg; | ||||||
} | ||||||
|
||||||
const embedFields = [ | ||||||
{ | ||||||
name: "Service Name", | ||||||
value: monitorJSON.name, | ||||||
}, | ||||||
...(hasAddress ? [{ | ||||||
name: "Service URL", | ||||||
value: address | ||||||
}] : []), | ||||||
{ | ||||||
name: `Time (${heartbeatJSON.timezone})`, | ||||||
value: heartbeatJSON.localDateTime, | ||||||
}, | ||||||
{ | ||||||
name: "Error", | ||||||
value: msg, | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
}, | ||||||
]; | ||||||
|
||||||
const components = [ | ||||||
{ | ||||||
type: 1, // Action Row | ||||||
components: [ | ||||||
baseURL && { | ||||||
type: 2, // Button | ||||||
style: 5, // Link Button, | ||||||
label: "Visit Uptime Kuma", | ||||||
url: baseURL + getMonitorRelativeURL(monitorJSON.id) | ||||||
}, | ||||||
hasAddress && { | ||||||
type: 2, // Button | ||||||
style: 5, // Link Button, | ||||||
label: "Visit Service URL", | ||||||
url: address | ||||||
} | ||||||
].filter(Boolean) // remove invalid data | ||||||
} | ||||||
]; | ||||||
|
||||||
// If heartbeatJSON is not null, we go into the normal alerting loop. | ||||||
if (heartbeatJSON["status"] === DOWN) { | ||||||
let discorddowndata = { | ||||||
if (heartbeatJSON.status === DOWN) { | ||||||
const discorddowndata = { | ||||||
username: discordDisplayName, | ||||||
content: notification.discordPrefixMessage || "", | ||||||
embeds: [{ | ||||||
title: "❌ Your service " + monitorJSON["name"] + " went down. ❌", | ||||||
title: `❌ Your service ${monitorJSON.name} went down. ❌`, | ||||||
color: 16711680, | ||||||
timestamp: heartbeatJSON["time"], | ||||||
fields: [ | ||||||
{ | ||||||
name: "Service Name", | ||||||
value: monitorJSON["name"], | ||||||
}, | ||||||
{ | ||||||
name: monitorJSON["type"] === "push" ? "Service Type" : "Service URL", | ||||||
value: this.extractAddress(monitorJSON), | ||||||
}, | ||||||
{ | ||||||
name: `Time (${heartbeatJSON["timezone"]})`, | ||||||
value: heartbeatJSON["localDateTime"], | ||||||
}, | ||||||
{ | ||||||
name: "Error", | ||||||
value: heartbeatJSON["msg"] == null ? "N/A" : heartbeatJSON["msg"], | ||||||
}, | ||||||
], | ||||||
timestamp: heartbeatJSON.time, | ||||||
fields: embedFields, | ||||||
}], | ||||||
components: components, | ||||||
}; | ||||||
|
||||||
if (notification.discordChannelType === "createNewForumPost") { | ||||||
discorddowndata.thread_name = notification.postName; | ||||||
} | ||||||
if (notification.discordPrefixMessage) { | ||||||
discorddowndata.content = notification.discordPrefixMessage; | ||||||
} | ||||||
|
||||||
await axios.post(webhookUrl.toString(), discorddowndata); | ||||||
return okMsg; | ||||||
} | ||||||
|
||||||
} else if (heartbeatJSON["status"] === UP) { | ||||||
let discordupdata = { | ||||||
if (heartbeatJSON.status === UP) { | ||||||
const discordupdata = { | ||||||
username: discordDisplayName, | ||||||
content: notification.discordPrefixMessage || "", | ||||||
embeds: [{ | ||||||
title: "✅ Your service " + monitorJSON["name"] + " is up! ✅", | ||||||
title: `✅ Your service ${monitorJSON.name} is up! ✅`, | ||||||
color: 65280, | ||||||
timestamp: heartbeatJSON["time"], | ||||||
fields: [ | ||||||
{ | ||||||
name: "Service Name", | ||||||
value: monitorJSON["name"], | ||||||
}, | ||||||
{ | ||||||
name: monitorJSON["type"] === "push" ? "Service Type" : "Service URL", | ||||||
value: this.extractAddress(monitorJSON), | ||||||
}, | ||||||
{ | ||||||
name: `Time (${heartbeatJSON["timezone"]})`, | ||||||
value: heartbeatJSON["localDateTime"], | ||||||
}, | ||||||
{ | ||||||
name: "Ping", | ||||||
value: heartbeatJSON["ping"] == null ? "N/A" : heartbeatJSON["ping"] + " ms", | ||||||
}, | ||||||
], | ||||||
timestamp: heartbeatJSON.time, | ||||||
fields: embedFields, | ||||||
}], | ||||||
components: components, | ||||||
}; | ||||||
|
||||||
if (notification.discordChannelType === "createNewForumPost") { | ||||||
discordupdata.thread_name = notification.postName; | ||||||
} | ||||||
|
||||||
if (notification.discordPrefixMessage) { | ||||||
discordupdata.content = notification.discordPrefixMessage; | ||||||
} | ||||||
|
||||||
await axios.post(webhookUrl.toString(), discordupdata); | ||||||
return okMsg; | ||||||
} | ||||||
} catch (error) { | ||||||
console.log(error); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if it is not already done so, it should be logged for all and using our
Suggested change
|
||||||
this.throwGeneralAxiosError(error); | ||||||
} | ||||||
} | ||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -4,6 +4,12 @@ | |||||||||||||||||||||
<input id="discord-webhook-url" v-model="$parent.notification.discordWebhookUrl" type="text" class="form-control" required autocomplete="false"> | ||||||||||||||||||||||
<div class="form-text"> | ||||||||||||||||||||||
{{ $t("wayToGetDiscordURL") }} | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lets add a line break here, to prevent those lines being mushed together (think this adresses
Suggested change
|
||||||||||||||||||||||
<i18n-t keypath="wayToGetDiscordURLEnhanced"> | ||||||||||||||||||||||
<a | ||||||||||||||||||||||
href="https://discord.com/developers/docs/resources/webhook#create-webhook" | ||||||||||||||||||||||
target="_blank" | ||||||||||||||||||||||
>{{ $t("withADiscordBot") }}</a> | ||||||||||||||||||||||
Comment on lines
+8
to
+11
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this might be simpler for our translators
Suggested change
|
||||||||||||||||||||||
</i18n-t> | ||||||||||||||||||||||
</div> | ||||||||||||||||||||||
</div> | ||||||||||||||||||||||
|
||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -541,6 +541,8 @@ | |||||||||
"smtpBCC": "BCC", | ||||||||||
"Discord Webhook URL": "Discord Webhook URL", | ||||||||||
"wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> View Webhooks -> New Webhook", | ||||||||||
"wayToGetDiscordURLEnhanced": "Using the Discord API, you may also create the webhook {0} for button support.", | ||||||||||
"withADiscordBot": "with a bot", | ||||||||||
Comment on lines
+544
to
+545
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This word order reads a bit nicer in my mind. What do you think?
Suggested change
|
||||||||||
"Bot Display Name": "Bot Display Name", | ||||||||||
"Prefix Custom Message": "Prefix Custom Message", | ||||||||||
"Hello @everyone is...": "Hello {'@'}everyone is…", | ||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why
!= monitorJSON.hostname
?As far as I can remeber, none of the other monitors do that => lets also not do this, unless there is a reason for this.
If there is no particular reason, please inline
hasAddress
.If there is, please add a comment why.