Как мне заставить моего discord-бота указывать мне, когда кто-то произносит определенную команду?

#discord #discord.js

#Discord #discord.js

Вопрос:

Я некоторое время искал и не нашел окончательного ответа. У меня есть настройка основного кода и все такое, и у меня есть отдельные файлы для каждой команды, так что это мой базовый формат кода. Я просто ищу кого-то, кто может сказать «!alert» в качестве команды, бот ответит «(Имя пользователя) было предупреждено», а затем бот отправит мне DM с «(Имя пользователя) просит вашего внимания». Если вам нужна дополнительная информация, все в порядке, я новичок в этом.

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

Комментарии:

1. Что вы уже пробовали?

Ответ №1:

Команда, которую вы хотите создать, состоит из трех шагов.

  • Вы должны получить свой пользовательский объект через клиент
  • Вы должны отправить сообщение по каналу, по которому была отправлена команда, о том, что вы были предупреждены
  • Затем вы должны фактически отправить dm человеку и отобразить сведения о том, кто отправил команду.

Сначала вам нужно будет получить свой пользовательский объект. Для этого, конечно, вам нужно будет получить доступ к клиенту и его коллекции пользователей. К счастью, вы можете найти свой экземпляр клиента через message объект.

Кроме того, начиная с версии 12, 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 yourself ( owner ) с именем пользователя (хотя я думаю, что тег был бы лучше, так как он также показывает дискриминатор; представьте, сколько людей имеют одинаковое имя пользователя discord) человека, который его отправил. Это можно найти в message.author свойстве.

Вы можете отправлять dm любому, вызывая send() метод для их User GuildMember объектов or, так же, как вы можете вызвать send() метод для любого TextChannel or TextBasedChannel .

 // dm you
owner.send(`${message.author.tag} has requested your attention`);
  

Ссылки:
User -> User.send() -> Message -> Message.author -> User.tag

Ответ №2:

Вы могли бы сделать что-то в этом роде:

 let guild = client.guilds.cache.get('serverID')
let user = guild.members.cache.get('yourUserID')
user.send('message')