web-dev-qa-db-fra.com

Discord.py: Utiliser une variable comme une décalage incorporer la couleur

donc, j'essaie de faire une commande pour mon bot de discordance qui est un constructeur d'intégration. Je souhaite que l'utilisateur de la commande puisse saisir une valeur hexagone pour la couleur de l'intégration. Voici ce que j'ai essayé:

value = message.content

embed=discord.Embed(title='Hey', description="How are you?", color=value)
await output.edit(content=None, embed=embed)

Cependant, quand je le fais, je reçois l'erreur:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: Expected discord.Colour, int, or Embed.Empty but received str instead.

Comment puis-je réparer ça? Merci.

2
Dom

Je vais aller de l'avant et supposer que l'entrée que vous attendez est quelque chose dans le sens de #ffffff, et s'il vous plaît, corrigez-moi si je me trompe. Afin de convertir cela en quelque chose que la discorde peut lire, nous pouvons utiliser la méthode suivante. Je vais supposer que message est l'objet de message que vous attendez de répondre avec.

sixteenIntegerHex = int(message.content.replace("#", ""), 16)
readableHex = int(hex(sixteenIntegerHex), 0)

embed = discord.Embed(
    title = "Hey",
    description = "How are you?",
    color = readableHex
)

Vous pouvez même fusionner les deux déclarations de conversion entier en une seule!

readableHex = int(hex(int(message.content.replace("#", ""), 16)), 0)
2
StarbuckBarista
questions = ["What should be the name of the embed?", 
            "What should be the desc",
            "What is the colour of the embed?"]

answers = []

def check(m):
    return m.author == ctx.author and m.channel == ctx.channel 

for i in questions:
    await ctx.send(i)

    try:
        msg = await client.wait_for('message', timeout=15.0, check=check)
    except asyncio.TimeoutError:
        await ctx.send('You didn\'t answer in time, please be quicker next time!')
        return
    else:
        answers.append(msg.content)


title = answers[1]
desc = answers[2]
colour = answers[3]


embed = discord.Embed(title = f"{title}", description = f"{desc}", color = colour)

embed.set_footer(text = f"My embed")

await channel.send(embed = embed)
2
Cohen
@client.command()
async def embed(ctx, content, colour):

embed=discord.Embed(title='Embed', description=f"{content}", color=colour)
await output.edit(content=None, embed=embed)

Cela fonctionne-t-il dans votre situation?

0
Cohen