Added support for discord:// flags=<int> (#1409)

pull/1410/head
Chris Caron 2025-09-06 16:04:26 -04:00 committed by GitHub
parent dca2f7aad8
commit 548e99ac72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 60 additions and 0 deletions

View File

@ -183,6 +183,11 @@ class NotifyDiscord(NotifyBase):
"type": "bool",
"default": True,
},
"flags": {
"name": _("Discord Flags"),
"type": "int",
"min": 0,
},
"image": {
"name": _("Include Image"),
"type": "bool",
@ -205,6 +210,7 @@ class NotifyDiscord(NotifyBase):
avatar_url=None,
href=None,
thread=None,
flags=None,
**kwargs,
):
"""Initialize Discord Object."""
@ -258,6 +264,21 @@ class NotifyDiscord(NotifyBase):
# A URL to have the title link to
self.href = href
# A URL to have the title link to
if flags:
try:
self.flags = int(flags)
if self.flags < NotifyDiscord.template_args["flags"]["min"]:
raise ValueError()
except (TypeError, ValueError):
msg = "An invalid Discord flags setting " \
"({}) was specified.".format(flags)
self.logger.warning(msg)
raise TypeError(msg) from None
else:
self.flags = None
# For Tracking Purposes
self.ratelimit_reset = datetime.now(timezone.utc).replace(tzinfo=None)
@ -284,6 +305,10 @@ class NotifyDiscord(NotifyBase):
"wait": self.tts is False,
}
if self.flags:
# Set our flag if defined:
payload["flags"] = self.flags
# Acquire image_url
image_url = self.image_url(notify_type)
@ -626,6 +651,9 @@ class NotifyDiscord(NotifyBase):
if self.avatar_url:
params["avatar_url"] = self.avatar_url
if self.flags:
params["flags"] = str(self.flags)
if self.href:
params["href"] = self.href
@ -718,6 +746,10 @@ class NotifyDiscord(NotifyBase):
# Alias to User
results["user"] = NotifyDiscord.unquote(results["qsd"]["botname"])
if "flags" in results["qsd"]:
# Alias to User
results["flags"] = NotifyDiscord.unquote(results["qsd"]["flags"])
# Extract avatar url if it was specified
if "avatar_url" in results["qsd"]:
results["avatar_url"] = NotifyDiscord.unquote(

View File

@ -165,6 +165,34 @@ apprise_url_tests = (
"requests_response_code": requests.codes.no_content,
},
),
(
"discord://{}/{}?flags=1".format(
"i" * 24, "t" * 64
),
{
"instance": NotifyDiscord,
"requests_response_code": requests.codes.no_content,
},
),
(
"discord://{}/{}?flags=-1".format(
"i" * 24, "t" * 64
),
{
# invalid flags specified (variation 1)
"instance": TypeError,
},
),
(
"discord://{}/{}?flags=invalid".format(
"i" * 24, "t" * 64
),
{
# invalid flags specified (variation 2)
"instance": TypeError,
},
),
# different format support
(
"discord://{}/{}?format=markdown".format("i" * 24, "t" * 64),