From 5953468d58a1bb16678dbf63d58737df39f05a6c Mon Sep 17 00:00:00 2001 From: Antoine James Tournepiche Date: Sun, 27 Sep 2026 11:28:31 +0200 Subject: [PATCH] fix(intents): stop requesting privileged intents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Discord revoked the privileged intents on the prod app: the gateway now closes with 4014 (PrivilegedIntentsRequired) and the bot can't start. `message_content` (which was granted on the developer portal) was never actually requested — Intents.default() excludes it. The JD4H listener only reads message metadata (author, channel, timestamp), and there are no prefix commands. `members` only warmed the member cache for three get_member() calls in rngdle.py, which all already fell back to get_or_fetch_user(). They now call it directly, like the rest of the cog, and get a User instead of a Member — the leaderboards render .name and .mention, both of which exist on User. --- commands/cogs/rngdle.py | 12 ++++-------- main.py | 5 +---- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/commands/cogs/rngdle.py b/commands/cogs/rngdle.py index eb7c2e3..793ef9f 100644 --- a/commands/cogs/rngdle.py +++ b/commands/cogs/rngdle.py @@ -21,7 +21,7 @@ from utils.rngdle import get_score_tier from utils.tasks.users_cache_update import get_or_fetch_user -users_data_t = list[dict[str, discord.User | discord.Member | None | str | int]] +users_data_t = list[dict[str, discord.User | None | str | int]] class LeaderboardPaginator(discord.ui.View): @@ -324,9 +324,7 @@ async def profile( db_user = next((u for u in registered_users if int(u.user_id) == target_id), None) if db_user: rngdle_username = str(db_user.rng_username) - member = ctx.guild.get_member(target_id) or await get_or_fetch_user( - self.bot, target_id - ) + member = await get_or_fetch_user(self.bot, target_id) else: rngdle_username = user db_user = next( @@ -335,9 +333,7 @@ async def profile( ) if db_user: target_id = int(db_user.user_id) - member = ctx.guild.get_member(target_id) or await get_or_fetch_user( - self.bot, target_id - ) + member = await get_or_fetch_user(self.bot, target_id) if not rngdle_username or not target_id or member is None: await ctx.respond( @@ -593,7 +589,7 @@ async def leaderboard_all( if user_id == caller_id: caller_index = i - member = ctx.guild.get_member(user_id) or await get_or_fetch_user(self.bot, user_id) + member = await get_or_fetch_user(self.bot, user_id) rngdle_username = str(reg_map.get(user_id, "Unknown")) users_data.append( diff --git a/main.py b/main.py index 68f7f07..069df7b 100644 --- a/main.py +++ b/main.py @@ -11,11 +11,8 @@ setup_logging() -intents = discord.Intents.default() -intents.members = True - bot = discord.AutoShardedBot( - intents=intents, + intents=discord.Intents.default(), help_command=None, # Disable the default help command debug_guilds=[DEBUG_GUILD_ID] if DEBUG_GUILD_ID else None, )