【发布时间】:2020-09-07 14:55:17
【问题描述】:
当用户进入和离开语音频道时,我做了这个机器人修复,我希望每分钟坐在那里一个参与者滴 200 个硬币,我已经在聊天中这样做了。对于我的想法,我需要“ms”和“fs”来捕捉一分钟(60000 毫秒)我还有一个文件,其中所有硬币都被追逐,我希望每分钟的金额去那里
const Discord = require('discord.js');
const fs = require("fs");
const ms = require("ms");
const token = "my token here";
const prefix = "!";
const bot = new Discord.Client({disableEveryone: true});
let coins = require("./coins.json");
bot.on("message", message => {
if (message.author.bot) return;
if (message.channel.type === "dm") return;
if(!coins[message.author.id]) {
coins[message.author.id] = {
coins: 0
};
}
let coinAmt = Math.floor(Math.random() * 70) + 25;
let baseAmt = Math.floor(Math.random() * 15) + 12;
if(coinAmt === baseAmt){
coins[message.author.id] = {
coins: coins[message.author.id].coins + coinAmt
};
fs.writeFile("./coins.json", JSON.stringify(coins), (err) => {
if (err) console.log(err)
});
let coinEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.addField("Excellent! ????", `${message.author}, \`${coinAmt}\` coins added to your balance`)
message.channel.send(coinEmbed)
}
});
bot.on('voiceStateUpdate', (oldMember, newMember) => {
console.log('enter');
if (oldMember.selfMute === true) {
console.log('muted');
}
if (newMember.selfMute === true) {
console.log('muted-2');
}
});
如果您能提供帮助,我将不胜感激,对您来说只需几分钟,而对我来说,这将大有裨益
【问题讨论】:
-
我认为消息上的 fs.writeFile 会导致缓冲区已满后数据丢失,请考虑一些状态并定期同步。然后您可以添加一个刻度(例如精度 1000 毫秒)并为连接的用户消耗一次硬币
nowT - userLastDrainedT > 60s
标签: node.js discord.js