javascript Discord.js得到motd

3gtaxfhh  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(164)

如何获取Minecraftserver的MOTD并将其放入嵌入?如果我输入/状态。Discord-Bot应该在embed中回复服务器replaysucht.de:255655的motd。

cgvd09ve

cgvd09ve1#

const serverInfo = require('minecraft-server-util');

let embed = new MessageEmbed()
    .setTitle("Server Information")
    .setTimestamp()

    serverInfo.status('replaysucht.de') //default port: 25565
    .then((response) => {
      embed
        .setDescription(response.description.descriptionText)
        message.channel.send(embed)
    })
    .catch((error) => {
        throw error;
    });

在这个例子中,您需要minecraft-server-util,所以请确保您已经安装并定义了它。
因此,在代码中,我们创建了一个embed embed。你可以改变嵌入的外观,这只是一个例子。通过serverInfo.status('replaysucht.de'),我们可以获取您所需的所有信息,以解决您的问题。在获取信息后,我们使用.then从响应中获取MOTD。确切的MOTD存储在response.description.descriptionText中。如果bot可以毫无问题地获取它,则嵌入会在通道中发送,否则它会抛出错误。
由于大多数Minecraft服务器在其MOTD中具有特殊和动画角色,因此将显示如下:

§f§f §7•§8● §eReplaySucht §8✕ §7we code for you §4:heart: §8✕ §e1§8.§e8 §8●§7•
§4Info §8» §cKurze Wartungsarbeiten!

在嵌入的描述中。

ohfgkhjo

ohfgkhjo2#

由于minecraft-server-util和discord.js版本已被弃用,这里有一个工作方法:

import mc from "minecraftstatuspinger"

let result = await mc.lookup({ hostname: "mc.hypixel.net" })

let motdEmbed = new EmbedBuilder()
    .setTitle("mc.hypixel.net")
    .setDescription(result.status.description.text)

interaction.reply({embeds: [motdEmbed]})

为此,您需要MinecraftStatusPinger库。

第一步:导入库

导入库。你必须根据你的项目是模块还是commonjs以不同的方式导入它。

// Module
import mc from "minecraftstatuspinger"
// CommonJS
const mc = require("minecraftstatuspinger")

第二步:Ping服务器。

使用所需的选项调用.lookup函数。确保父函数是异步的(async),否则你将不得不使用.then

let status = await mc.lookup({ hostname: "mc.hypixel.net" })

如果您的服务器使用的端口与默认端口25565不同,则需要添加端口选项。所有的选择都在这里

第三步:制作嵌入

let motdEmbed = new EmbedBuilder()
    .setTitle("mc.hypixel.net")
    .setDescription(result.status.description.text)

第四步:发吧!

根据您回复的是斜杠命令还是邮件,请使用以下选项之一:

// If it's an interaction
interaction.reply({embeds: [motdEmbed]})
//If it's a message
message.channel.send({embeds: [motdEmbed]})

相关问题