如何使用 Python 中的 Discord 机器人获取用户输入?

新手上路,请多包涵

我想在用户输入某个命令时从用户那里获取用户输入并将输入存储到变量(但不是命令)中,以便我可以用它做事。

例如,当用户键入“!id 500”时,我希望机器人在频道中键入“500”。我试过只使用 message.content 但它不能正常工作,因为机器人会无限期地向它发送垃圾邮件,而且它还会显示命令。

 @client.event
async def on_message(message):
    if message.content.startswith("!id"):
        await client.send_message(message.channel, message.content)

抱歉,如果这是一个愚蠢的问题,但任何帮助都意义重大。

原文由 kit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 644
1 个回答

如果您希望机器人只发送没有命令部分(“!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 文档 中阅读了有关字符串操作的更多信息。

原文由 Milan Donhowe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题