You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py结合Lavalink开发音乐bot时如何向单个Embed字段批量增加值

解决方案

你原来的写法每次遍历队列曲目都会调用一次add_field,自然会生成多个重名的「Enqueued Tracks」字段。你不需要为每首曲目单独新增字段,也不需要额外把曲目存到新列表里,直接把所有队列曲目的展示内容拼接为同一个字符串,再一次性赋值给字段即可,这是最简便高效的实现方式。

代码示例

# 添加当前播放曲目字段
embed.add_field(name="Currently playing",value=f"[{player.current.title}]({player.current.uri})")

if player.queue:
    # 用生成器表达式直接迭代队列,拼接为换行分隔的内容
    enqueued_tracks = "\n".join(f"[{track.title}]({track.uri})" for track in player.queue)
    embed.add_field(name="Enqueued Tracks", value=enqueued_tracks, inline=False)
else:
    # 队列为空时可自定义提示内容,也可以选择不添加该字段
    embed.add_field(name="Enqueued Tracks", value="暂无待播放曲目", inline=False)

补充说明

  • 如果队列曲目较多,拼接后的内容超过Discord Embed单字段1024字符上限,可以做截断处理,比如仅展示前10首,末尾补充... 还有X首待播放的提示
  • 直接迭代player.queue拼接内容的写法不会产生额外的内存开销,不需要提前把曲目信息存到独立列表中

内容的提问来源于stack exchange,提问作者SBECK1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:21:02