首页 > 解决方案 > Discord.js - AFK 在一个小时左右后消失

问题描述

我有一个 AFK 命令,它工作得很好。它设置AFK,它在ping 时提醒用户是AFK,当用户发送另一条消息时它会删除AFK。但有个问题。出于某种原因,机器人会在一个小时左右后删除 AFK。只是完全消失了:没有提醒,没有任何东西,甚至没有删除 AFK!我想知道为什么会这样

const db = require(`quick.db`)

if (db.has(message.author.id + '.afk')) {
  let currentNickname = message.member.displayName
  let newNickname = currentNickname.replace(`[AFK]`, ``);
  message.channel.send(`Welcome Back ${message.author}!`).then(message => {
    message.delete({ timeout: 15000 })
  })
  message.member.setNickname(newNickname).catch(error => false);
  db.delete(message.author.id + '.afk')
  db.delete(message.author.id + '.messageafk')
  db.delete(message.author.id + '.time')
}
if(message.content.toLowerCase().startsWith('>afk')) {
  let reason = message.content.split(' ').slice(1).join(' ')
  if(!reason) reason = `AFK`
  let nickname = message.member ? message.member.displayName : null;
  message.member.setNickname(`[AFK] ${nickname}`).catch(error => false);
  db.set(message.author.id + '.afk', 'true')
  db.set(message.author.id + '.messageafk', reason)
  db.set(message.author.id + '.time', Date.now())
  message.channel.send(`${message.author}, AFK Set: ${reason}`)
}
message.mentions.users.forEach(user => {
  let timestamp = db.get(user.id + '.time')
  let timeAgo = moment(timestamp).fromNow()
  if (db.has(user.id + '.afk')) message.channel.send(user.username + ` Is AFK: ` + db.get(user.id + '.messageafk') + `
        - ${timeAgo}`)
})

标签: javascriptnode.jsdiscorddiscord.js

解决方案


推荐阅读