【发布时间】:2021-06-17 13:39:04
【问题描述】:
对于代码的最后一点elif isinstance(activity == None, Spotify) & await ctx.send(f'{user.name} is not listening to anything :shrug:') 运行时没有错误代码,但是如果我的 spotify 没有播放它在我输入命令时不会打印它
完整代码如下:
@commands.command()
async def spot(self, 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="Currently listening to {}".format(activity.title),
color=user.color)
embed.set_thumbnail(url=activity.album_cover_url)
embed.add_field(name="Artist",
value=activity.artist,
inline=False)
embed.add_field(name="Album",
value=activity.album,
inline=False)
m1, s1 = divmod(int(activity.duration.seconds), 60)
song_length = f'{m1}:{s1}'
embed.add_field(name="Song Duration",
value=song_length,
inline=True)
embed.add_field(name="Track Link",
value=f"[{activity.title}](https://open.spotify.com/track/{activity.track_id})",
inline=True)
embed.set_footer(text=f'Requested by : {ctx.author}',
icon_url=ctx.author.avatar_url)
await ctx.send(embed=embed)
elif isinstance(activity == None, Spotify):
await ctx.send(f'{user.name} is not listening to anything :shrug:')
【问题讨论】:
-
当然,isinstance 将始终返回 False,因为您正在检查评估为布尔值的语句是否属于 Spotify 类型。
-
你可以把整个 elif 换成一个 else,对吧?
-
@4RJ 即使删除了 isinstance 机器人仍然保持不变,我有什么遗漏的吗?
-
@4RJ
else:由于两个if给了我一个双重响应,它还在歌曲播放时嵌入的 Spotify 活动下方响应 -
有一个名为
sent或类似名称的临时变量。在您的“if isinstance(activity, Spotify):` 中将其设置为 True。然后在您的循环之外,如果它仍然是 False,则发送未监听的嵌入。这应该是一个快速的解决方案。
标签: python discord discord.py spotify