【问题标题】:TypeError: Cannot read property 'ban' of null | Discord.jsTypeError:无法读取 null 的属性“禁令”|不和谐.js
【发布时间】:2021-04-14 15:03:33
【问题描述】:

目的:禁止未经授权的用户将成员踢出我的服务器。

代码:

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

您能否告诉我为什么会发生这种情况以及我可以如何消除此错误。感谢所有帮助;)

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    如果你想禁止某人加入公会,你可以通过以下方式来做到这一点:

    member.guild.members.ban(executor.id, { reason: "/* Your reason */" })...
    

    来源:

    【讨论】:

    • 这行得通,它执行了禁令,但仍然抛出这个错误:(node:1480) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ban' of null
    • 你能提供你的新代码吗?因为这不应该抛出这个错误
    • 这就是你给我的: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(); }
    • 你犯了同样的错误。 if (executor.id !== client.user.id) { member.guild.**member(executor.id)**.ban({。我用* 标记了它。您需要将其更改为:members.ban(executor.id ...
    【解决方案2】:

    这是违规行:

    member.guild.member(executor).ban(....
    

    你提供 member.guild.member 一个执行器对象,它返回 null,然后它尝试对一个 null 对象调用函数 ban 并且你得到错误。

    也许尝试将 executor.id 发送给它,如下所示:

    member.guild.member(executor.id).ban
    

    【讨论】:

    • 这行得通,它执行了禁令,但仍然抛出这个错误:(node:1480) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ban' of null
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 2021-05-18
    • 2023-03-30
    • 2021-04-29
    • 2020-11-10
    • 2020-11-11
    • 2021-04-15
    • 2021-05-10
    相关资源
    最近更新 更多