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

TypeError:无法读取未定义-Discord bot的属性“get”

魏鹤轩
2023-03-14

(新手在编码,我只是按照教程,并尝试理解和学习的同时)我最近想编码我自己的不和谐机器人,但我有一个问题的事件处理程序部分,所以我尝试了另一种方法,但现在我有另一个问题。

它没有用“砰”来回应“砰!砰”,而是说:

客户命令。获取('ping')。执行(消息,args)^

TypeError:无法读取未定义的属性“get”

反对。执行(…/events/message.js:18:23)

在客户端。

我也试着替换

client.commands.get('ping')。执行(消息,参数);with

客户端。命令。隐藏物获取('ping')。执行(消息,args) 甚至客户端。命令。查找('ping')。执行(消息,args) 但是它说“TypeError:无法读取未定义的-Discord bot的属性'get'”甚至

主文件:

const Discord = require('discord.js');

const config = require('./config.json');
const {prefix, token} = require('./config.json')


const client = new Discord.Client();
client.commands = new Discord.Collection();



const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
    const event = require(`./events/${file}`);
    if (event.once) {
        client.once(event.name, (...args) => event.execute(...args));
    } else {
        client.on(event.name, (...args) => event.execute(...args));
    }
};


const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    // set a new item in the Collection
    // with the key as the command name and the value as the exported module
    client.commands.set(command.name, command);
};

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

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

  if (!client.commands.has(command)) return;

    try {
        client.commands.get(command).execute(message, args);
    } catch (error) {
        console.error(error);
        message.reply('there was an error trying to execute that command!');
    }
});


client.login(token);

client.on("ready", () => {
  client.user.setPresence({
      activity: { 
      name: 'p!',
      type: 'WATCHING'
      },status: 'idle'
  });
});

消息js:

const client = new Discord.Client();
const prefix = 'p!';

module.exports = {
   name: 'message',
    execute(message) { 
      
    console.log(`${message.author.tag} in #${message.channel.name} sent: ${message.content}`);

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

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

    if (command === 'ping'){
      client.commands.get('ping').execute(message, args);
    } else if (command === 'help'){
      client.commands.get('trick').execute(message, args);
     } 
   }
};

ping.js:

module.exports = {
    name: 'ping',
    description: 'Ping!',
    execute(message, args) {
        message.channel.send('pong');
    },
};

我希望我提供的信息是有帮助的。如果是一个小错误,例如缺少


共有2个答案

鱼征
2023-03-14

找到了这样一种更简单的方法,无需键入新行(if(command=='ping'){client.commands.get('ping').execute(message,args);

这就是我要传达的信息。js文件现在看起来像:

const client = new Discord.Client();
client.commands = new Discord.Collection();


module.exports = (Discord, client, message) => {
  const {prefix} = require('../config.json');
  if(!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().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);

    
};
东门涵育
2023-03-14

我改变了

if(命令=='ping'){with

if(command==`${prefix}ping`){

它的工作原理,我想我只需要做所有的命令。如果你有一个更简单的解决方案,请随时分享,或者如果你发现了代码的问题,请告诉我。(

谢谢你们

 类似资料:
  • 我被困在这个错误上:类型错误:无法读取未定义的属性'getText'当我在量角器v.4.0.14中运行我的测试时,我所理解的是getText()无法从表单元格中获取文本,因为CSS选择器没有正确地选择它,或者我使用错误的方法从单元格检索文本?! 我的页面对象文件的代码: 以下是规范文件的代码: 这是一条错误消息: 失败:1)通讯录应能够搜索保存的联系人消息:失败:无法读取未定义堆栈的属性“getT

  • 如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')

  • 问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下

  • 我试图使用node.js express web服务器中的@tensorflow/tfjs-node模块。但是,我得到了下面的错误。我不明白为什么我会出现这个错误。我刚刚在node.js服务器中添加了1行代码。我使用“npm install@tensorflow/tfjs-node”完成的安装。可能的问题是什么? null 先谢谢你, var nonMaxSuppressionV3Impl=tf.

  • 我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat

  • 上面的函数返回一个类似“failed”的字符串。但是,当我尝试在其上运行then函数时,它将返回 并且光标指示在之后和。 下面是完整的功能: 更新 下面是函数 我确信将导致一个“failed”字符串。没别的了。

  • 无法显示Barchart。 我有一个包含数据的表,它是可拖动的。在表格旁边我有一个两个dropbox被拖动的表格中的数据可以被拖动到框中。当将数据拖动到框中时,应该会显示条形图。 这是我的家。component.html 这是我的家。Component.TS 这是我的酒吧 在拖放数据时,特定的图表必须显示在Dropbox上。

  • app.js 我在代码中使用了express,得到的错误如下 TypeError:无法读取未定义的属性'msg'at F:\Priyansh\Coding Playground\Web Development\Blog\app.js:36: 26 at Layer.handle[作为handle_request](F:\Priyantu\Coding Playground\Web Developm