当有人说出特定命令时,我如何让我的不和谐机器人DM出现?

时间:2020-10-11 02:59:22

标签: discord discord.js

我搜索了一段时间,但没有找到明确的答案。我有主要的代码设置以及所有这些内容,并且每个命令都有单独的文件,所以这是我的基本代码格式。我只是在寻找能够说“!alert”作为命令的人,该机器人将以“(用户名)已被警告”作为响应,然后该机器人将以“(用户名)已引起您的注意”来管理自己。如果大家都需要更多信息,那很好,我是新手。

module.exports = {
    name: 'alert',
    description: "alert",
    execute(message, args){
      '#code goes here obv'
    }
}

2 个答案:

答案 0 :(得分:1)

要构建的命令分三个步骤。

  • 您必须通过客户端获取用户对象
  • 您必须在发送命令的频道中发送一条消息,告知您收到警报
  • 然后您必须实际使人员dm并显示发送命令者的详细信息。

首先,您需要获取用户对象。为此,当然,您必须访问客户端及其用户集合。幸运的是,您可以通过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属性中找到。

您可以通过在他们的UserGuildMember对象上调用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')