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

Discord Bot问题:如何在Embed中显示所有Fortnite皮肤历史日期

解决方案

问题出在你每次循环都会覆盖fecha变量,最终只保留了最后一个日期的时间戳。要展示所有日期,需要先收集所有日期,再统一插入到Embed中。

修改后的代码如下:

from datetime import datetime  # 若你用的是dateutil的isoparse,替换成from dateutil.parser import isoparse
import requests
import discord

@bot.command()
async def skin(ctx):
    response = requests.get("https://fortnite-api.com/v2/cosmetics/br/search/all?language=es&name=palito%20de%20pescado%20de%20gominola&searchLanguage=es")
    historialSKIN = response.json()
    
    # 初始化列表存储所有日期时间戳
    fechas = []
    for item in historialSKIN["data"]:
        for datestr in item['shopHistory']:
            # 转换为时间戳并添加到列表,用isoparse的话就换成int(isoparse(datestr).timestamp())
            fecha_timestamp = int(datetime.fromisoformat(datestr).timestamp())
            fechas.append(str(fecha_timestamp))
    
    # 将所有日期用换行拼接成字符串,在Embed中逐行显示
    fechas_str = '\n'.join(fechas)
    
    embed = discord.Embed(title="皮肤上架历史", description=f"所有上架时间戳:\n{fechas_str}")
    embed.add_field(name="皮肤名称", value="Palito de pescado de gominola", inline=False)
    await ctx.send(embed=embed)

关键修改点:

  • 新增fechas列表,用来收集每一个日期的时间戳,避免变量被循环覆盖
  • 循环时用append将每个时间戳添加到列表中
  • 用'\n'.join(fechas)把列表元素转成换行分隔的字符串,确保所有日期都能在Embed中显示
  • 优化了变量命名,提升代码可读性

如果想展示更友好的日期格式(而非时间戳),可以把转换逻辑改成:

fecha_formateada = datetime.fromisoformat(datestr).strftime("%Y-%m-%d %H:%M:%S")
fechas.append(fecha_formateada)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:05:22