【问题标题】:Why won't my bots send its embedded message but will send everything else fine?为什么我的机器人不会发送其嵌入的消息,但会发送其他所有内容?
【发布时间】:2020-10-07 20:31:56
【问题描述】:

当我使用 dailygacha 命令时,以下代码不会在我的服务器中发送嵌入的消息。但是,所有其他命令都可以正常工作。任何我可以阅读的文档链接也将不胜感激,因此我可以进一步了解您的任何解决方案是如何工作的。提前谢谢你。

α = 75,67,70
β = 90,95,78
γ = 86,18,10
δ = 9,56,93
ε = 117, 85, 138
ζ = 232, 99, 202
rarity = random.choices("αβγδεζ", weights=[60, 40, 20, 15, 5, 3])

strength = random.randint(0, 100)
agility = random.randint(0, 100)
defense = random.randint(0, 100)
endurance = random.randint(0, 100)
csi = ((strength + agility + defense + endurance) / 4)


@bot.command()
@commands.cooldown(1, 60*60*24, commands.BucketType.user)
async def dailygacha(ctx):
    embed = discord.Embed(
    colour = discord.Colour.to_rgb(rarity),
    title = "Waifu Gacha",
    description = f"Roll Result: Lelouch Lamperouge [{rarity}]",
    )
    embed.set_image(url="https://cdn.myanimelist.net/images/characters/5/274017.jpg")
    embed.add_field(name="Character Stats:", inline=False)
    embed.add_field(name=f"Strength: {strength}", inline=False)
    embed.add_field(name=f"Agility: {agility}", inline=False)
    embed.add_field(name=f"Defense: {defense}", inline=False)
    embed.add_field(name=f"Endurance: {endurance}", inline=False)
    embed.add_field(name=f"Total CSI: {csi}", inline=False)
    embed.add_field(name="Roll Type:", inline=False)
    embed.add_field(name="Daily", inline=False)

    await ctx.send(embed=embed)

【问题讨论】:

    标签: python python-3.x discord discord.py discord.py-rewrite


    【解决方案1】:

    您没有提供回溯,因此请尽可能在以后尝试这样做。

    发生这种情况的原因是因为add_field() 需要 namevalue 关键字参数。我建议将每个变量(strengthagility 等)移动到 value,或者您可以使用 u200b 字符有一个空白的 value 字段。

    以下是两种方法:

    embed.add_field(name=f"Strength: {strength}", value="\u200b")
    # OR
    embed.add_field(name="Strength:", value=f"{strength}")
    

    \u200b 是一个zero-width space,仍然会被视为一个包含字符的字符串,但不会因为为空而唠叨你。


    编辑:

    似乎另一个问题是您的rarity
    首先,我不建议使用非 ascii 字符。
    其次,您的 rarity 实际上并没有返回您认为的内容。

    它返回一个包含随机字符作为唯一元素的列表。
    要修复它,您可以执行以下操作之一:

    r, g, b = locals()[rarity[0]]
    discord.Colour.from_rgb(r, g, b)
    # OR
    rarity = random.choices([α, β, γ, δ, ε, ζ], weights=[60, 40, 20, 15, 5, 3])
    r, g, b = rarity[0]
    discord.Colour.from_rgb(r, g, b)
    

    另一个修改:

    letter = rarity[0] # Gets the letter you assigned to each tuple
    r, g, b = locals()[rarity[0]] # Gets the tuple of rgb values
    
    # Add multiple new lines to a field
    embed.add_field(name="Character stats:", value=f"Strength: {strength}\nAgility: {agility} ...")
    

    参考资料:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-08
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多