From 344c97b34170a5bb9bcf381a80e0d905ef628271 Mon Sep 17 00:00:00 2001 From: Skitter Bot Date: Sun, 1 Mar 2026 05:10:48 -0600 Subject: [PATCH] Fix #3716: Guard Discord member nick access and fall back to author name Signed-off-by: Skitter Bot --- evennia/server/portal/discord.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/evennia/server/portal/discord.py b/evennia/server/portal/discord.py index 0e03ac6481..12f0cbb076 100644 --- a/evennia/server/portal/discord.py +++ b/evennia/server/portal/discord.py @@ -534,10 +534,17 @@ class DiscordClient(WebSocketClientProtocol, _BASE_SESSION_CLASS): if "guild_id" in data: # message received to a Discord channel keywords["type"] = "channel" - author = data["member"]["nick"] or data["author"]["username"] - author_id = data["author"]["id"] + member = data.get("member", {}) or {} + author_info = data.get("author", {}) or {} + # Prefer guild nickname; fall back to global_name, then username + author = ( + member.get("nick") + or author_info.get("global_name") + or author_info.get("username") + ) + author_id = author_info.get("id") or data["author"]["id"] keywords["sender"] = (author_id, author) - keywords["guild_id"] = data["guild_id"] + keywords["guild_id"] = data.get("guild_id") else: # message sent directly to the bot account via DM