mirror of
https://gitlab.com/pancakes1234/wdiscordbotserver.git
synced 2025-06-16 07:14:21 -06:00
fix: Improve user status and device detection in UserInfoCog
This commit is contained in:
parent
f11e519555
commit
c1e23c9eeb
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user