Используя node.js и тот discord.js библиотека для отправки сообщений пользователям, когда я запускаю команду, но она начинает работать только после того, как целевой пользователь запускает команду

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Как я уже сказал в названии, я пытаюсь создать Discord-бота, который отправляет сообщения пользователю при выполнении команды. Однако это работает только после того, как целевой пользователь сам запускает команду. После того, как они запустят команду. Я могу запустить ее, и она отправляет им сообщения. Если я перезапущу бота, целевому пользователю необходимо выполнить команду, чтобы она снова заработала. Почему это происходит? Я предполагаю, что можно сделать так, чтобы им не нужно было сначала запускать команду.

Код, который я использую, таков:

 if (cmd === "cmd1"){
  bot.users.get("<user1ID>").send("Message");     
}

if (cmd === "cmd2"){
  bot.users.get("<user2ID").send("<Message>");
}
 

Если я попытаюсь запустить, скажем, cmd1, до того, как пользователь1 запустит cmd1, в консоли появится сообщение об ошибке «Ошибка типа: не удается прочитать свойство «отправить» неопределенного». Бот и пользователи находятся на общем сервере. Мне кажется, проблема в том, что пользователи не кэшируются, пока пользователь сам не запустит команду. Я бы хотел, чтобы это было так, чтобы я мог запускать команду для отправки сообщений людям без необходимости делать это в первую очередь. Цель состоит в том, чтобы уведомить несколько человек о предварительно настроенном сообщении.

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

1. С помощью .cache отображается ошибка не удается прочитать свойство ‘get’ неопределенного, а без .cache говорится, что не удается прочитать свойство ‘send’ неопределенного.

Ответ №1:

Из-за Discord.js V12, вам нужно добавить a cache при выборке членов по идентификаторам

 bot.users.cache.get("<user1ID>").send("Message");
 

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

1. Теперь его высказывание TypeError: Cannot read property 'get' of undefined . Нужно ли мне инициализировать кеш или что-то в этом роде?