Я попытался поставить ошибку перехвата, если пользователь не получил сообщение, но по какой-то причине я получаю сообщение об ошибке
client.on('guildMemberAdd', member => {
const linkId = pool.createLink(member.id);
const embed = new Discord.MessageEmbed()
.setTitle('reCAPTCHA Verification')
.setDescription(`To gain access to this server you must solve a captcha. The link will expire in 15 minutes.\nhttp://${domain == '' ? 'localhost:8050' : domain}/verify/${linkId}`)
.setColor('YELLOW');
member.send(embed)
} catch (e) {
console.info(`Error adding role to user ${discordId}.`)
}
получить ошибку отсутствия ","
добавил "," }, catch (e) {
а затем я получаю ожидаемое выражение аргумента.
Проблема
Ошибка, вероятно, связана с тем, что ваш код вообще неправильно отформатирован? У вас есть функция member => {}
, а затем у вас есть catch
сразу после функции, и вы даже не закрываете скобки client.on()
.
Ваша программа правильно понимает совершенно неправильный синтаксис так же невозможно, как говорить тарабарщину кому-то, кто говорит на другом языке, и ожидать, что они поймут вас. При изучении нового языка вам необходимо знать о новых правилах грамматики, словарном запасе и многом другом, которые могут сильно отличаться от вашего родного языка. Это относится и к языкам программирования; javascript очень гибкий, но ваша программа не сможет расшифровать чрезвычайно неточный синтаксис (что эквивалентно тарабарщине для программы).
Пожалуйста, попробуйте узнать больше об операторах try/catch
, функциях javascript, синтаксических ошибках и правильном синтаксисе. Это чрезвычайно простая проблема с форматированием, и такие вопросы действительно не должны присутствовать в StackOverflow. Просмотр некоторых базовых руководств по javascript, быстрое исследование (возможно, даже просмотр некоторых примеров ботов) и/или выполнение одного поиска в Google могли бы решить вашу проблему за считанные секунды.
Решение
Это правильный, более точный синтаксис:
client.on('guildMemberAdd', member => {
const linkId = pool.createLink(member.id);
const embed = new Discord.MessageEmbed()
.setTitle('reCAPTCHA Verification')
.setDescription(`To gain access to this server you must solve a captcha. The link will expire in 15 minutes.\nhttp://${domain == '' ? 'localhost:8050' : domain}/verify/${linkId}`)
.setColor('YELLOW');
member.send(embed).catch(() => {console.info("Couldn't send message.")});
});
Это, конечно, при условии, что форматирование было реальной проблемой, и вы не просто плохо отформатировали его при добавлении кода к своему вопросу. Если он был плохо отформатирован в вашем вопросе и правильно отформатирован в вашем фактическом коде, то проблема даже не присутствует в предоставленном вами коде (в этом случае на ваш вопрос нельзя даже ответить, если вы не предоставите правильный код).
Оператор catch этого ответа должен перехватывать ошибку, когда пользователи заблокировали DM.
я получаю сообщение об ошибке
DiscordAPIError: Cannot send messages to this user
at RequestHandler.execute (C:\Users\Administrator\Desktop\GRPIL-BOT\src\DiscordVerification-master\DiscordVerification-master\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (node:internal/process/task_queues:93:5)
at async RequestHandler.push (C:\Users\Administrator\Desktop\GRPIL-BOT\src\DiscordVerification-master\DiscordVerification-master\node_modules\discord.js\src\rest\RequestHandler.js:39:14) {
method: 'post',
path: '/channels/790342794140975115/messages',
code: 50007,
httpStatus: 403
}
который
try {
const linkId = pool.createLink(member.id);
const embed = new Discord.MessageEmbed()
.setTitle('reCAPTCHA Verification')
.setDescription(`To gain access to this server you must solve a captcha. The link will expire in 15 minutes.\nhttp://${domain == '' ? 'localhost:8050' : domain}/verify/${linkId}`)
.setColor('YELLOW');
member.send(embed)
} catch (e) {
console.info(`Error adding role to user ${discordId}.`)
}
следует избегать ошибки
Это не ответ. Не ответ, обновите свой вопрос.
все еще получает ошибку, когда пользователи блокируют dms с сервера