这可以分两步完成
使用 Javascript 和本地服务器加载 Json 文件
1> 创建一个 Json 文件,将其命名为 botNames.json,添加您的数据。
注意:.json 文件只能包含 Json 对象、数组或 Json 文字
{
"311": "Blargon",
"310": "Xryzoz",
"303": "Noot",
"279": "",
"312": "Arragn",
"35": "Qeud"
}
使用 XMLHttpRequest() 加载数据,您可以使用下面的函数加载 .json 文件,传递回调函数和路径作为参数。
function loadJSON(callback,url) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', url, true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(xobj.responseText);
}
};
xobj.send(null);
}
要生成随机索引,您可以使用以下表达式
Math.floor(lowerLimt + (upperLimit - lowerLimit+1)*Math.Random())
这将为您提供 [lowerLimit,upperLimit)
范围内的值
注意:这是可能的,因为 Math.random() 在 [0,1)
范围内生成一个小数>
您的回调函数将是
function callback1(response){
var botNames = JSON.parse(response)
var keys = Object.keys(botNames);
var randomProperty = keys[Math.floor(keys.length*Math.random())]
var botName = botNames[randomProperty]
console.log(botName);
}
您可以在代码中使用上述概念作为
function loadJSON(callback,url) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', url, true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
// sending the resonse to your callback
callback(xobj.responseText);
}
};
xobj.send(null);
}
function spawn(){
loadJSON(function(response){
//This is your callback function
var names = JSON.parse(response)
var keys = Object.keys(botNames);
var randomNum = keys[Math.floor(keys.length*Math.random())]
if (randomNum === 24) return
const name = names[randomNum]
const embed = new Discord.RichEmbed()
.setTitle(`${name} has been found!`)
.setColor(0x00AE86)
.setThumbnail(`attachment://./sprites/${randomNum}.png`)
.setTimestamp()
.addField("Quick! Capture it with `>capture`!")
msg.channel.send({embed});
},'/PATH_TO_YOUR_JSON/botNames.json')
}