【发布时间】:2017-10-20 13:58:03
【问题描述】:
我确定这是非常基本的问题,我正在尝试设置一个 !status 命令来更改我的机器人的状态。以下代码有效:
@myBot.event
async def on_message(message):
if message.content.startswith('!status'):
m = message.content.split(' ')
await myBot.change_presence(game=discord.Game(name=m[1]))
所以这里没什么复杂的,它会将机器人的状态设置为我在!status 之后输入的任何内容。
但是,它会在第一个空格之后停止,因为我使用 m[1] 没有 maxsplit。现在,如果我将maxsplit=1 添加到我的split() 函数中,我可以得到m[1] 中第一个空格之后的所有内容。这看起来很完美,对吧?假设我只是输入了和以前一样的东西,比如!status test,奇怪的是,它不起作用,即使m[1] 只包含test,状态也不会更新。为什么? maxsplit=1 真正改变了我无法用 print(m[1]) 看到的哪些变化?
【问题讨论】:
-
尾随空格/换行符?
-
@user1620443 你能详细说明一下吗?我尝试将实际输出写入文件,
m[1]的末尾没有任何空格,也没有任何换行符。至少我不能在文本文件中看到... -
m = message.content[7:].strip()因为你已经知道消息以!status开头 -
你能加一个minimal reproducible example吗?不需要
await和复杂检查的东西(即message.author.server_permissions.manage_messages)。只需用一个简单的字符串和split来演示您的问题 - 这将是完美的。 -
@dnLL 我们无法重现您的问题,因为如果没有整个机器人程序,您的代码将无法执行。一个最小的例子是
content = 'the message as you really got it',这样我们就可以立即比较split的输出有或没有 maxsplit
标签: python string python-3.x discord discord.py