#discord #discord.js
#Discord #discord.js
Вопрос:
Цель: запретить неавторизованных пользователей, которые удаляют участников с моего сервера.
Код:
client.on("guildMemberRemove", async member => {
const FetchingLogs = await member.guild.fetchAuditLogs({
limit: 1,
type: "MEMBER_KICK",
});
const kickLog = FetchingLogs.entries.first();
if (!kickLog) {
return console.log(red(`${member.user.tag} was kicked in ${member.guild.name} but nothing was registered in the audit log...`));
}
const { executor, target, createdAt } = kickLog
if (target.id === member.id) {
console.log(greenBright(`${member.user.tag} got kicked in ${member.guild.name}, by ${executor.tag}`));
} else if (target.id === executor.id) {
return
}
if (executor.id !== client.user.id) {
member.guild.member(executor).ban({
reason: `Unauthorised Kick`
}).then(member.guild.owner.send(`**Unauthorised Kick By:** ${executor.tag} n**Victim:** ${target.tag} n**Time:** ${createdAt.toDateString()} n**Sentence:** Ban.`)).catch();
}
})
Результат: он запрещает исполнителя, но все равно выдает эту ошибку:
(node:10272) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ban' of null
Не могли бы вы рассказать мне, почему это происходит и что я мог бы сделать, чтобы устранить эту ошибку. Вся помощь приветствуется 😉
Ответ №1:
Это оскорбительная строка:
member.guild.member(executor).ban(....
Вы предоставляете member.guild.member объекту-исполнителю, и он возвращает null, затем он пытается вызвать запрет функции для нулевого объекта, и вы получаете ошибку.
Может быть, попробуйте отправить ему executor.id вместо этого, вот так:
member.guild.member(executor.id).ban
Комментарии:
1. Это работает, и он выполняет запрет, но все равно выдает эту ошибку:
(node:1480) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ban' of null
Ответ №2:
Если вы хотите запретить кому-либо членство в гильдии, вы можете сделать это, написав:
member.guild.members.ban(executor.id, { reason: "/* Your reason */" })...
Источники:
- https://discord.js.org/#/docs/main/stable/class/GuildMemberManager?scrollTo=ban
- и мой опыт с discord.js
Комментарии:
1. Это работает, и он выполняет запрет, но все равно выдает эту ошибку:
(node:1480) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ban' of null
2. Можете ли вы предоставить свой новый код? Потому что это не должно вызывать эту ошибку
3. Это буквально то, что вы мне дали:
if (executor.id !== client.user.id) { member.guild.member(executor.id).ban({ reason: `Unauthorised Kick` }).then(member.guild.owner.send(`**Unauthorised Kick By:** ${executor.tag} n**Victim:** ${target.tag} n**Time:** ${createdAt.toDateString()} n**Sentence:** Ban.`)).catch(); }
4. вы совершили ту же ошибку.
if (executor.id !== client.user.id) { member.guild.**member(executor.id)**.ban({
. я пометил это знаком*
. Вам нужно изменить его на:members.ban(executor.id ...