首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord.py多行输入

Discord.py多行输入
EN

Stack Overflow用户
提问于 2020-06-22 10:29:43
回答 1查看 1.7K关注 0票数 0

我正在尝试制作一个接受多行输入的discord bot,这样它就可以执行python代码。我的代码如下:

代码语言:javascript
复制
@bot.command(name="python", help="executes python script")
async def python(ctx, *args):
    try:
        with Capturing() as output: #Capture output
            exec(" ".join(args).replace('"', "'"))
        # send captured output to thread
    except Exception as e:
        await ctx.send("```\n{}\n```".format(e)) # Send error message

问题是这个函数只能接受一行输入,如下所示:

代码语言:javascript
复制
b!python a=1;print(a)

但是,我想让discord.py机器人接受这种类型的消息:完整消息的示例如下:

代码语言:javascript
复制
b!python
a = 1
print(a)

我希望接受多行输入,并将其赋给代码中的一个变量,然后执行它:

代码语言:javascript
复制
code = """a = 1
print(a)
"""
exec(message)

我见过一些机器人执行这样的python代码,但我不知道如何在不使用*args的情况下这样做,在这种情况下,它只接受一行代码。有没有办法接受多行输入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-22 12:06:23

您可以使用keyword-only argument syntaxdiscord.py指示您希望将所有其余输入捕获为单个参数:

代码语言:javascript
复制
@bot.command(name="python", help="executes python script")
async def python(ctx, *, arg):
    try:
        exec(arg)
    except Exception as e:
        await ctx.send("```\n{}\n```".format(e)) # Send error message
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62506621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档