如何检测会员的自定义状态和丰富状态游戏状态

时间:2020-09-17 13:17:58

标签: python python-3.x discord discord.py discord.py-rewrite

我正在尝试执行一个成员信息命令,以显示该成员的当前活动/状态,并在其中显示其播放/收听/流媒体状态,以及是否显示其自定义状态。

我向检测到的播放,监听和流媒体状态添加了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)

2 个答案:

答案 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}"