在Discord.py重写中将用户输入捕获为字符串,并在消息中返回所述输入

时间:2020-10-10 04:02:52

标签: python discord.py discord.py-rewrite

我正在尝试捕获用户输入的信息,他们在消息中说的话,并在机器人发出的消息中将其返回给他们。更具体地说,当他们运行命令时,它将返回其后输入的所有文本。

到目前为止,我在这里:

    async def on_message(message):
        if message.content.startswith["=ok"]:
            await client.send_message(message.channel, message.content[6:])

...不幸的是,我相信这对重写之前的Discord.py先前版本有效。本质上,我希望某人能够运行= pressf命令,并让漫游器返回消息“所有人,让我们尊重(string)!”一个事件可能不是解决这个问题的最佳方法,但我很沮丧。

我一直在努力寻找有关问题的具体答案,因此,我非常感谢任何能为我指明正确方向的人。谢谢!

2 个答案:

答案 0 :(得分:2)

我建议您使用较新的Commands Extension,它可以轻松实现您想要的功能。请参阅this bit,有关将用户在命令后键入的所有内容都传递到变量中的信息。

我建议在这里查看一个官方示例:https://github.com/Rapptz/discord.py/blob/master/examples/basic_bot.py

答案 1 :(得分:0)

您应该使用commands而不是on_message事件。这是一个简单的命令:

@client.command()
async def test(ctx):
    await ctx.send('A Simple Command')

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

如果我们尝试您要做的事情,则可以使用比ctx多的参数。这是您的操作方法:

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

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