python - 为什么我的机器人不会发送其嵌入的消息,但会发送其他所有内容?
问题描述
当我使用 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)
解决方案
您没有提供回溯,因此请尽可能在将来尝试这样做。
发生这种情况的原因是因为add_field()
需要和关键字参数。我建议将每个变量(等)移动到 中,或者您可以使用该字符来拥有一个空白字段。name
value
strength
agility
value
value
u200b
以下是这两种方法:
embed.add_field(name=f"Strength: {strength}", value="\u200b")
# OR
embed.add_field(name="Strength:", value=f"{strength}")
\u200b
是一个零宽度的空格,仍然会算作一个包含一个字符的字符串,但不会因为你是空的而唠叨你。
编辑:
似乎另一个问题是您的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} ...")
参考:
推荐阅读
- mongoose - 如何使用 mongoose 创建 mongodb 视图
- node.js - 如何取消“缓慢”的承诺链
- matlab - 从给出错误日期的 csv 文件中读取日期
- php - 如何编写 if 语句以使用 PHP 在网页上显示某些过滤器和文本?
- c - 从另一个函数(另一个源文件)逐行获取输出?
- orm - 如果 pydantic 模型定义了别名,如何使用`from_orm`?
- javascript - 在删除帐户之前在 Firebase Auth 中验证用户密码
- r - R中基于国家/地区的记录器数据集
- vba - 从 Word VBA 编辑 PowerPoint 演示文稿页脚
- arrays - JQ将数据从一个文件推送到另一个文件的嵌套数组中