Discordjs Interaction.followUp() 不起作用

问题描述 投票:0回答:1

我正在制作一个不和谐的机器人命令,该命令返回角色的成员。

interaction.deferReply()
工作正常,但
interaction.followUp(...)
不起作用。 交互停留在“--- 机器人正在思考...”,并且没有抛出任何错误消息。

我尝试使用

console.log
调试我的代码,让我了解代码崩溃的位置,但它告诉我一切都很好。

所以我不知道出了什么问题

这是代码,

const { SlashCommandBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder, MessageButton } = require('@discordjs/builders')
const Data = require('../../data/data.json') // Data storage (Not used in this command)

命令数据

module.exports = {
    data: new SlashCommandBuilder()
        .setName('inrole')
        .setDescription('Retrieve members of a role.')
        .addRoleOption(option => 
            option.setName("role")
                .setDescription("Which role members to retrieve.")
                .setRequired(true)
        )
        .addStringOption(option =>
            option.setName("private")
                .setDescription("Send a private or public message?")
                .addChoices(
                    { name: 'Public', value: '1' },
                    { name: 'Private', value: '2' },)
        )
        .addIntegerOption(option =>
            option.setName("offset")
                .setDescription("Page offset, default is 0. Each page contains 10 users max.")
                .setMinValue(0)
        ),

命令定义

    async execute(interaction, client) { // Function that defines the command
        await interaction.deferReply()
        let guild = interaction.guild;
        await guild.members.fetch()

        var role = guild.roles.cache.get(interaction.options.getRole('role').id)

        var p = interaction.options.getString("private")
        if (p == '2') p = true; else p = false

        var n = interaction.options.getInteger("offset") ?? 0


        var mList = role.members.map(x => '<@' + x.id + '> ||' + x.username + '||').slice(n*10,n*10+10).join('\n')

        if ((mList === "") && n > 0) {
            mList = "Page is empty."
        } else if (mList === "") {
            mList = "No one has this role."
        }

        let len = role.members.map(x => '<@' + x.id + '> ||' + x.username + '||').slice(n*10,n*10+10).length
        mList = '-# Page: ' + (Number(n) + 1) + ' | Showing ' + len + ' member' + (len != 1 ? 's' : '') + '\n** **\n' + mList + "\n** **"

        var embed = new EmbedBuilder()
            .setTitle('Users in the `' + role.name + '` role')
            .setDescription(mList)
            .setFooter({text: 'Total Members: ' + role.members.size})
        
        await interaction.followUp({embeds: [embed],ephemeral: p})
   }
}

有什么想法吗?谢谢。

更新:我的机器人拥有的所有其他命令也会发生这种情况,包括像

/ping
/coinflip
这样的简单命令,但使用前缀的聊天命令可以工作。

第二次更新:有时有效,有时无效。

javascript discord.js discord-interactions
1个回答
0
投票

interaction.deferReply() 允许您推迟对您的操作的响应。它不返回消息。要提交您的回复,尝试使用 editReply 而不是 followUp。

欲了解更多信息,请访问:

https://discordjs.guide/slash-commands/response-methods.html#deferred-responses

© www.soinside.com 2019 - 2024. All rights reserved.