Browse Source

Rename /role-admin-refresh to /role-admin-set-refresh-interval
and add new /role-admin-refresh-now command.

Lari Natri 2 months ago
parent
commit
1f5fb9b331
2 changed files with 20 additions and 4 deletions
  1. 3 1
      README.md
  2. 17 3
      src/main.py

+ 3 - 1
README.md

@@ -183,8 +183,10 @@ for Docker Compose.
   Adjust min/max hints for a pickable role.
 - **/role-admin-set-inactivity-days \<days>**
   Set inactivity timeout in days (default: 14).
-- **/role-admin-refresh \<minutes>**
+- **/role-admin-set-refresh-interval \<minutes>**
   Set auto-refresh interval in minutes (default: 5).
+- **/role-admin-refresh-now**
+  Trigger an immediate refresh
 - **/role-admin-list-users**
   List all pickable roles and the users in each (ephemeral to the admin).
 - **/role-admin-list-config**

+ 17 - 3
src/main.py

@@ -646,12 +646,12 @@ async def role_admin_set_inactivity_days(
     await ctx.respond(f"Inactivity timeout set to **{days}** days.", ephemeral=True)
 
 @bot.slash_command(
-    name="role-admin-refresh",
+    name="role-admin-set-refresh-interval",
     description="Set auto-refresh interval (minutes) for panels.",
     default_member_permissions=ADMIN_PERMS,
     **guild_ids_kw()
 )
-async def role_admin_refresh(
+async def role_admin_set_refresh_interval(
     ctx: discord.ApplicationContext,
     minutes: discord.Option(int, "Refresh interval in minutes (>=1)")
 ):
@@ -662,6 +662,19 @@ async def role_admin_refresh(
     with db_connect() as conn:
         set_refresh_minutes(conn, ctx.guild.id, minutes)
     await ctx.respond(f"Panel refresh interval set to **{minutes} minute(s)**.", ephemeral=True)
+    # Force one refresh immediately
+    await refresh_all_public_panels(ctx.guild, force=True)
+    await refresh_all_dm_panels(ctx.guild, force=True)
+
+@bot.slash_command(
+    name="role-admin-refresh-now",
+    description="Trigger an immediate refresh of all panels (does not change interval).",
+    default_member_permissions=ADMIN_PERMS,
+    **guild_ids_kw()
+)
+async def role_admin_refresh_now(ctx: discord.ApplicationContext):
+    assert ctx.guild is not None
+    await ctx.respond("Refreshing panels now…", ephemeral=True)
     await refresh_all_public_panels(ctx.guild, force=True)
     await refresh_all_dm_panels(ctx.guild, force=True)
 
@@ -991,7 +1004,8 @@ async def role_help(ctx: discord.ApplicationContext):
         "/role-admin-remove-pickable <role> — remove a pickable role",
         "/role-admin-set-role-limits <role> [min] [max] — set min/max hints",
         "/role-admin-set-inactivity-days <days> — set inactivity timeout",
-        "/role-admin-refresh <minutes> — set auto-refresh interval",
+        "/role-admin-set-refresh-interval <minutes> — set auto-refresh interval",
+        "/role-admin-refresh-now — trigger an immediate refresh",
         "/role-admin-list-users — list users per pickable role",
         "/role-admin-list-config — show current configuration",
         "/role-admin-add-user-for-role <user> <role> — add user to role",