【问题标题】:Discord JS - interactionCreate and messageCreateDiscord JS - 交互创建和消息创建
【发布时间】:2021-12-15 19:16:40
【问题描述】:

我一直在尝试使用 interactionCreate 事件,但不知何故它不起作用。我不确定为什么,也没有找到有关此事件的确切文档,只是它用于执行斜杠命令。但是为此我使用 messageCreate 事件,它工作正常。

const Event = require('../handlers/Event.js');

module.exports = new Event('messageCreate', (client, message) => {
    if (!message.content.startsWith(client.prefix) || message.author.bot) return;

    const args = message.content.substring(client.prefix.length).split(/ +/);
    try {
        const command = client.commands.find(cmd => cmd.name == args[0] || cmd.alias == args[0]);
        command.run(message, args, client);
    } catch (error) {
        message.channel.send('Wrong command.');
    }
});

我的 interactionCreate 事件有什么问题?

const Event = require('../handlers/Event.js');

module.exports = new Event('interactionCreate', async (interaction) => {
    if (!interaction.isCommand()) return;

    if (interaction.commandName === 'join') {
        await interaction.reply('join');
    }

});

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    交互是当用户使用应用程序命令或消息组件时,您的应用程序收到的消息。” Discord Interactions

    messageCreate 监听器几乎会触发所有其他事情。

    在您的情况下,您想做什么来触发互动?可能是内置斜线命令?

    应用程序命令是应用程序可以注册到 Discord 的命令,我认为内置斜杠命令与此描述不符。因此,为了让您看到交互触发,您要么必须自己注册一个 applicationCommand (ApplicationCommandBuilder),要么可能使用按钮 (DiscordButtons) 创建一个嵌入消息,然后单击应该触发交​​互的按钮

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    也许您应该将整个代码封装到一个事件中。 我相信您的事件代码被创建了两次,不适合同时监听多个事件,为此您应该考虑声明一个新事件但遍历事件文件。 这是我上个月在我的 index.js 中的项目中使用的。 请注意,我目前没有使用斜杠命令,但我将其用于按钮和任何其他组件交互,但斜杠命令也可以使用。

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

    这可能是同时监听事件的最简洁方式。 我希望这会有所帮助?

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2021-11-03
      • 2021-10-26
      • 2021-02-06
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多