【问题标题】:TypeError [INVALID_TYPE]: Supplied options is not an object error when trying to ban someoneTypeError [INVALID_TYPE]:尝试禁止某人时提供的选项不是对象错误
【发布时间】:2021-09-16 12:18:36
【问题描述】:

我的禁令命令会检查用户是否可被封禁,然后将其封禁。我的踢球做同样的事情,但它确实有效。禁止消息发送,因此用户可以被禁止,但实际上并没有被禁止。这是我的代码

if (memberTarget.bannable) {
            if (
              message.member.roles.highest.position >
              message.guild.members.cache.get(target.id).roles.highest.position
            ) {
              target.ban(reason);
              let banReason = new Discord.MessageEmbed()
                .setDescription(`**${target.user.tag}** has been banned.`)
                .addField("Reason:", `${!reason ? "Unspecified" : `${reason}`}`)
                .setFooter(
                  `banned by ${message.author.tag}`,
                  "https://cdn.discordapp.com/attachments/375020097431011328/881012463645126686/3dgifmaker15131.gif"
                )
                .setColor("#000000");
              message.reply({ embeds: [banReason] }).catch((err) => {
                message.channel.send({ embeds: [banReason] });
              });
            }

我的问题是每次我试图去踢某人时,我都会得到错误:

if (!memberTarget.bannable) {
            let lowPerms = new Discord.MessageEmbed()
              .setDescription(
                `<:role:887134365476335626> I lack the required permission to ban **${target.user.tag}**.`
              )
              .setColor("#000000");
            message.reply({ embeds: [lowPerms] });
          }

即使我尝试踢没有角色的人并且我的机器人具有管理权限,也会发生这种情况。 实际错误本身:

C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\managers\GuildBanManager.js:142
    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);     
                                           ^

TypeError [INVALID_TYPE]: Supplied options is not an object.
    at GuildBanManager.create (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\managers\GuildBanManager.js:142:44)
    at GuildMemberManager.ban (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\managers\GuildMemberManager.js:364:28)
    at GuildMember.ban (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\structures\GuildMember.js:299:31)
    at Object.execute (C:\Users\\Documents\GitHub\omex\commands\ban.js:32:22)
    at Client.<anonymous> (C:\Users\\Documents\GitHub\omex\index.js:133:20)
    at Client.emit (node:events:394:28)
    at MessageCreateAction.handle (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\client\actions\MessageCreate.js:23:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)  
    at WebSocketShard.onPacket (C:\Users\\Documents\GitHub\omex\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22) {        
  [Symbol(code)]: 'INVALID_TYPE'
}

【问题讨论】:

  • 您的问题目前尚不清楚,您能否提供更多详细信息,例如实际错误的来源(您的标题中的错误)及其堆栈跟踪?
  • 已编辑。对此感到抱歉。

标签: discord discord.js


【解决方案1】:

所附的错误来自此特定行:

target.ban(reason)

GuildMember#ban([options]) 如果需要使用选项调用,则选项必须是一个选项数组/对象,就像这样


    target.ban({
        reason: `${!reason ? "Unspecified" : `${reason}`}`
     });

【讨论】:

    【解决方案2】:

    NodeJS 吓坏了,因为我猜你传递给target.ban()reason 是一个字符串,而不是一个对象。在 discord.js 中,您必须在 GuildMember#ban() 方法中提供一个对象,如下所示:

    target.ban({ reason });
    

    您还可以选择要删除多少天(0-7 天)的消息,如下所示:

    target.ban({ days: 7, reason }); // Deletes all messages the member banned sent within the past 7 days
    

    【讨论】:

    • 我不知道你也可以删除过去的消息。是否有 100 条类似于 message.delete 的消息的限制,有没有办法在审核日志中显示消息的作者?
    • afaik 禁止删除的邮件数量没有限制,最多 7 天(我也不知道在审核中显示邮件作者是什么意思日志 - 被禁止的人是您要删除其消息的人)
    • 有一个限制!机器人最多只能删除用户在 iirc 2 周内发送的消息,即使没有选项,只要默认为 14 天
    • @chicken 我的意思是Banned by 消息,但我只是添加了reason: `${!reason ? "unspecified" : `${reason}`} || by ${message.member.user.tag}`,这表明了作者的原因。我唯一的问题是显示我的禁令命令而不是我的踢的原因,我什至尝试将禁令复制并粘贴到踢命令中并编辑代码。相反,由于某种原因,我得到了[object Object]
    • @Zero wdym?文档说您最多只能删除 7 天,如果您不提供该选项,则默认为 0
    猜你喜欢
    • 2020-08-10
    • 2020-07-22
    • 2021-11-15
    • 2015-01-19
    • 1970-01-01
    • 2021-08-13
    • 2021-08-10
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多