如何在 discord.py 中将值合并到一条消息中

Posted

技术标签:

【中文标题】如何在 discord.py 中将值合并到一条消息中【英文标题】:How do I merge values into one message in discord.py 【发布时间】:2021-10-31 13:24:45 【问题描述】:

我希望我的机器人能够说出一条消息,提及一个用户,然后回复一条随机消息,所有这些都在同一行中,而不是在 3 个单独的行中。

这是我以前的方法:

if msg.startswith('respond')
    await message.channel.send('alright then,')
    await message.channel.send(message.author.mention)
    await message.channel.send(random.choice(responses))

但是,这使它们都出现在同一行中,但我不知道如何将它们合并为单行。这是我多次失败的尝试之一:

if msg.startswith('respond'):
    await message.channel.send ('alright then, <message.author.mention> <random.choice(responses)>')

(请不要取笑我的业余编码技能 lmao)

【问题讨论】:

【参考方案1】:

f-字符串

Inzer Lee 的回答是正确的,但在 Python 3.8+ 中,PEP 文档建议使用 f-string 方法连接字符串:
if msg.startswith("respond"):
    await message.channel.send(f"alright then, message.author.mention random.choice(responses)")

PEP-8

所以,如果你想尊重 PEP-8 缩进标准,这段代码长度超过 72 个字符,你应该这样做:
await message.channel.send("alright then,"
    f"message.author.mention random.choice(responses)"
)

【讨论】:

【参考方案2】:

假设你使用的是 python3+,你可以做 f-strings

if msg.startswith('respond'):
    await message.channel.send(f'alright then, message.author.mention random.choice(responses)')

还有其他替代方法,例如格式字符串

if msg.startswith('respond'):
    await message.channel.send('alright then,  '.format(message.author.mention, random.choice(responses))

连接方法,如

if msg.startswith('respond'):
    await message.channel.send('alright then, ' + message.author.mention + ' ' + random.choice(responses))

【讨论】:

以上是关于如何在 discord.py 中将值合并到一条消息中的主要内容,如果未能解决你的问题,请参考以下文章

当命令 discord.py 的参数不正确时如何显示消息?

discord.py 1.7.2 - 如何私信用户

如何在嵌入 discord.py 中将长字段作为页面发送?

如何在 discord.py 中将字符串更改为不和谐 id

如何在 discord.py 中将图像裁剪为带有枕头的圆形?

discord selfbot 将相同的消息发送到不同服务器的不同通道