如果有人 ping 一个处于 AFK 状态的成员,它会发送一条消息 | Discord.js / mongodb
Posted
技术标签:
【中文标题】如果有人 ping 一个处于 AFK 状态的成员,它会发送一条消息 | Discord.js / mongodb【英文标题】:If someone ping a member who is AFK it send a message | Discord.js / mongodb 【发布时间】:2021-07-31 02:28:09 【问题描述】:我一直在尝试使用 mongodb 为我的机器人创建一个 afk 和 endafk 命令。我的命令工作正常,但我希望这样当你 ping 一个 afk 的人时,它会发送这样的消息:这个用户当前是 AFK!\ n**$afkReason**,但这不起作用。我一直在尝试修复它,但它仍然不起作用,所以如果有人可以帮助我,那就太好了,谢谢。 这是我的 afk 命令:
const mongoose = require('mongoose')
const db = process.env.DB
mongoose.connect(db)
const Afk = require(process.env.ROOTDIR + '/models/afk.js')
const Discord = require('discord.js')
module.exports.help =
name: "afk",
aliases: ['afk', 'setafk', 'afkset'],
category: 'misc',
description: "Set your activity to afk",
usage: " ",
cooldown: 0,
args: false
;
module.exports.run = async (client, message, args) =>
await message.delete()
let afkReason = args.slice(0).join(" ")
if(!afkReason) return(afkReason = "No reason provided")
const nAfk = new Afk(
username: message.author.tag,
userID: message.author.id,
afkReason: afkReason,
guildID: message.guild.id,
time: message.createdAt.toUTCString()
)
nAfk.save()
.then(result => console.log(result))
.catch(err => console.log(err));
message.reply(`is now afk: **$afkReason.**`)
message.member.setNickname("[AFK] " + message.author.username);
// this is the part where it isnt working
if (message.mentions.member)
message.reply(`This user is currently AFK!\n**$afkReason**`);
祝你有美好的一天。
【问题讨论】:
【参考方案1】:只是一个简单的问题 当你这样做时
if(!afkReason) return(afkReason = "No reason provided")
return 实际上结束了函数(run
函数),之后不会执行任何代码。
所以尝试不使用return
if(!afkReason) afkReason = "No reason provided"
现在你说的实际错误是。
如您所见,message.mentions.member
不存在。应该是message.mentions.members.first()
然后运行find
示例:
if(message.mentions.members.first()
let member = message.mentions.members.first();
Afk.find(
userID: member.user.id
).then( afkstat =>
message.channel.send(`The user is afk.\nReason: $afkstat.afkReason`);
).catch(console.log)
你可能想把它放在chient.on("message", message=> );
函数中
【讨论】:
嗨,嗯,抱歉回答晚了。首先感谢您抽出宝贵时间帮助我。现在,每当我 ping 某人时,它都会说用户是 afk blablabla,即使该用户不是 afk 并且即使我不是afk。你知道如何解决这个问题吗?再次感谢!【参考方案2】::) 您实际上在 afk 命令中检查消息? 您需要输入此代码:
if (message.mentions.member)
message.reply(`This user is currently AFK!\n**$afkReason**`);
内部消息事件,并检查提及的成员是否是 afk ?
希望我的回答对你有帮助:)
【讨论】:
以上是关于如果有人 ping 一个处于 AFK 状态的成员,它会发送一条消息 | Discord.js / mongodb的主要内容,如果未能解决你的问题,请参考以下文章