удаление пользователя больше не работает, discord.js

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

Вопрос:

Поэтому я сделал простую команду для пользователей dming, которые находятся на том же сервере, что и бот, некоторое время назад, и она всегда работала нормально, но сейчас по какой-то причине выдает эту ошибку:

 throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Unknown User
    at RequestHandler.execute (C:UsersTommasoDocumentsGitHubbbq-botnode_modulesdiscord.jssrcrestRequestHandler.js:298:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:UsersTommasoDocumentsGitHubbbq-botnode_modulesdiscord.jssrcrestRequestHandler.js:50:14)
    at async UserManager.fetch (C:UsersTommasoDocumentsGitHubbbq-botnode_modulesdiscord.jssrcmanagersUserManager.js:69:18) {
  method: 'get',
  path: '/users/55427571831406634',
  code: 10013,
  httpStatus: 404,
  requestData: { json: undefined, files: [] }
}
 

Код здесь:

 module.exports = {
    name: 'dm',
    description: 'dms a user',
    async execute(message, args, client, config) {

        // Variables and Conditions
        const dmToSend = args.slice(1).join(" ");
        const attachmentToSend = message.attachments.map(att => att.url);

        if (message.author.id !== config.ownerid)
            return message.channel.send("This command is for the bot owner only")

        if (!args[0]) return message.channel.send("Please put a user id")

        if (message.attachments.size == 0) {

            client.users.fetch(args[0]).then((user) => {
                user.send({ content: dmToSend })
            })

        } if (message.attachments.size !== 0) {

            client.users.fetch(args[0]).then((user) => {
                user.send({ content: dmToSend   attachmentToSend })
            })

        }

    }
}
 

Это всегда работало хорошо, как я и говорил, и я не понимаю, что происходит, я думаю, это из-за изменений в клиенте в djs v13, на случай, если в этом проблема, вот мои намерения:
const client = new Client({ intents: ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES"], partials: ["CHANNEL"] });

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

1. Привет, Томмазо, код ошибки 10013 (на плохой операционной системе Windows) обычно является ОШИБКОЙ СОКЕТА. Это может быть вообще не связано с Discord.js

2. Действительно странно, я никогда не сталкивался с ошибкой, происходящей из Windows, из-за того, что я помню

3. DiscordAPIError: Unknown User означает, что идентификатор пользователя неверен (или пользователь не существует)… Идентификаторы Discord в основном состоят из 18 символов, но у вас 17. Вы уверены, что это существующий идентификатор пользователя?

4. Добавьте MESSAGE также часть или удалите все вместе, вы также упускаете GUILD_MEMBERS из виду намерение

5. @Переменная я добавил MESSAGE частичное и GUILD_MEMBERS , клиент теперь выглядит так: const client = new Client({ intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MEMBERS", "DIRECT_MESSAGES"], partials: ["CHANNEL", "MESSAGE"] }); Но он все равно выдает ошибку, я также включил намерения выхода в своем приложении discord, по-прежнему ничего

Ответ №1:

Бот не может отправить сообщение пользователю, если этот пользователь не состоит в одной гильдии с вашим ботом.

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

1. 1. Это привело бы к другой ошибке. 2. ОП сказал i made a simple command for dming users that are in the same server as the bot .

2. Попробуйте удалить блок выборки, просто найдите этого пользователя в кэше

Ответ №2:

вместо client.users.fetch() того, чтобы попробовать это

 const user = await message.client.users.fetch(args[0].replace(/D/g, '')).catch(() => { });
if (!user) return message.channel.send({ content: 'No user found' }); // if the id or mention is not valid throw an error

// the regex allows you to provide both mentions and userID as parameters

user.send({ content: 'test' });```