diff --git a/cogs/userinfo.py b/cogs/userinfo.py index 276e158..7d626fa 100644 --- a/cogs/userinfo.py +++ b/cogs/userinfo.py @@ -24,35 +24,45 @@ class UserInfoCog(commands.Cog): banner_url = user_obj.banner.url except Exception: pass - # Devices + # Status if isinstance(member, discord.Member): - status = str(member.status).title() - devices = [] - if hasattr(member, "devices"): - for dev in getattr(member, "devices", []): - devices.append(str(dev).title()) - else: - # Fallback for older discord.py - if member.desktop_status != discord.Status.offline: - devices.append("Desktop") - if member.mobile_status != discord.Status.offline: - devices.append("Mobile") - if member.web_status != discord.Status.offline: - devices.append("Web") - device_str = ", ".join(devices) if devices else "Unknown" + status = str(member.status).capitalize() else: status = "Unknown" - device_str = "Unknown" - # Activities + # Devices (accurate for discord.py 2.3+) + device_map = { + "desktop": "Desktop", + "mobile": "Mobile", + "web": "Web" + } + devices = set() + if hasattr(member, "devices") and member.devices: + for dev in member.devices: + devices.add(device_map.get(str(dev), str(dev).capitalize())) + else: + # Fallback for older discord.py + if hasattr(member, "desktop_status") and member.desktop_status != discord.Status.offline: + devices.add("Desktop") + if hasattr(member, "mobile_status") and member.mobile_status != discord.Status.offline: + devices.add("Mobile") + if hasattr(member, "web_status") and member.web_status != discord.Status.offline: + devices.add("Web") + device_str = ", ".join(devices) if devices else "Offline/Unknown" + # Activities (show all, including custom, game, music, etc.) activities = [] - if hasattr(member, "activities"): + if hasattr(member, "activities") and member.activities: for activity in member.activities: if isinstance(activity, discord.Game): activities.append(f"Playing {activity.name}") elif isinstance(activity, discord.Spotify): activities.append(f"Listening to {activity.title} by {', '.join(activity.artists)}") + elif isinstance(activity, discord.CustomActivity): + if activity.name: + activities.append(f"Custom Status: {activity.name}") elif isinstance(activity, discord.Activity): - activities.append(f"{activity.type.name.title()}: {activity.name}") + # General fallback for other activity types + act_type = getattr(activity.type, 'name', str(activity.type)).title() + activities.append(f"{act_type}: {activity.name}") activity_str = ", ".join(activities) if activities else "None" # Roles if isinstance(member, discord.Member) and interaction.guild: @@ -76,9 +86,10 @@ class UserInfoCog(commands.Cog): embed.add_field(name="Device", value=device_str, inline=True) embed.add_field(name="Activity", value=activity_str, inline=True) embed.add_field(name="Roles", value=roles_str, inline=False) - embed.add_field(name="Account Created", value=member.created_at.strftime('%Y-%m-%d %H:%M:%S'), inline=True) + # Account created + embed.add_field(name="Account Created", value=member.created_at.strftime('%Y-%m-%d %H:%M:%S UTC'), inline=True) if hasattr(member, 'joined_at') and member.joined_at: - embed.add_field(name="Joined Server", value=member.joined_at.strftime('%Y-%m-%d %H:%M:%S'), inline=True) + embed.add_field(name="Joined Server", value=member.joined_at.strftime('%Y-%m-%d %H:%M:%S UTC'), inline=True) embed.set_footer(text=f"Requested by {interaction.user.display_name}", icon_url=interaction.user.display_avatar.url) await interaction.response.send_message(embed=embed)