当我点击按钮"/>
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') 发生每当我
发布评论