将Discord.py作为异步子进程运行

时间:2020-10-22 13:02:31

标签: python discord.py python-asyncio

我正在尝试在我的主脚本的后台运行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

这很奇怪,因为如果我以正常方式运行脚本,它将正常工作。

感谢您提前解决我的问题。

0 个答案:

没有答案