当前位置: 首页 > 知识库问答 >
问题:

不一致jsunban命令

艾鹭洋
2023-03-14

我得到了一个unban命令代码,在控制台中出现以下错误:

(节点:9348)未处理的PromisejectionWarning:TypeError:无法读取未定义的at对象的属性“member”。在客户端执行(C:\Users\19nik\Documents\GitHub\bot project\commands\unban.js:9:22)。(C:\Users\19nik\Documents\GitHub\bot project\gb.js:81:17)位于客户端。在MessageCreateAction处发出(events.js:315:20)。在对象上处理(C:\Users\19nik\Documents\GitHub\bot project\node\u modules\discord.js\src\client\actions\MessageCreate.js:31:14)。单元在WebSocketManager上导出[作为消息\u创建](C:\Users\19nik\Documents\GitHub\bot project\node\u modules\discord.js\src\client\websocket\handlers\MESSAGE\u CREATE.js:4:32)。WebSocketShard上的HandlePack(C:\Users\19nik\Documents\GitHub\bot project\node\u modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)。WebSocketShard上的onPacket(C:\Users\19nik\Documents\GitHub\bot project\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)。websocket上的消息(C:\Users\19nik\Documents\GitHub\bot project\node\u modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)。WebSocket上的onMessage(C:\Users\19nik\Documents\GitHub\bot project\node\u modules\ws\lib\event target.js:132:16)。发出(events.js:315:20)

这是我的代码:

const { MessageEmbed } = require('discord.js');
const fs = require("fs");

module.exports = {
    name: `unban`,
    description: `Unbans given user ID or mentioned user.`,
    async execute(bot, args, message) {

        if (!message.member.hasPermission(["BAN_MEMBERS"])) return message.channel.send("You do not have the required permissions to use the unban command.")

        if (!args[0]) return message.channel.send("Provide me a valid USER ID.");
        //This if() checks if we typed anything after "!unban"

        let bannedMember;
        //This try...catch solves the problem with the await
        try {
            bannedMember = await bot.users.cache.fetch(args[0])
        } catch (e) {
            if (!bannedMember) return message.channel.send("That's not a valid USER ID.")
        }

        //Check if the user is not banned
        try {
            await message.guild.fetchBan(args[0])
        } catch (e) {
            message.channel.send('This user is not banned.');
            return;
        }

        let reason = args.slice(1).join(" ")
        if (!reason) reason = "No reason provided."

        if (!message.guild.me.hasPermission(["BAN_MEMBERS"])) return message.channel.send("I am missing permissions to unban.")
        message.delete()
        try {
            message.guild.members.unban(bannedMember, { reason: reason })
            message.channel.send(`${bannedMember.tag} has been unbanned.`)
            console.log(`AUDIT LOG: [UNBAN] ${message.author.tag} unbanned ${member.user.tag} from ${message.guild.name}.`);
            var readmessagefile = fs.readFileSync('./logging/UnbanLog.txt', 'utf-8');
            var writemessagefile = fs.writeFileSync('./logging/UnbanLog.txt', 'Type: [UNBAN] ' + 'Time ' + '(' + message.createdAt + ')' + ' | ' + member.user.tag + ' from ' + message.guild.name + ' | Moderator ' + message.author.tag + '\n' + readmessagefile)
            console.log('BOT LOG: [INTERNAL] Writing to unban log file.');
        } catch (e) {
            console.log(e.message)
        }
    }
}

我不知道该怎么办。它还会弹出一个错误,无法读取未定义的属性'has权限'。

共有3个答案

颜功
2023-03-14

两个可能的原因:

回拨电话

确保execute()的参数与主文件中的顺序完全一致

命令在公会之外使用

发生错误的原因可能是命令在公会外部使用来修复此问题。请将此添加到下面的代码执行()

if (!message.guild) return;
柳项明
2023-03-14

第9行好像有错误

if (!message.member.hasPermission(["BAN_MEMBERS"])) return message.channel.send("You do not have the required permissions to use the unban command.")

没有错误,可能命令是在DMS中运行的?可能使用:

if(!message.guild) return;

这应该可以解决问题。

魏康安
2023-03-14

我相信你的问题的主要来源是你的回调,在消息参数之前先调用你的客户端。由于JS对回调参数放置很敏感,所以您应该将回调写成以下内容:

async execute(message, args, bot)
 类似资料:
  • 上面的代码正在运行。 我没有得到任何错误,但我也希望机器人显示他们是afk的原因,当他们提到。有人能帮忙吗?

  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!

  • 我正在尝试修复我今天遇到的一个错误,错误如下: C:\用户\nalfo\OneDrive\桌面\不和谐机器人\NetSync\命令\审核\ban.js:15let{user}=message.mentions.members.first () || message.guild.members.get(参数[0]);^ TypeError:无法对(message.indications.member

  • 它在给定时间仅显示一个命令 如果我写或它不会工作,但如果我写它会输出 如果我切换前面的字符,它将变为或不起作用,但是工作和说再见

  • 我目前正试图将静音功能编程到discord机器人上。它已启用服务器权限“静音成员”。 这是每当我调用mute命令时运行的代码: 因此,此代码的连续调用应该切换为静音,但message.channel.send.每次都会发送false,表明该成员从未静音。我不清楚静音功能是如何与不和谐一起工作的。我在某处读到它是基于角色的——如果是这样,那么setMute()命令的意义是什么? 文档:https:/

  • 我正在写一个不和谐机器人游戏,我的问题是玩家必须创造一个角色。然而,每个标准的人都有名字和姓氏,但我在一个命令中接受其他输入。我的问题是,我不确定我的代码是否会在确实放置引号的情况下忽略名称周围的引号。 假设有人给他们的角色命名为乔·什莫。当他们输入命令时,我担心我的参数解释器可能会将“Joe”作为args[0],“Shmoe”作为args[1],将Male作为args[2],将38作为args[