TypeError: Cannot read properties of undefined (reading 'execute') 发生每当我点击按钮

编程入门 行业动态 更新时间:2024-10-05 13:20:30

TypeError: Cannot read properties of undefined (reading 'execute') 发生每<a href=https://www.elefans.com/category/jswz/34/1771369.html style=当我点击按钮"/>

TypeError: Cannot read properties of undefined (reading 'execute') 发生每当我点击按钮

我做了这个库存命令并且它起作用了,按钮显示了。但是每当我点击按钮时,它都会给我一个错误

TypeError: Cannot read properties of undefined (reading 'execute')
    at Client.<anonymous> (F:\DISCORD_WWW\index.js:58:17)
    at Client.emit (node:events:525:35)
    at InteractionCreateAction.handle (F:\DISCORD_WWW\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
    at module.exports [as INTERACTION_CREATE] (F:\DISCORD_WWW\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
    at WebSocketManager.handlePacket (F:\DISCORD_WWW\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31)
    at WebSocketShard.onPacket (F:\DISCORD_WWW\node_modules\discord.js\src\client\websocket\WebSocketShard.js:494:22) 
    at WebSocketShard.onMessage (F:\DISCORD_WWW\node_modules\discord.js\src\client\websocket\WebSocketShard.js:328:10)
    at callListener (F:\DISCORD_WWW\node_modules\ws\lib\event-target.js:290:14)
    at WebSocket.onMessage (F:\DISCORD_WWW\node_modules\ws\lib\event-target.js:209:9)
    at WebSocket.emit (node:events:513:28)

这是库存代码

const { SlashCommandBuilder } = require('discord.js');
const discord = require("discord.js");
const { QuickDB } = require("quick.db");
const db = new QuickDB();
const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('inventory')
        .setDescription('See the list of all commands or specific info of a command')
        .addUserOption(option => option.setName('user').setDescription('The user to display information about.')),
    async execute(interaction) {
        const user = interaction.options.getUser('user') || interaction.user;
        const userInventory = await db.get(`inventory.${user.id}`);
        if (!userInventory) {
        return interaction.reply('inventory is empty.');
        }

        const inventoryEntries = Object.entries(userInventory);
        const inventoryStrings = inventoryEntries.map(([itemName, quantity]) => {
        return `- ${quantity} ${itemName}(s)`;
        });

        const PAGE_SIZE = 10;
        const numPages = Math.ceil(inventoryStrings.length / PAGE_SIZE);

        let page = 0;
        const pageString = () => `Page ${page + 1} of ${numPages}`;

        const getCurrentPage = () => inventoryStrings.slice(page * PAGE_SIZE, (page + 1) * PAGE_SIZE);
        const currentPageString = () => getCurrentPage().join('\n');

        // const prev = new ButtonBuilder()
        //  .setCustomId('prev')
        //  .setLabel('◀️')
        //  .setStyle(ButtonStyle.Primary)
        //     .setDisabled(page === 0)

        // const next = new ButtonBuilder()
        //  .setCustomId('next')
        //  .setLabel('▶️')
        //  .setStyle(ButtonStyle.Primary);

        // const close = new ButtonBuilder()
        //  .setCustomId('close')
        //  .setLabel('❌')
        //  .setStyle(ButtonStyle.Danger)
        //     .setDisabled(page === numPages - 1)

        // const row = new ActionRowBuilder()
        //  .addComponents(prev, next, close);

        const buttonsRow = new ActionRowBuilder()
        .addComponents(
            new ButtonBuilder()
                .setCustomId('prev')
                .setLabel('◀️')
                .setStyle('Primary')
                .setDisabled(page === 0),
            new ButtonBuilder()
                .setCustomId('next')
                .setLabel('▶️')
                .setStyle('Primary')
                .setDisabled(page === numPages - 1),
            new ButtonBuilder()
                .setCustomId('close')
                .setLabel('❌')
                .setStyle('Danger')
        );

        const embed = new discord.EmbedBuilder()
        .setColor('#0099ff')
        .setTitle(`${user.username}'s inventory`)
        .setDescription(currentPageString())
        .setFooter({ text: pageString() });;

        const messageOptions = { embeds: [embed], components: [buttonsRow] };
        const inventoryMessage = await interaction.reply(messageOptions);

        const collector = inventoryMessage.createMessageComponentCollector({ componentType: 'BUTTON', time: 60000 });

        collector.on('collect', async interaction => {
        switch (interaction.customId) {
            case 'prev':
            page--;
            break;
            case 'next':
            page++;
            break;
            case 'close':
            inventoryMessage.delete();
            return;
        }

        page = Math.max(0, Math.min(numPages - 1, page));

        const newInventoryString = currentPageString();
        const newEmbed = new discord.EmbedBuilder()
            .setColor('#0099ff')
            .setTitle(`${user.username}'s inventory`)
            .setDescription(newInventoryString)
            .setFooter(pageString());

        await interaction.update({ embeds: [newEmbed] });
        });

        collector.on('end', () => {
        inventoryMessage.edit({ components: [] });
        });

    },
};

这是错误指示的 index.js 的一部分

bot.on(Events.InteractionCreate, async interaction => {
    let userblacklist = interaction.user;
    var i
    for (let i = 0; i < bypassUsersID.length; i++) {
        if (!bypassUsersID.includes(userblacklist.id)) {
            let blacklisted = await db.get(`blacklist_${userblacklist.id}`);
            if (blacklisted) {
              return  interaction.reply({content:'You are banned from using this bot.', ephemeral:true});
            }
        }
    }
    
    //if (!interaction.isChatInputCommand()) return;

    const command = clientmands.get(interactionmandName);

    try {
        await command.execute(interaction);
    } catch (error) {
        console.error(error);
        if (interaction.replied || interaction.deferred) {
            await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true });
        } else {
            await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });
        }
    }
});

我尝试过的:

//if (!interaction.isChatInputCommand()) return;

看到那条不活动的线了吗?当我使用它时,它不会给我一个错误,但是当我点击按钮时,它就会失败。但是当我停用它时,我会得到执行错误。我仔细地重新阅读了几个小时的代码,但我不知道为什么它不起作用。

我预计会发生什么:所以会出现 3 个按钮,其中两个是上一个和下一个按钮。他们将重新编辑页面。但该按钮被禁用,因为 inv 中的 obj 尚未达到显示限制。另一个是关闭按钮。此按钮将删除 inv 嵌入。但是这个不行

实际结果:它总是给我“TypeError: Cannot read properties of undefined (reading 'execute')”

回答如下:

更多推荐

TypeError: Cannot read properties of undefined (reading 'execute') 发生每当我

本文发布于:2024-05-30 06:06:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770189.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:当我   按钮   发生   properties   read

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!