如何 运行 bot 中的 discordpy 终端
How to run discordpy terminal in bot
我想为我的机器人创建一个命令,让我可以直接通过机器人 运行 命令
如:
输入:/运行 await ctx.send("hi Whosebug")
bot:嗨 Whosebug
我一直在研究如何在 discordpy 中制作这样的命令,但我得到的最接近的是使用 exec,但它只是抛出了 discord.ext.commands.errors.CommandInvokeError: Command raised an exception: SyntaxError: 'await' outside function (<string>, line 1)
我不想在没有适当代码示例的情况下询问,但我们将不胜感激
<3
如果您正在寻找命令行界面,我建议您这样做:
import threading, time
def waitfor():
cmd = input('command: ')
print(cmd)
## do command processing here eg. eval(cmd)
def runthread():
t = threading.Thread(target=waitfor)
t.start()
return t
async def commandInterface():
t = runthread()
while 1:
if not t.is_alive():
t = runthread()
time.sleep(1)
## loop stuff
client.loop.create_task(commandInterface)
client.run(TOKEN)
这使用线程模块等待输入和 运行 命令,而不会阻塞程序的其余部分。显然需要对其进行调整以满足您的需求,但这可能是一个好的开始。
我想为我的机器人创建一个命令,让我可以直接通过机器人 运行 命令 如:
输入:/运行 await ctx.send("hi Whosebug")
bot:嗨 Whosebug
我一直在研究如何在 discordpy 中制作这样的命令,但我得到的最接近的是使用 exec,但它只是抛出了 discord.ext.commands.errors.CommandInvokeError: Command raised an exception: SyntaxError: 'await' outside function (<string>, line 1)
我不想在没有适当代码示例的情况下询问,但我们将不胜感激 <3
如果您正在寻找命令行界面,我建议您这样做:
import threading, time
def waitfor():
cmd = input('command: ')
print(cmd)
## do command processing here eg. eval(cmd)
def runthread():
t = threading.Thread(target=waitfor)
t.start()
return t
async def commandInterface():
t = runthread()
while 1:
if not t.is_alive():
t = runthread()
time.sleep(1)
## loop stuff
client.loop.create_task(commandInterface)
client.run(TOKEN)
这使用线程模块等待输入和 运行 命令,而不会阻塞程序的其余部分。显然需要对其进行调整以满足您的需求,但这可能是一个好的开始。