我目前正在使用Lavalink设置Musicbot
对于我的队列函数,我希望使用带有两个字段的嵌入:一个用于当前播放的曲目,另一个用于排队的曲目
使用for循环从Lavalink Audiotrack对象获取信息:
embed.add_field(name="Currently playing",value=f"[{player.current.title}]({player.current.uri})")
for track in player.queue:
embed.add_field(name="Enqueued Tracks",value=f"[{track.title}]({track.uri})",inline=False)
每次将轨迹添加到排队的轨迹时,它都会添加一个new field。
有没有一种方法可以向特定的嵌入字段添加值,或者我必须将对象存储在列表中才能使用它们,而无需使用for循环
只是问问这里最有效最简单的方法是什么
这一切都取决于你的目标是什么——而我在写我的答案时对此并不清楚,所以请容忍我。如果您的目标是为每个排队的磁道创建一个新的嵌入字段,请存储一个对嵌入的引用,并像您一样使用
.add_field()
方法刚才说,如果你想用一个排队的列表列出一个EME>字段,你可以考虑尝试这样的生成器。
这个内联for循环所做的是创建一个格式化为
[title](url)
的字符串列表,用换行符(每行一个磁道)连接它们,并将它们插入到字段的值中。在与换行符连接之前,您可以预期它的外观如下所示如果您想更新嵌入,可以通过两种方式进行。将此代码提取到自己的方法中,并在每次需要更新时将所有曲目(包括新曲目)传递到方法中(我认为最好),或者,因为您知道这是嵌入的第二个字段,所以可以在
选择权在你,祝你好运
相关问题 更多 >
编程相关推荐