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

discord.py开发Discord机器人如何遍历列表逐个输出加密货币排名

解决方法

你原来的get_top10函数没有返回值,仅把结果打印在本地控制台,所以调用get_top10()拿到的是None,无法给Discord推送内容。只需要修改两处代码即可实现需求:


1. 修改get_top10函数,返回结果列表而非直接打印

把函数末尾的打印逻辑替换为返回排序后的前10条目:

import os 
import json
from requests import Session
def get_top10():
    CMC_API_KEY=os.environ.get('CMC')
    parameters={
                'start':1,
                'limit':5000
                }
    headers={
                'Accepts':'application/json',
                'X-CMC_PRO_API_KEY':CMC_API_KEY
                }
    session=Session()
    session.headers.update(headers)
        
    url='https://pro-api.coinmarketcap.com/v1/cryptocurrency/map'
    response=session.get(url,params=parameters)
    json_file=json.loads(response.text)['data']
    top10_rank_to_slug = {d['rank']: d['slug'] for d in json_file}
    # 直接返回结果列表,不在本地打印
    return sorted(top10_rank_to_slug.items())[:10]

2. 修改Discord指令逻辑,遍历列表逐个发送

拿到返回的列表后循环遍历,每条内容单独调用发送接口:

@client.command()
@commands.check(check_channel)
async def top10(ctx):
    top10_list = get_top10()
    for rank, name in top10_list:
        # 可自行调整输出格式,比如加表情、特殊符号美化
        await ctx.send(f"{rank}. {name}")
client.run(token)

如果需要优化体验,可以额外添加异常捕获逻辑,避免接口请求失败时机器人无响应或者抛出报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:03