Python 如何在discord.py中执行eval命令?

Python 如何在discord.py中执行eval命令?,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,我有一个不和谐机器人,只限于我和几个朋友。我想做一个eval命令,这样我就可以向他们炫耀了,因为他们对代码一无所知,但也可以让我在一般情况下使用(我有一个权限系统设置,所以它的使用仅限于我自己,不用担心) 我用谷歌搜索了很多次,最接近的是: @commands.command() @commands.guild_only() async def eval(self, ctx, *, args): result = eval(args) await ctx.send(result)

我有一个不和谐机器人,只限于我和几个朋友。我想做一个eval命令,这样我就可以向他们炫耀了,因为他们对代码一无所知,但也可以让我在一般情况下使用(我有一个权限系统设置,所以它的使用仅限于我自己,不用担心)

我用谷歌搜索了很多次,最接近的是:

@commands.command()
@commands.guild_only()
async def eval(self, ctx, *, args):
    result = eval(args)
    await ctx.send(result)
但这不适用于多行代码。例如,我尝试了以下代码:

&eval a=2
b=2
c=a*b
print(str(a), str(b), str(c))
它返回此错误:
无效语法
,并指向
a=2
作为错误。对于其他解决方案,比如来自创建者github的解决方案,它说,
eval()接受1个位置参数,但给出了2个位置参数。我正在使用命令扩展名,
eval
命令将位于cog中。谢谢

为了动态执行,函数应该只执行一个表达式

>>code=”“”
…a=2
…b=2
…c=a*b
…打印(a、b、c)
... """
>>>行政主任(代码)
2 2 4
您还可以使用
aioconsole.aexec
实现非阻塞方式

>>从aioconsole导入aexec
>>> 
>>>代码=”“
…a=2
…b=2
…c=a*b
…打印(a、b、c)
... """
>>>等待aexec(代码)#应该在另一个协同程序中等待它,而不是出于解释目的
2 2 4

说“不行”对我们没什么帮助,太宽泛了。请编辑问题并添加任何回溯/错误、输出问题、结果、预期结果…编辑为包含错误,对此深表歉意!对于这两种方法,它都会调用标记为“无法发送空消息”
的错误。有什么想法吗?是的,您得到的值是
None
,也不是
exec
aexec
返回任何值,您不应该将它们分配给变量,有几种方法可以从控制台捕获输出,有关更多信息,请参阅本文: