我正在尝试在我的主脚本的后台运行Discord python机器人。我以为子流程可能是归档该内容的最佳方法。但是我不知道有什么方法可以将Discord bot作为子进程来运行。我还想通过一个函数启动和停止Discord机器人。 我的Discord漫游器脚本如下所示:
import time
import asyncio
import discord
TOKEN=('----')
client=discord.Client()
@client.event
async def on_message(message):
if message.content.startswith('!test'):
embed = discord.Embed(title="Test", color=0x0071ce, description="Test")
await message.channel.send(embed=embed)
await asyncio.sleep(0.5)
client.start(TOKEN)
编辑:
我从主脚本中调用此脚本,但有一个菜单。我不能在此处发布主脚本,因为它太长了,但是看起来像这样:
from menu import Menu
import subprocess
from os import system, name
def clear():
if name == 'nt':
_ = system('cls')
else:
_ = system('clear')
class discord():
def start(self):
clear()
subprocess.run("discord_script.py")
def stop(self):
clear()
#here I would like to stop the subprocess
class MainMenu():
def __init__(self):
mainpage_options = [
("Start discord", discord().start),
("Stop discord", discord().stop),
("Close and save", Menu.CLOSE)
]
self.mainpage = Menu(
options=mainpage_options,
title="Main Menu",
message="This is the Main Menu. \nPlease seelect something."
)
self.mainpage.set_prompt(">")
def open(self):
self.mainpage.open()
MainMenu().open()
问题在于subprocess.run("discord_script.py")
不会启动子进程,而且如果它正在运行,我也不知道如何停止它。也许子流程模块不适合使用。
我收到的错误是:
File "discord_script.py", line 9
async def on_message(message):
^
SyntaxError: invalid syntax
这很奇怪,因为如果我以正常方式运行脚本,它将正常工作。
感谢您提前解决我的问题。