【问题标题】:Discord.py embed is only showing one wordDiscord.py 嵌入只显示一个词
【发布时间】:2021-03-19 04:15:39
【问题描述】:

所以我正在尝试为我的 discord 机器人创建一个 !say(消息在此处)命令。这是我目前得到的代码:

async def say(ctx, message):
    embed=discord.Embed(title="New Say Message", description=(message), color=0xff0000)
    await ctx.send(embed=embed)

如果我执行“!say Hello”,它可以正常工作。但是,如果我执行“!say How are you”,它只会在嵌入中显示“How”一词。这就是我的意思:https://gyazo.com/b146fff6c1d7c99a47db9c218dd753f1

我需要做什么/更改以使其显示完整的消息。谢谢!

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    您的函数签名设置不正确。您只接受来自机器人的一个参数async def say(ctx, message);为了在 python 中使用可变长度的参数,您需要*。然后你会将该可变长度作为一个列表来使用。

    例子:

    async def say(ctx, *message):
        embed=discord.Embed(title="New Say Message", description=(" ".join(message)), color=0xff0000)
        await ctx.send(embed=embed)
    

    【讨论】:

    • 谢谢!最后一件事,我如何让它接受许多行而不是一起显示它们。 EG: !say Hello (new line) How are you 在一行中显示为:“Hello How are you”。如果 !say 消息是这样写的,有没有办法让它做不同的行?谢谢
    • @JackThorn 澄清一下,您希望机器人根据换行符发送单独的嵌入消息吗?如果是这样,您将通过换行符拆分消息,并在发送单独的 embed for ctx.send() 的函数 send while 或 for-loop 中
    • 不是新嵌入,如果我在写!say 时换行,只是在同一个嵌入中换行。像这样:gyazo.com/8cb854053b20c9019d9f5b10c2e826e6(我知道我已经更改了命令和几个字但它是相同的代码)
    • @JackThorn 机器人不会将其捕获为换行符。您必须输入实际的换行符 \n
    • 我真的很抱歉,但我不太明白。我认为这可能是您的意思 - gyazo.com/ea03aad1b0272baf9e3a1072ef591092,但显然不是。你能解释一下我必须在我的代码中添加/更改什么以允许新消息吗?例如,这就是我想要实现的目标:gyazo.com/28dd0c638fa4ed651ea8749035206508,但这就是发生的事情:gyazo.com/455adceca4ee040c0788acffa8de0d17
    猜你喜欢
    • 2021-06-18
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2015-12-20
    • 2022-01-25
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多