Почему мои боты не отправляют встроенное сообщение, а все остальное отправляет нормально? - PullRequest
1 голос
/ 18 июня 2020

Код ниже не отправляет встроенное сообщение на моем сервере, когда я использую команду 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)

1 Ответ

0 голосов
/ 18 июня 2020

Вы не предоставили трассировку, поэтому, пожалуйста, постарайтесь сделать это в будущем, если это возможно.

Это происходит потому, что add_field() требует как name и value аргументы ключевого слова. Я бы предложил либо переместить каждую из переменных (strength, agility et c.) В 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} ...")

Ссылки :

...