Split changelog entries for discord (#23832)

* Split changelog entries for discord

Not sure where best to split it, by entry in group or by author.

* Formatting

(cherry picked from commit 00c5538c6b3fdc9586f3376b5acecddc664c0665)
This commit is contained in:
metalgearsloth 2024-01-30 22:14:00 +11:00 committed by Debug
parent 193258784e
commit 452632f582
No known key found for this signature in database
GPG Key ID: 271270A74EF9C350
1 changed files with 23 additions and 20 deletions

View File

@ -109,11 +109,13 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None:
print(f"No discord webhook URL found, skipping discord send")
return
content = io.StringIO()
count: int = 0
for name, group in itertools.groupby(entries, lambda x: x["author"]):
count = 0
content = io.StringIO()
content.write(f"**{name}** updated:\n")
for entry in group:
for change in entry["changes"]:
emoji = TYPES_TO_EMOJI.get(change['type'], "")
@ -124,25 +126,26 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None:
content.write(f"{emoji} [-]({url}) {message}\n")
else:
content.write(f"{emoji} - {message}\n")
body = {
"content": content.getvalue(),
# Do not allow any mentions.
"allowed_mentions": {
"parse": []
},
# SUPPRESS_EMBEDS
"flags": 1 << 2
}
# No entries?
if count == 0:
continue
# Post per group to try to avoid discord character limits
print(f"Posting {count} changelog entries to discord webhook")
response = requests.post(DISCORD_WEBHOOK_URL, json=body)
response.raise_for_status()
if count == 0:
print("Skipping discord push as no changelog entries found")
return
print(f"Posting {count} changelog entries to discord webhook")
body = {
"content": content.getvalue(),
# Do not allow any mentions.
"allowed_mentions": {
"parse": []
},
# SUPPRESS_EMBEDS
"flags": 1 << 2
}
response = requests.post(DISCORD_WEBHOOK_URL, json=body)
response.raise_for_status()
main()