我想在用户输入特定命令时获取用户输入并将输入存储到变量(但不是命令)中,以便我可以用它做一些事情。
例如,当用户键入“!id 500”时,我希望机器人在 channel 中键入“500”。我试过只使用 message.content 但它不能正常工作,因为 bot 会无限期地向它发送垃圾邮件,而且它还会显示命令。
@client.event
async def on_message(message):
if message.content.startswith("!id"):
await client.send_message(message.channel, message.content)
很抱歉,如果这是一个愚蠢的问题,但任何帮助都意义重大。
最佳答案
如果您希望机器人只发送没有命令部分(“!id”)的用户消息,您必须指定要发回的字符串部分。由于字符串实际上只是字符列表,您可以通过请求索引来指定您想要的字符串部分。
例如:
"This is an example"[1]
返回“h”。
在您的情况下,您只想删除字符串的开头部分,可以这样做:
@client.event
async def on_message(message):
if message.content.startswith("!id"):
await client.send_message(message.channel, message.content[3:])
这是有效的,因为它从第 4 个索引位置开始发送回字符串(索引从 0 开始,所以 [3] 实际上是从第四个值开始)
如果您只想将用户的消息保存为变量,这也适用,因为您可以这样做:
userInput = message.content[3:]
您在 python docs 阅读了更多关于字符串操作的信息.
关于python - 如何使用 Python 中的 Discord 机器人获取用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978507/