从Discord.py执行Python命令
所以我想做的是在discord.py中创建一个求值命令。所以当用户说从Discord.py执行Python命令,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,所以我想做的是在discord.py中创建一个求值命令。所以当用户说 .evaluate print("hi") 我希望它将代码发送到python并运行它。我看到了subprocess.Popen或os.system或system通常的方法,但它只运行shell命令。我想知道我是如何做到这一点的?您可以使用python函数。当然,允许人们在您的脚本中执行命令是一种安全风险,请格外小心。由于不确定您想要完成什么,应避免此类活动 尝试: @client.command() 异步定义评估(ctx,*
.evaluate print("hi")
我希望它将代码发送到python并运行它。我看到了subprocess.Popen
或os.system
或system
通常的方法,但它只运行shell
命令。我想知道我是如何做到这一点的?您可以使用python函数。当然,允许人们在您的脚本中执行命令是一种安全风险,请格外小心。由于不确定您想要完成什么,应避免此类活动
尝试:
@client.command()
异步定义评估(ctx,*,cmd=None):
尝试:
评估(cmd)
等待ctx.send(你的机器人朋友执行了你的命令-->{cmd})
除:
print(f'{cmd}是无效命令')
等待ctx.send(f'您的机器人朋友无法执行无效命令-->{cmd}')
控制台输出
None is an invalid command
hi
nocommand(junk) is an invalid command
不协调对话框(使用“?”前缀而不是“.”:
您可以使用python函数。当然,允许人们在脚本中执行命令存在安全风险,请务必小心。不确定您要完成什么,应避免此类活动
尝试:
@client.command()
异步定义评估(ctx,*,cmd=None):
尝试:
评估(cmd)
等待ctx.send(你的机器人朋友执行了你的命令-->{cmd})
除:
print(f'{cmd}是无效命令')
等待ctx.send(f'您的机器人朋友无法执行无效命令-->{cmd}')
控制台输出
None is an invalid command
hi
nocommand(junk) is an invalid command
不协调对话框(使用“?”前缀而不是“.”:
请记住,上面的示例非常简单,可以进行扩展。例如,exec
有一个globals
参数,以便您可以在eval语句中使用全局(预定义)变量。您甚至可以格式化代码,以便可以包括:```py`
{您的代码在这里}``
在您的eval命令周围。无论您做什么,都要确保除了您之外没有人可以访问您的eval命令。。说真的,如果他们可以访问您的计算机,他们还不如坐在您的计算机旁
请记住,上面的示例非常简单,可以进行扩展。例如,exec
有一个globals
参数,以便您可以在eval语句中使用全局(预定义)变量。您甚至可以格式化代码,以便可以包括:```py`
{您的代码在这里}``
在您的eval命令周围。无论您做什么,都要确保除了您之外没有人可以访问您的eval命令。说真的,如果他们可以访问您的计算机,他们可能会坐在您的计算机旁。这是命令的所有者
@client.command()
@commands.is_owner()
async def evaluate(ctx, *, cmd=None):
try:
eval(cmd)
await ctx.send(f'Your bot friend executed your command --> {cmd}')
except:
print(f'{cmd} is an invalid command')
await ctx.send(f'Your bot friend could not execute an invalid command --> {cmd}')
这里的命令仅为所有者
@client.command()
@commands.is_owner()
async def evaluate(ctx, *, cmd=None):
try:
eval(cmd)
await ctx.send(f'Your bot friend executed your command --> {cmd}')
except:
print(f'{cmd} is an invalid command')
await ctx.send(f'Your bot friend could not execute an invalid command --> {cmd}')
我如何允许像使用
py#code
这样的块代码如果有人可以访问您的eval命令,他们将能够使用它做可怕的事情。他们可以删除频道、禁止成员,并从您的计算机(或运行bot的vps)获取个人信息。底线是不给任何人。我如何允许使用诸如py#code
之类的块代码如果有人可以访问您的eval命令,他们将能够使用它做可怕的事情。他们可以删除频道、禁止成员,并从您的计算机(或运行bot的vps)获取个人信息.底线是不要把它给任何人。为什么这很危险?比如说这是一种安全风险?为什么这很危险?比如说这是一种安全风险?