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

如何在Disnake中实现API嵌套数据单条消息返回

解决Discord机器人拆分ETF行业权重消息的问题

你的问题出在循环内重复调用await ctx.send(),导致每条行业数据都单独发送成一条消息。只需先把所有行业信息整合为一个完整字符串,再一次性发送即可。

修改后的代码

@bot.command()
async def sectorweight(ctx, etf):
    r = requests.get(url=f"https://financialmodelingprep.com/api/v3/etf-sector-weightings/{etf}?apikey={apikey}")
    data = r.json()
    
    # 用列表存储每条格式化后的行业信息
    sector_details = []
    for item in data:
        sector_name = item.get('sector')
        weight = item.get('weightPercentage')  # 注意:API响应示例里是changesPercentage,请确认实际字段名
        
        # 处理字段缺失的情况,避免显示None
        if sector_name and weight:
            sector_details.append(f"**{sector_name}**: {weight}")
        elif sector_name:
            sector_details.append(f"**{sector_name}**: 无权重数据")
    
    # 将所有内容合并为单条消息,添加标题提升可读性
    full_message = f"**{etf} 行业权重分布**:\n" + "\n".join(sector_details)
    await ctx.send(full_message)

关键修改说明

  • 用列表sector_details收集所有行业的格式化文本,避免循环中多次调用发送接口
  • 增加字段存在性判断,防止API返回字段缺失时出现None的不友好显示
  • 用"\n".join()将列表内容拼接为带换行的完整字符串,一次发送完成
  • 添加消息标题,让输出格式更清晰易读

注意事项

请确认API返回的权重字段名是否正确:你提供的API示例里是changesPercentage,但代码中用的是weightPercentage,需根据实际接口返回调整,否则会获取不到权重数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:09:24