在 Discord.py 重写中将用户输入捕获为字符串并在消息中返回所述输入
Capturing user input as a string in Discord.py rewrite and returning said input in a message
我正在尝试捕获用户的输入,他们在消息中所说的话,并在机器人的消息中将其 return 发送给他们。更具体地说,当他们 运行 一个命令时,它会 return 他们在那之后输入的任何文本。
到目前为止,我在这里:
async def on_message(message):
if message.content.startswith["=ok"]:
await client.send_message(message.channel, message.content[6:])
...不幸的是,我相信这对重写之前的 Discord.py 的先前版本有效。本质上,我希望有人能够 运行 命令 =pressf 并让机器人 return 消息“大家,让我们向(字符串)致敬!”举办活动可能不是解决此问题的最佳方式,但我很难过。
我一直在努力为我的问题在网上找到具体的答案,所以我非常感谢任何能为我指明正确方向的人。谢谢!
我建议使用较新的 Commands Extension, it is much simpler to implement what you are wanting. See this bit 专门用于将用户在命令后键入的所有内容传递到变量中。
这里有一个官方示例,我建议您查看:https://github.com/Rapptz/discord.py/blob/master/examples/basic_bot.py
您应该使用 commands 而不是 on_message
事件。这是一个简单的命令:
@client.command()
async def test(ctx):
await ctx.send('A Simple Command')
ctx
parameter是所有命令都必须有的参数。因此,当您键入 =test
时,它将发送到该频道 A Simple Command
.
如果我们了解您尝试执行的操作,您可以使用比 ctx
更多的参数。方法如下:
@client.command()
async def pressf(ctx, *, mess):
await ctx.send(mess)
在此代码中,您还有 1 个名为 mess
的参数,还有一个 *
。这意味着 mess
参数包括 =pressf
之后的每条消息。因此,当用户键入 =pressf Hello
时,它将发送频道 Hello
.
我正在尝试捕获用户的输入,他们在消息中所说的话,并在机器人的消息中将其 return 发送给他们。更具体地说,当他们 运行 一个命令时,它会 return 他们在那之后输入的任何文本。
到目前为止,我在这里:
async def on_message(message):
if message.content.startswith["=ok"]:
await client.send_message(message.channel, message.content[6:])
...不幸的是,我相信这对重写之前的 Discord.py 的先前版本有效。本质上,我希望有人能够 运行 命令 =pressf 并让机器人 return 消息“大家,让我们向(字符串)致敬!”举办活动可能不是解决此问题的最佳方式,但我很难过。
我一直在努力为我的问题在网上找到具体的答案,所以我非常感谢任何能为我指明正确方向的人。谢谢!
我建议使用较新的 Commands Extension, it is much simpler to implement what you are wanting. See this bit 专门用于将用户在命令后键入的所有内容传递到变量中。
这里有一个官方示例,我建议您查看:https://github.com/Rapptz/discord.py/blob/master/examples/basic_bot.py
您应该使用 commands 而不是 on_message
事件。这是一个简单的命令:
@client.command()
async def test(ctx):
await ctx.send('A Simple Command')
ctx
parameter是所有命令都必须有的参数。因此,当您键入 =test
时,它将发送到该频道 A Simple Command
.
如果我们了解您尝试执行的操作,您可以使用比 ctx
更多的参数。方法如下:
@client.command()
async def pressf(ctx, *, mess):
await ctx.send(mess)
在此代码中,您还有 1 个名为 mess
的参数,还有一个 *
。这意味着 mess
参数包括 =pressf
之后的每条消息。因此,当用户键入 =pressf Hello
时,它将发送频道 Hello
.