#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
. Нужно ли мне инициализировать кеш или что-то в этом роде?