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
This commit is contained in:
metalgearsloth
2024-01-30 22:14:00 +11:00
committed by GitHub
parent 36fb5a92cb
commit 00c5538c6b

View File

@@ -109,11 +109,13 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None:
print(f"No discord webhook URL found, skipping discord send") print(f"No discord webhook URL found, skipping discord send")
return return
content = io.StringIO()
count: int = 0 count: int = 0
for name, group in itertools.groupby(entries, lambda x: x["author"]): for name, group in itertools.groupby(entries, lambda x: x["author"]):
count = 0
content = io.StringIO()
content.write(f"**{name}** updated:\n") content.write(f"**{name}** updated:\n")
for entry in group: for entry in group:
for change in entry["changes"]: for change in entry["changes"]:
emoji = TYPES_TO_EMOJI.get(change['type'], "") 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") content.write(f"{emoji} [-]({url}) {message}\n")
else: else:
content.write(f"{emoji} - {message}\n") 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() main()