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

标签 python python-3.x discord discord.py

我想在用户输入特定命令时获取用户输入并将输入存储到变量(但不是命令)中,以便我可以用它做一些事情。

例如,当用户键入“!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/

相关文章:

python - Matplotlib 在 Spyder ipython 中卡住

python - 看不到来自另一台设备的 UDP 多播消息

python - 无法获取不和谐公会/服务器/ channel 成员

javascript - 检测欢迎消息discord.js

javascript - 在 discord.js 嵌入文本上更改颜色

python - RFM69 radio 收发器 : Arduino is not registering acknowledgement for transmission sent by Raspberry Pi

python - 如何让 emacs-jedi 使用项目特定的 virtualenvs

python - 理解python编译

python - 值错误 : invalid literal for int() with base 10: '' turning entry into integer

Python3 unpickle 字节对象的字符串表示