我有基本相同的代码,其中一个是闲置的; 该命令是一个简单的eval命令,因此我可以从我的机器人运行python代码。当我对此进行测试时,我学会了如何在空闲状态下进行操作,因此我将其复制到了bot中。出于某种原因,IDLE中的代码仍无法在漫游器中正常工作。
我的博特代码:
try:
cmd = "\n".join(f" {i}" for i in command.splitlines())
func = "def eval_cmd():\n"+cmd
print(func)
exec(func)
embed = discord.Embed(title=" ", description="Code Evaluation: ", color=discord.Color.green())
embed.add_field(name=":inbox_tray: Input", value="```{}```".format(command), inline=False)
embed.add_field(name=":outbox_tray: Output", value="```{}```".format(eval_cmd()), inline=False)
embed.set_author(name=message.author.name, icon_url=message.author.avatar_url)
await client.send_message(message.channel, embed=embed)
except Exception as ex:
template = "An exception of type {0} occurred. Arguments:\n{1!r}"
error_message = template.format(type(ex).__name__, ex.args)
await client.send_message(message.channel, embed=discord.Embed(color=discord.Color.red(), description="You encountered an error: \n```{}```".format(error_message)))
我的IDLE码:
command = '''
pi = 3.14
rad = 5
area = pi * rad**2
return area'''
cmd = "\n".join(f" {i}" for i in command.splitlines())
func = "def eval_cmd(): "+cmd
print(func)
exec(func)
print(eval_cmd())
IDLE中的代码可以正常工作,并且eval_cmd()的值为78.5-应该是这样。在exec(func)运行时,机器人内部只会返回None。
这是与不和谐的问题吗?还是我失去了一些东西。