fix: improve user lookup in marriage commands to work in DMs
Enable marriage commands to work in direct messages and handle cases where partners are not in the same guild by: - Checking if interaction is in guild context - Using bot.fetch_user as fallback when guild.get_member fails - Adding error handling for user fetching operations
This commit is contained in:
parent
1b7e96f2a5
commit
31e7321f74
@ -269,7 +269,15 @@ class MarriageCog(commands.Cog):
|
||||
# Get marriage info
|
||||
marriage_data = self.marriages[user_id]
|
||||
partner_id = marriage_data["partner_id"]
|
||||
partner = interaction.guild.get_member(partner_id)
|
||||
|
||||
# Use fetch_user instead of get_member to work in both guild and DM contexts
|
||||
partner = interaction.guild.get_member(partner_id) if interaction.guild else None
|
||||
if not partner:
|
||||
# Fallback to bot's fetch_user if not found in guild or in DM context
|
||||
try:
|
||||
partner = await self.bot.fetch_user(partner_id)
|
||||
except:
|
||||
pass
|
||||
partner_name = partner.display_name if partner else f"Unknown User ({partner_id})"
|
||||
|
||||
# Calculate days
|
||||
@ -298,7 +306,15 @@ class MarriageCog(commands.Cog):
|
||||
|
||||
# Get partner info
|
||||
partner_id = self.marriages[user_id]["partner_id"]
|
||||
partner = interaction.guild.get_member(partner_id)
|
||||
|
||||
# Use fetch_user instead of get_member to work in both guild and DM contexts
|
||||
partner = interaction.guild.get_member(partner_id) if interaction.guild else None
|
||||
if not partner:
|
||||
# Fallback to bot's fetch_user if not found in guild or in DM context
|
||||
try:
|
||||
partner = await self.bot.fetch_user(partner_id)
|
||||
except:
|
||||
pass
|
||||
partner_name = partner.mention if partner else f"Unknown User ({partner_id})"
|
||||
|
||||
# Process divorce
|
||||
@ -327,8 +343,22 @@ class MarriageCog(commands.Cog):
|
||||
|
||||
# Add top 10 marriages
|
||||
for i, (user1_id, user2_id, days) in enumerate(marriages[:10], 1):
|
||||
user1 = interaction.guild.get_member(user1_id)
|
||||
user2 = interaction.guild.get_member(user2_id)
|
||||
# Use fetch_user instead of get_member to work in both guild and DM contexts
|
||||
user1 = interaction.guild.get_member(user1_id) if interaction.guild else None
|
||||
user2 = interaction.guild.get_member(user2_id) if interaction.guild else None
|
||||
|
||||
# Fallback to bot's fetch_user if not found in guild or in DM context
|
||||
if not user1:
|
||||
try:
|
||||
user1 = await self.bot.fetch_user(user1_id)
|
||||
except:
|
||||
pass
|
||||
|
||||
if not user2:
|
||||
try:
|
||||
user2 = await self.bot.fetch_user(user2_id)
|
||||
except:
|
||||
pass
|
||||
|
||||
user1_name = user1.display_name if user1 else f"Unknown User ({user1_id})"
|
||||
user2_name = user2.display_name if user2 else f"Unknown User ({user2_id})"
|
||||
|
Loading…
x
Reference in New Issue
Block a user