gpt4 book ai didi

javascript - 是否可以格式化我们从数组接收到的值以使其成为其他值

转载 作者:行者123 更新时间:2023-12-03 08:18:44 24 4
gpt4 key购买 nike

我的标题并没有真正解释太多,所以这里有一个解释。

目前,我的 Discord 机器人上有一个命令,可以向我显示 Mojang 的服务器及其状态。

这是代码:

const Discord = require("discord.js");
const { get } = require("https");

module.exports.run = async(bot, message, args) => {
//const member = message.mentions.members.first() || message.member

get("https://status.mojang.com/check", (res) => {
const { statusCode } = res;
if (statusCode != 200) {
res.resume;
}
res.setEncoding("utf8");
let rawData = '';
res.on("data", (chunk) => {
rawData += chunk;
});
res.on("end", () => {
try {
const parsedData = JSON.parse(rawData);

console.log(parsedData[0]);
console.log(parsedData[1]);

message.channel.send({
embed: {
color: 0xe61616,
title: `Mojang API Status`,
fields: [
{
name: "minecraft.net",
value: parsedData[0]['minecraft.net']
},
{
name: "session.minecraft.net",
value: parsedData[1]['session.minecraft.net']
},
{
name: "account.mojang.com",
value: parsedData[2]['account.mojang.com']
},
{
name: "authserver.mojang.com",
value: parsedData[3]['authserver.mojang.com']
},
{
name: "sessionserver.mojang.com",
value: parsedData[4]['sessionserver.mojang.com']
},
{
name: "api.mojang.com",
value: parsedData[5]['api.mojang.com']
},
{
name: "textures.minecraft.net",
value: parsedData[6]['textures.minecraft.net']
},
{
name: "mojang.com",
value: parsedData[7]['mojang.com']
}
],
footer: {
text: `${bot.user.username} - Copyright 2021 - 2025`
}
}
});

console.log(parsedData);
} catch (e) {
console.error(e.message);
}
});
}).on("error", (err) => {
console.error(err.message);
});
}

结果就是数组所说的,所以 minecraft.net 绿色

[
{ "minecraft.net": "red" },
{ "session.minecraft.net": "green" }
]

但我想要的是,当它显示时,它是“minecraft.net: 🟢”。可以这样做吗?

最佳答案

当然,您可以格式化一个值。由于您从 API 收到的响应是一个对象数组,其中键是服务器名称,值是颜色/状态,因此您只需检查该值,看看它是否是字符串 green,您可以将其替换为绿色表情符号,如果它是字符串red,则将其替换为红色表情符号。

您还可以使用 node-fetch而不是苦苦挣扎于内置的 http 模块。

要获取每个对象的键和值,您可以使用 Object.entries()方法。它返回一个键值对数组,因此您需要获取第一个。要获取字段,您可以迭代响应,并为每个对象返回一个新对象,其中 name 是服务器的名称,value 是表情符号 (基于绿色/红色值):

const fetch = require('node-fetch');
// ...
module.exports.run = async (bot, message, args) => {
try {
const res = await fetch('https://status.mojang.com/check');
const json = await res.json();
const statusEmojies = {
green: '🟢',
red: '🔴',
};
const fields = json.map((server) => {
const [name, status] = Object.entries(server)[0];
return {
name: name,
value: statusEmojies[status],
};
});
const embed = new MessageEmbed()
.setColor(0xe61616)
.setTitle('Mojang API status')
.addFields(fields);

message.channel.send(embed);
} catch (error) {
console.log(error);
message.channel.send('Oops, there was an error. Try again later!');
}
};

enter image description here

您也可以只创建一个字符串数组并在描述中使用它。至少,我认为这样看起来更好一些:

const fetch = require('node-fetch');
// ...
module.exports.run = async (bot, message, args) => {
try {
const res = await fetch('https://status.mojang.com/check');
const json = await res.json();
const statusEmojies = {
green: '🟢',
red: '🔴',
};
const fields = json.map((server) => {
const [name, status] = Object.entries(server)[0];
return `${statusEmojies[status]} ${name}`;
});
const embed = new MessageEmbed()
.setColor(0xe61616)
.setTitle('Mojang API status')
.setDescription(fields.join('\n\n'));

message.channel.send(embed);
} catch (error) {
console.log(error);
message.channel.send('Oops, there was an error. Try again later!');
}
};

enter image description here

关于javascript - 是否可以格式化我们从数组接收到的值以使其成为其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68521708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com