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

Node.js不和谐机器人:打字错误:无法读取未定义的发送属性

马冯浩
2023-03-14

编辑:对那些帮助反馈的人大喊一声,他们对这个场景还是很陌生的,但对它如此着迷,所以我一直在尝试。我启用了一个新的命令处理程序,它似乎提升了我拥有的一切。这在我的代码中是一个普遍的问题,但是如果我能得到这个命令的帮助,我将能够解决所有问题。

我当前的delete命令有问题。它是有效的,但它会抛出错误,我遗漏了一些显而易见的东西。非常感谢您的帮助。我似乎有一个问题,没有定义我想要它做什么,它曾经完美地工作时,我有一个基本的命令汉德勒,但我已经转移到一个更干净的,我知道我只是错过了一些明显的。他妈的差点毁了整个代码想弄明白

错误是:

TypeError: Cannot read property 'send' of undefined
    at Object.execute (C:\Users\Admin\Desktop\discord bot\commands\delete.js:9:56)
    at module.exports (C:\Users\Admin\Desktop\discord bot\events\guild\message.js:17:17)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:\Users\Admin\Desktop\discord bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\Admin\Desktop\discord bot\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)

主要的js

const Discord = require('discord.js');
require('dotenv').config();
const client = new Discord.Client({ partials: ["MESSAGE", "CHANNEL", "REACTION"] });
const fs = require('fs');


client.commands = new Discord.Collection();
client.events = new Discord.Collection();

['command_handler', 'event_handler'].forEach(handler =>{
    require(`./handlers/${handler}`)(client, Discord)
})

client.login(process.env.DISCORD_TOKEN);

命令处理程序

const fs = require('fs');

module.exports = (client, Discord) =>{
    const command_files = fs.readdirSync('./commands/').filter(file => file.endsWith('js'))

    for(const file of command_files){
        const command = require(`../commands/${file}`);
        if(command.name){
            client.commands.set(command.name, command);
        } else {
            continue;
        }
    }
}

我想这是我的执行命令也就是我的message.js

require('dotenv').config();
module.exports = (Discord, client, message) => {
    const prefix = process.env.PREFIX;
    const send = require ('discord.js');

    if(!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const cmd = args.shift().toLowerCase();

    const command = client.commands.get(cmd) || 
        client.commands.find(a => a.aliases && a.aliases.includes(cmd));

    if(command) command.execute(client, message, args, Discord);  

    try {
        command.execute(message, args, cmd, client, Discord);
    } catch (err) {
        message.reply("whoops, shit got fuckity on my backend");
        console.log(err);
    }
}

删除命令


const message = require("../events/guild/message");
module.exports = {
    name: 'delete',
    description: "delete messages",
        execute(client, message, args, Discord) {
            try {
            if (!args[0]) return message.channel.send("type a number with the command doofus");
            if (isNaN(args[0])) return message.channel.send("bruh enter a real number");

            if (args[0] > 100) return message.channel.send("way too much");
            if (args[0] < 1) return message.channel.send("stop tryna be a funny guy")

            return message.channel.messages.fetch({ limit: args[0] }).then(messages => {
                message.channel.bulkDelete(messages);


                message.channel.send("you saw nothing");
            })
     } catch (err) {
            console.log(err);
     }
    }
}

共有1个答案

吴升
2023-03-14

您执行的函数是执行(客户端,消息,参数,不和谐)。因此,第一个参数应该始终是Client

但是,在“message.js”文件中,您写道:

try {
        command.execute(message, args, cmd, client, Discord);
} catch (err) {
        **some code here**
}

在这里,您首先要传递消息,所以参数顺序混乱。通过重新排列参数来修复这个问题,代码应该可以工作。

 类似资料:
  • 因此,我试图编写一个discord bot,它将每个通道中每条消息的名称和id发送到管理通道,但它说它无法读取send的属性?有什么想法吗?(我对javascript比较陌生,但我了解discord.js的基本知识) 我知道它会在一个循环中自动应答,但我只想修复发送。

  • 这是我的整个命令代码,问题是当我移动所有人123132123123(示例通道id)时。该命令工作正常,但给我一个错误的属性“voice”。我一直在尝试错误,但它仍然会给我该错误。每当我

  • 问题内容: 我是Reactjs的新手。我正在尝试做一个非常简单的事情:当用户在文本区域内更改文本时,在render函数中更新div。有什么建议? 问题答案: 您应该绑定该函数。您收到此错误的原因是,在handleChange函数中,键盘操作未引用React类的上下文,因此您需要绑定该函数。 看到这个答案

  • 我搜索了这个网站,发现了类似的问题,但没有解决我的问题。当我滚动到一个div时,我试图使它固定在屏幕顶部。但我一直在犯错误: "(index): 59未捕获类型错误:无法读取未定义的属性'top'at(index): 59" 我还在学习jQuery,不能解决这个问题。

  • 我正在学习JavaScript和库Discord。js/Node。js和我正在构建一个Discord机器人来锻炼自己。 我正在尝试向discord服务器的新成员发送消息。我正在寻找的属性是,我在Discord的wiki上找不到它。js和我有一个错误,说。 所以我决定使用Ii在Discord.js。我也有同样的错误。我不知道如何告诉机器人在新用户第一次加入服务器时向他发送消息。 这是我的密码:

  • 问题内容: 我正在使用jQuery将表单字段发布到PHP文件,该文件仅根据是否工作而返回1/0。 代码摘录: 但是,每次成功(html == 1)时,控制台都会引发错误“未捕获的TypeError:无法读取未定义的属性’defaultView’”,并且警报永远不会发生…? Google似乎没有关于此错误和jQuery的大量信息,谁知道原因? 问题答案: 这是因为以前不是您要处理的内容,现在是jQu