#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' });```