我正在尝试执行一个成员信息命令,以显示该成员的当前活动/状态,并在其中显示其播放/收听/流媒体状态,以及是否显示其自定义状态。
我向检测到的播放,监听和流媒体状态添加了if
语句,并检测了它们正在播放/收听/流媒体的状态,并在末尾添加了else
语句以检测自定义状态,因此,如果漫游器找到了状态,但没有播放,收听或流式传输,则它是自定义状态。但是,当用户玩Rich Presence游戏时,该机器人会将其视为自定义状态,并且由于某种原因,该播放语句无法捕获该游戏。
我的问题是:您如何检测Rich Presence游戏成员的状态,它们与普通游戏相同,还是有另一种发现它们的方式,您又如何检测成员的自定义状态,因为我无法找不到答案。
我的代码:
for activity in member.activities:
if isinstance(activity, Game):
name = activity.name
Type = "Playing"
Activity = f"{name}"
elif isinstance(activity, Streaming):
name2 = activity.name
name3 = activity.platform
Type = "Streaming"
Activity = f"{name2} on {name3}"
elif isinstance(activity, Spotify):
name4 = activity.title
name5 = activity.artists
Type = "Listening to Spotify"
Activity = f"**Song Name**:{name4}\n**Song Artists:**{name5}"
else:
Custom = member.activity
embed.add_field(name="Activity Type", value=f"{Type}", inline=True)
embed.add_field(name="Activity Name", value=f"{Activity}", inline=True)
embed.add_field(name="Custom Status", value=f"{Custom}", inline=True)
答案 0 :(得分:2)
尝试使用
for activity in member.activities:
print(type(activity), activity)
要查看每个活动的实例类型和活动,您将能够看到实际匹配的内容:
答案 1 :(得分:2)
在derw的帮助下,我能够确定应该使用哪种活动类型。对于自定义状态,要使用的类型是CustomActivity,对于丰富状态游戏,我只使用了else
语句。
代码:
for activity in member.activities:
if isinstance(activity, Game):
name = activity.name
Type = "Playing"
Activity = f"{name}"
elif isinstance(activity, Streaming):
name2 = activity.name
name3 = activity.platform
Type = "Streaming"
Activity = f"{name2} on {name3}"
elif isinstance(activity, Spotify):
name4 = activity.title
name5 = activity.artists
Type = "Listening to Spotify"
Activity = f"**Song Name**:{name4}\n**Song Artists:**{name5}"
elif isinstance(activity, CustomActivity):
name6 = activity.name
Type = "Custom Status"
Custom = f"{name6}"
else:
name7 = activity.name
Type = "Playing"
Activity = f"{name7}"