【问题标题】:How to use the Spotify class in discord.py?如何在 discord.py 中使用 Spotify 类?
【发布时间】:2019-05-07 18:10:15
【问题描述】:

好的,所以我正在编写一个命令,该命令仅显示有关用户正在收听的歌曲的一些信息,例如 k!spotify @user 显示歌曲名称、艺术家、专辑、专辑封面等。但是,我遇到了问题Spotify 课程。

这是我第一次尝试使用 Spotify 课程,但我认为这不是问题所在。我希望这些变量是用户特定的,而不是<property object at 0x0460B7E0>

async def spotify(ctx, user: discord.Member=None):
    if not user:
        user = ctx.message.author.id
    else:
        user = user.id

    sname = discord.Spotify.title
    sartists = discord.Spotify.artists
    album = discord.Spotify.album
    palbum = discord.Spotify.album_cover_url
    duration = discord.Spotify.duration

我知道discord.Spotify.title 等不会给我一些用户特定的东西,但我尝试了user.Spotify.title 和类似的东西无济于事。我确定这只是我的一个误解,但是我应该如何在这里使用 spotify 类?

【问题讨论】:

    标签: python discord.py-rewrite


    【解决方案1】:

    SpotifyActivity 的一种。您需要获取Member.activities 并仅选择也是Spotify 的那些。我不知道是否可能有多个特定活动,因此您可能必须考虑到这一点:

    from discord import Spotify
    
    @bot.command()
    async def spotify(ctx, user: discord.Member=None):
        user = user or ctx.author
        for activity in user.activities:
            if isinstance(activity, Spotify):
                await ctx.send(f"{user} is listening to {activity.title} by {activity.artist}")
    

    【讨论】:

    • if isinstance(activity, Spotify) 行中我得到:NameError: name 'Spotify' is not defined?
    • 需要导入from discord import Spotify
    • 哦,我试过from discord.ext.commands import Spotify然后停止尝试,哈哈,谢谢你的帮助!
    【解决方案2】:
    from discord import Spotify
    
    @bot.command()
    async def spotify(ctx, user: discord.Member = None):
        if user == None:
            user = ctx.author
            pass
        if user.activities:
            for activity in user.activities:
                if isinstance(activity, Spotify):
                    embed = discord.Embed(
                        title = f"{user.name}'s Spotify",
                        description = "Listening to {}".format(activity.title),
                        color = 0xC902FF)
                    embed.set_thumbnail(url=activity.album_cover_url)
                    embed.add_field(name="Artist", value=activity.artist)
                    embed.add_field(name="Album", value=activity.album)
                    embed.set_footer(text="Song started at {}".format(activity.created_at.strftime("%H:%M")))
                    await ctx.send(embed=embed)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2023-01-06
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多