бот discord.py отключается - PullRequest
0 голосов
/ 02 марта 2020

В настоящее время я работаю над ботом Discord, используя discord.py. Одной из функций является запуск сервера Minecraft. Код функции следующий:

@commands.command()
async def startmc(self, ctx):
    await ctx.send("Server is starting")
    os.system("java -jar -Xmx2048M -Xms2048M /home/pi/Desktop/testbot/server.jar
    await ctx.send("Server has started")

Как вы можете видеть, это должно работать на моем Raspberry Pi. Как только сервер заканчивает запуск, мой бот отключается. Если я вручную закрываю сервер, бот возвращается в сеть и отправляет сообщение «Сервер запущен». Как мне заставить своего бота оставаться в сети? Большое спасибо заранее.

Редактировать:

Теперь я переключился на модуль подпроцесса.

@commands.command()
async def startmc(self, ctx):
    await ctx.send("Server is starting")
    subprocess.call("cd /home/pi/Desktop/testbot", shell = True)
    subprocess.call("java -jar -Xmx2048M -Xms2048M", shell = True)
    await ctx.send("Server has started")

Моя проблема остается той же. Я использую неправильную команду?

1 Ответ

0 голосов
/ 05 марта 2020

Вы пытаетесь открыть программу java, но она блокирует бот для продолжения работы, поэтому он отключается.

Вам нужно вызвать его в фоновом режиме, чтобы он не заблокировал l oop. Вы можете сделать это с помощью subprocess.Popen:

from subprocess import Popen
Popen("java -jar -Xmx2048M -Xms2048M /home/pi/Desktop/testbot/server.jar")
...