aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Joe Banks <[email protected]>2025-06-15 00:27:23 +0100
committerGravatar Joe Banks <[email protected]>2025-06-15 00:27:23 +0100
commitec3f1b19a661aaa6ba61f927de5cfadb68662b58 (patch)
treeebbb28df3f879ff5372b3b105c4abff14e6528f7
parentUpdate Events to Events Team (diff)
Split M-x sync into multiple messages
-rw-r--r--arthur/exts/directory/ldap.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/arthur/exts/directory/ldap.py b/arthur/exts/directory/ldap.py
index 4b41baf..366a42e 100644
--- a/arthur/exts/directory/ldap.py
+++ b/arthur/exts/directory/ldap.py
@@ -17,6 +17,8 @@ from arthur.log import logger
PASSWORD_RESET_LENGTH = 16
+MAX_MESSAGE_LENGTH = 2000
+
NOTIFICATIONS_ENABLED = True
BOOTSTRAP_CHANNEL_TOPIC = """
@@ -406,23 +408,30 @@ class LDAP(commands.Cog):
LDAPSyncAction.CHANGE: "~",
}
+ messages = [diff_message]
+
for user in diff_sorted:
prefix = prefixes[user.action]
- diff_message += f"{prefix} {self._format_user(user.discord_user, user.ldap_user)}"
- diff_message += f" ({', '.join(user.groups)})\n"
- diff_message += "```\n"
+ messages[-1] += f"{prefix} {self._format_user(user.discord_user, user.ldap_user)}"
+ messages[-1] += f" ({', '.join(user.groups)})\n"
+
+ if len(messages[-1]) > MAX_MESSAGE_LENGTH - 100:
+ messages[-1] += "```"
+ messages.append("```diff\n")
+
+ messages[-1] += "```"
if len(missing_emp) > 0:
- diff_message += (
+ messages[-1] += (
":warning: **Warning: Some LDAP users are missing an employee number. "
"This may lead to duplicated users being created.**\n\n"
)
+ messages[-1] += "Users missing employee numbers:\n"
+ messages[-1] += "\n".join(f"- `{user.uid}`" for user in missing_emp)
- diff_message += "Users missing employee numbers:\n"
- diff_message += "\n".join(f"- `{user.uid}`" for user in missing_emp)
-
- await ctx.reply(diff_message)
+ for message in messages:
+ await ctx.send(message)
async def setup(bot: KingArthur) -> None: