如何使用 python 制作用于启动 minecraft 服务器的 discord 机器人?

How can I make discord bot for strarting minecraft server with python?

这就是我的鳕鱼了:

import discord
import subprocess

client = discord.Client()
@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))
@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!StartServer'):
        await message.channel.send('Server is starting')
        subprocess.call(['java', '-jar', 'D:\Tests\paper\paper-1.18.1-92.jar'])
client.run('token')

但是当我使用命令 '!StartServer' 控制台写这个(我已经同意 EULA):

**Starting org.bukkit.craftbukkit.Main
*** Warning, you've not updated in a while! ***
*** Please download a new build as per instructions from https://papermc.io/downloads ***
System Info: Java 17 (Java HotSpot(TM) 64-Bit Server VM 17.0.1+12-LTS-39) Host: Windows 10 10.0 (amd64)
Loading libraries, please wait...
2022-01-29 16:44:05,769 ServerMain WARN Advanced terminal features are not available in this environment
[16:44:09 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.**

我该如何解决?

存在多个问题:

  1. 您正在 运行创建一个旧的纸质版本。所以,如所问,去 here 然后下载更新的版本。

  2. 对于 eula,问题更具全球性。服务器没有在好的地方启动。让我解释一下。

你有这样的文件夹:

global/
--- server/
    --- paper-1.18.1-92.jar <--- what you want to run
    bot/
    --- bot.py <--- the file you are running

您将确切的文件夹放入 python 脚本中,因此它将使用 bot/ 文件夹中的 paper-1.18.1-92.jar(在我的示例中)。

要解决这个问题,我建议您制作一个脚本,运行 来自 python 的脚本。

Windows

script.bat:

@echo off
title MC server
chcp 1252
cd global/server
java -jar paper-1.18.1-92.jar -o true --nogui

Linux

script.sh :

#!/bin/bash
cd global/server
java -jar paper-1.18.1-92.jar -o true --nogui

cd 命令在 good 文件夹中创建脚本,因此可以从任何地方启动,它会 运行 good 文件夹。