我搜索了一段时间,但没有找到明确的答案。我有主要的代码设置以及所有这些内容,并且每个命令都有单独的文件,所以这是我的基本代码格式。我只是在寻找能够说“!alert”作为命令的人,该机器人将以“(用户名)已被警告”作为响应,然后该机器人将以“(用户名)已引起您的注意”来管理自己。如果大家都需要更多信息,那很好,我是新手。
module.exports = {
name: 'alert',
description: "alert",
execute(message, args){
'#code goes here obv'
}
}
答案 0 :(得分:1)
要构建的命令分三个步骤。
首先,您需要获取用户对象。为此,当然,您必须访问客户端及其用户集合。幸运的是,您可以通过message
对象找到您的客户端实例。
此外,从v12开始,discord.js使用Managers
,这意味着我们在尝试获取用户详细信息之前必须使用cache属性。请记住将找到的对象放在变量中,因为我们将不止一次使用它。
// your user object
const owner = message.client.users.cache.get('Your ID Here');
链接:
Message
-> Message.client
-> Client.users
-> UserManager.cache
-> Collection.prototype.get()
现在,您需要向该频道发送一条确认消息,您可以使用普通的message.channel.send()
。但是,您还希望在消息中显示您的用户名。
由于您总是会收到警报的,因此您可以写下您的用户名...但这不是很有趣,所以我建议您通过owner
对象获得它。
// send the message to the channel
message.channel.send(`${owner.username} has been alerted.`);
链接:
Message
-> Message.channel
-> TextChannel.send()
-> User.username
最后,您必须使用用户名dm(owner
)(尽管我认为该标记会更好,因为它也显示了鉴别符;请想象有多少人使用相同的用户名)发送者的身份。可以在message.author
属性中找到。
您可以通过在他们的User
或GuildMember
对象上调用send()
方法来给dm,就像您可以在任何TextChannel
上调用send()
方法一样或TextBasedChannel
。
// dm you
owner.send(`${message.author.tag} has requested your attention`);
链接:
User
-> User.send()
-> Message
-> Message.author
-> User.tag
答案 1 :(得分:0)
您可以按照以下方式进行操作:
let guild = client.guilds.cache.get('serverID')
let user = guild.members.cache.get('yourUserID')
user.send('message')