【问题标题】:TypeError: Discord.UserManager.resolve is not a function Discord.JSTypeError:Discord.UserManager.resolve 不是一个函数 Discord.JS
【发布时间】:2021-10-15 08:31:14
【问题描述】:

我有一个使用斜杠命令的 Discord 机器人,我正在执行禁止命令。我正在使用Discord.UserManager.resolve() 将 Discord 用户的 ID 或 GuildMember 解析为 User 对象。但是,当我尝试使用 Discord.UserManager.resolve() 时,它会返回错误 TypeError: Discord.UserManager.resolve is not a function

注意:机器人使用存储在单独文件夹中的命令文件。这是module.exports

const Discord = require('discord.js')
module.exports = {
    name: 'ban',
    description: 'Ban a person from the guild.',
    options: [
        {
            name: 'byid',
            description: 'Ban a member using their unique UserId, whether they are in the guild or not.',
            type: 1,
            options: [
                {
                    name: 'id',
                    required: true,
                    description: 'The user\'s ID.',
                    type: 'STRING'
                },
                {
                    name: 'reason',
                    required: false,
                    description: 'The reason why you banned the user.',
                    type: 'STRING'
                }
            ]
        },
        {
            name: 'bymention',
            description: 'Ban a user by @mentioning them.',
            type: 1,
            options: [
                {
                    name: 'member',
                    required: true,
                    description: 'The member to ban.',
                    type: 'USER'
                },
                {
                    name: 'reason',
                    required: false,
                    description: 'The reason why you banned the user.',
                    type: 'STRING'
                }
            ]
        }
    ],
    permissions: [
        {
          id: '784539540101660712',
          type: 1,
          permission: true,
        }
      ],
    defaultPermission: false,
    async execute(interaction, bot) {
        console.log(interaction.options)
        let member = 0
        try {
            // member
            member = interaction.options.get('member').member
        } catch (error) {
            // id
            member = interaction.options.get('id').value
        }
        if (!bot.guilds.cache.get('784526382788771870').me.permissions.has(Discord.Permissions.FLAGS.BAN_MEMBERS, true)) {
            interaction.reply('I don\'t have permission to ban members! Please contact an administrator or add the `BAN MEMBERS` permission on my role. ')
            return
        }
        member = Discord.UserManager.resolve(member)
        if (member.id === 856263292872163348) {
            interaction.reply('You want to ban me after all my hard work? What a disgrace.')
            return
        }
        if (member.bannable === true || interaction.guild.members.fetch(member)) {
            interaction.guild.members.ban(member, { reason: reasonval })
            interaction.reply(`Success! ${member.tag} was banned for ${reasonval}.`)
        } else interaction.reply('I can\'t ban this user. Make sure I have the BAN MEMBERS or ADMINISTRATOR permission, and my highest role is higher than the user\'s highest role.')
        
}

【问题讨论】:

  • 被禁止的成员输入为 GuildMember(使用interaction.options.get('member').member)或UserId,我需要以任何一种方式将其解析为User。
  • 快速提示:if (member.id === 856263292872163348) 必须更改!成员 ID 是字符串,由于 JavaScript 具有最大安全数,因此该数字实际上并不是您在此处看到的数字。请把它变成一个字符串

标签: node.js discord discord.js


【解决方案1】:

UserManager.resolve 不是静态函数(它不会在类本身上被调用)。您可能打算改为在 Client.users 上调用它。

member = bot.users.resolve(member)
//I assume bot is your client

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 2020-07-23
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2020-12-07
    • 2020-08-23
    • 2020-01-22
    相关资源
    最近更新 更多