【发布时间】:2019-04-08 05:11:01
【问题描述】:
我想使用机器人在网站上显示不和谐公会的在线成员/总成员。
为了在网站上显示数据,我想我可以使用 jQuery 从 json 文件中提取 JSON 数据,所以我的朋友做了一个 JSON 数据库,托管在网站上。在 json 文件中,机器人应该每 3 秒在 "online" "total" 字段中写入在线成员和总成员。
问题在于 JSON 数据不是每 3 秒更新一次。我尝试咨询 discord.js 文档,但没有帮助。请注意,我不懂 javascript,所以我很难找到编写代码的解决方案。
这是机器人的代码:index.js code 这是config.json 和db.json
我认为问题出在setInterval,因为 db.json 应该每 3 秒更新一次,并在http://example.com/db.json 向我显示更新后的结果。
另外,db.json 中的数据只在机器人启动时更新。
源代码:
const Discord = require("discord.js");
const config = require("/config.json");
const client = new Discord.Client();
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('db.json')
const db = low(adapter)
const database = require("./db.json")
client.on("ready", () => {
console.log(`
CONNECTED!
[${client.user.tag}]
`)
let onM = client.guilds.get(config.g).members.filter(member => member.user.presence.status !== "offline").size
let totM = client.guilds.get(config.g).memberCount
db.get("members")
.find({id: "1", online: getOnline(), total: getTotal()})
.assign({id: "1", online: onM, total: totM})
.write()
setInterval(() => {
db.get("members")
.find({id: "1", online: getOnline(), total: getTotal()})
.assign({id: "1", online: onM, total: totM})
.write()
}, 3000)
function getOnline() {
return database.members.find(z => z.id === "1").online
};
function getTotal() {
return database.members.find(z => z.id === "1").total
}
})
client.login(config.token)
config.json
{
"token":"BotTOKEN",
"g":"GuildID"
}
db.json
{
"members": [
{
"id": "1",
"online": 51,
"total": 216
}
]
}
【问题讨论】:
-
请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。
-
谢谢,我会更新我的话题。
-
你能把代码贴在这里吗,(格式正确)。尝试重现查看代码图像的问题真的很难/让人分心。
-
给你,我加了源代码。
标签: javascript json discord