在 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')

ctxparameter是所有命令都必须有的参数。因此,当您键入 =test 时,它将发送到该频道 A Simple Command.

如果我们了解您尝试执行的操作,您可以使用比 ctx 更多的参数。方法如下:

@client.command()
async def pressf(ctx, *, mess):
    await ctx.send(mess)

在此代码中,您还有 1 个名为 mess 的参数,还有一个 *。这意味着 mess 参数包括 =pressf 之后的每条消息。因此,当用户键入 =pressf Hello 时,它将发送频道 Hello.