From f8d005766e1ab32f2a8369b58a97961b645d7560 Mon Sep 17 00:00:00 2001 From: robz Date: Thu, 26 Mar 2026 22:48:53 -0500 Subject: [PATCH] Prevent missing discourse groups from crashing the script --- discourseUpdateGroups.py | 3 +++ discourseUtil.py | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/discourseUpdateGroups.py b/discourseUpdateGroups.py index f0be47a..6f7cf8f 100644 --- a/discourseUpdateGroups.py +++ b/discourseUpdateGroups.py @@ -16,6 +16,9 @@ def updateMakers(neonAccounts: dict): # retrieve all members of makers group makers = discourseUtil.getGroupMembers(discourseUtil.GROUP_MAKERS) + if makers is None: + # Failed to fetch group membership, so avoid updating + return #Step 1: find all Neon accounts that are paid up, have a DiscourseID, and aren't in Makers addMakers = set() diff --git a/discourseUtil.py b/discourseUtil.py index f5298f5..041cfef 100644 --- a/discourseUtil.py +++ b/discourseUtil.py @@ -44,7 +44,7 @@ def getGroupMembers(groupName: str): if GROUP_IDS.get(groupName) is None: logging.error(f""""{groupName}" is not a known Discourse group""") - return {} + return None members = {} limit = 50 @@ -62,6 +62,9 @@ def getGroupMembers(groupName: str): print(f"""fetching from {url}""") response = requests.get(url, headers=D_headers) offset += limit + if response.status_code != 200: + logging.error(f"Failed to fetch group {groupName}: HTTP {response.status_code}") + return None logging.debug(pformat(response.json().get("meta"))) total = int(response.json().get("meta")["total"]) for member in response.json().get("members"): @@ -124,6 +127,10 @@ def setGroupMembers(newMembersList: list, groupName: str): logging.error(f""""{groupName}" is not a known Discourse group""") currentMembersDict = getGroupMembers(groupName) + if currentMembersDict is None: + # Failed to fetch group membership, so avoid updating + return + currentMembersList = currentMembersDict.keys() addMembersList = newMembersList - currentMembersList