Discord.js Discord Bot:SyntaxError:输入意外结束

Posted

技术标签:

【中文标题】Discord.js Discord Bot:SyntaxError:输入意外结束【英文标题】:Discord.js Discord Bot: SyntaxError: Unexpected end of input 【发布时间】:2020-07-08 17:47:28 【问题描述】:
msg.guild.channels.find(c => c.id == "693088078168064051").send(tempVars("absence_review"))
.then(function(message) 
        const approved = message.react("✅")
            .then(() => message.react("❌"))
            .catch(error => );

        const filter = (reaction, user) => 
            return ['✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
        ;

        message.awaitReactions(filter, 
                max: 1
            )
            .then(collected => 
                const reaction = collected.first();
                if (reaction.emoji.name === '✅', reaction.user.bot === false) 
                    message.reply('reacted with yee.');
                 else if (reaction.emoji.name === '❌', reaction.user.bot === false) 
                    message.reply('reacted with nah dude.');
                
            )
            .catch(collected => 
                message.reply('you didnt react idiot');
            );

这是我目前用于该命令的代码。我正在执行此命令的目的是记录缺勤,将其发送到另一个有反应的频道,让某人对其做出反应,如果他们对复选标记做出反应,它将把它发送回最初发送命令的频道,但是如果他们对十字架做出反应,最初发出命令的人会被机器人 DM 。最后几件事很容易,但我的主要问题是反应。我已经做出了反应,但代码的最后一点似乎破坏了它。 'const filter' 位之后的所有内容。如果我删除所有这些,那么它只会发送带有反应的嵌入消息,但反应不会做任何事情。但是,如果我保留它。它甚至不会发送消息,我收到一条错误消息,指出“SyntaxError:输入意外结束”现在我已经搜索了大约一个小时,让朋友帮忙,但不幸的是没有任何帮助.如果有人可以提供帮助,将不胜感激,在此先感谢。

【问题讨论】:

【参考方案1】:

我又花了 3 个小时在我的迷你地牢中解决了这个问题,并得到了一些工作。

msg.guild.channels.find(c => c.id == "693088078168064051")
.send(tempVars("absence_review")).then(function(message)
        message.react("✅")
            .then(() => message.react("❌"))
            .catch(error => );
);
        const filter = (reaction, user) => 
            return ['✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
        ;

    message.awaitReactions(filter, 
            max: 1
        )
        .then(collected => 
            const reaction = collected.first();
            if (reaction.emoji.name === '✅', reaction.user.bot === false) 
                message.reply('reacted with yee.');
             else if (reaction.emoji.name === '❌', reaction.user.bot === false) 
                message.reply('reacted with nah dude.');
            
        )
        .catch(collected => 
            message.reply('you didnt react idiot');
        );

这是一个固定版本,虽然最后一点不一定有效,但我会尝试自己解决。

【讨论】:

【参考方案2】:

虽然我看不到整个代码,但我相信您的错误不是来自上面的代码。语法错误“输入意外结束”通常是由于代码中某处未完成一个或多个括号,即); - 通常在您的 main.js 文件中的“client on”函数之后。浏览整个代码并确保正确表示每个括号。也许将您的代码放入 code.vb - 它会检测并指出您上面的语法错误。

让我知道进度。

【讨论】:

reaction emoji 的名字可以完美地工作, :white_check_mark: 也可能工作,但建议使用 Unicode 字符,它们在过去对我来说非常好用。至于其余代码,我忘了实际指出(抱歉)我正在使用 Discord Bot Maker,这是我在“运行脚本”操作中制作的脚本,所以错误就在那里。 .then(() => message.react("❌")) 我不完全理解这一行,这是正确的语法吗?我强烈建议将您的代码放入 Visual Studio Code - 它会发现您的错误。

以上是关于Discord.js Discord Bot:SyntaxError:输入意外结束的主要内容,如果未能解决你的问题,请参考以下文章

Discord bot 更改前缀命令出错 (discord.js)

Discord Bot 不播放音频 discord.js v13

Discord Bot 使用 Discord.js 在 X 秒后离开 VC

使用 Discord.js 使用 Discord Bot 将语音频道中的所有人静音

播放音乐时出现 Discord Bot 错误 - discord.js v13

Discord.js Bot 赠品命令:.array() 不是函数