@@ -108,25 +108,26 @@ async def sync_github_org(self) -> None:
108108 )
109109 return
110110
111- await report_thread .send (":mag: **GitHub membership sync started**" )
112111
113112 common_info = await self ._fetch_common_info ()
114113 org_added , org_removed = await self ._sync_github_members (report_thread , common_info )
115114 team_added , team_removed = await self ._sync_github_teams (report_thread , common_info )
116115
117- logger .info (
118- "GitHub: Sync complete. "
119- f"Org added={ len (org_added )} , org removed={ len (org_removed )} , "
120- f"team added={ len (team_added )} , team removed={ len (team_removed )} ."
121- )
122-
123- await self ._report_sync_result (
124- report_thread ,
125- org_added ,
126- org_removed ,
127- team_added ,
128- team_removed ,
129- )
116+ if org_added or org_removed or team_added or team_removed :
117+ logger .info (
118+ "GitHub: Sync complete. "
119+ f"Org added={ len (org_added )} , org removed={ len (org_removed )} , "
120+ f"team added={ len (team_added )} , team removed={ len (team_removed )} ."
121+ )
122+ await self ._report_sync_result (
123+ report_thread ,
124+ org_added ,
125+ org_removed ,
126+ team_added ,
127+ team_removed ,
128+ )
129+ else :
130+ logger .info ("GitHub: Sync complete. No changes needed." )
130131 except Exception as e : # noqa: BLE001
131132 logger .exception (f"GitHub: Error during sync: { e } " , exc_info = True )
132133 report_thread = await self ._get_debug_thread ()
@@ -142,6 +143,10 @@ async def _report_sync_result(
142143 team_removed : list [str ],
143144 ) -> None :
144145 """Report applied membership changes after a sync run."""
146+ # Skip reporting if no changes were made
147+ if not org_added and not org_removed and not team_added and not team_removed :
148+ return
149+
145150 org_added_text = ", " .join (f"`{ username } `" for username in org_added ) or "none"
146151 org_removed_text = ", " .join (f"`{ username } `" for username in org_removed ) or "none"
147152 team_added_text = ", " .join (f"`{ change } `" for change in team_added ) or "none"
@@ -353,16 +358,15 @@ async def _report_org_sync_plan(
353358 plan : OrgSyncPlan ,
354359 ) -> None :
355360 """Send planned organisation changes to the configured report thread."""
361+ # Skip reporting if no changes planned
362+ if not plan .diff .to_add and not plan .diff .to_remove :
363+ return
364+
356365 add_lines = [f":green_circle: add to org: `{ username } `" for username in plan .diff .to_add ]
357366 remove_lines = [
358367 f":red_circle: remove from org: `{ username } `" for username in plan .diff .to_remove
359368 ]
360369
361- if not add_lines :
362- add_lines = [":white_circle: no org additions needed" ]
363- if not remove_lines :
364- remove_lines = [":white_circle: no org removals needed" ]
365-
366370 await self ._send_report_lines (
367371 report_thread ,
368372 [
@@ -490,6 +494,10 @@ async def _report_team_sync_plan(
490494 plan : TeamSyncPlan ,
491495 ) -> None :
492496 """Send planned team changes to the configured report thread."""
497+ # Skip reporting if no changes planned
498+ if not plan .diff .to_add and not plan .diff .to_remove :
499+ return
500+
493501 add_lines = [
494502 f":green_circle: add to `{ plan .team_slug } `: `{ username } `"
495503 for username in plan .diff .to_add
@@ -499,18 +507,6 @@ async def _report_team_sync_plan(
499507 for username in plan .diff .to_remove
500508 ]
501509
502- if not add_lines and not remove_lines :
503- await self ._send_report_lines (
504- report_thread ,
505- [f":white_circle: **Team `{ plan .team_slug } `**: no membership changes needed" ],
506- )
507- return
508-
509- if not add_lines :
510- add_lines = [f":white_circle: no additions needed in `{ plan .team_slug } `" ]
511- if not remove_lines :
512- remove_lines = [f":white_circle: no removals needed in `{ plan .team_slug } `" ]
513-
514510 await self ._send_report_lines (
515511 report_thread ,
516512 [
0 commit comments