【问题标题】:Discord.js | How to read a number in a message?不和谐.js |如何读取消息中的数字?
【发布时间】:2021-04-06 12:04:30
【问题描述】:

我正在尝试为我的不和谐机器人制作游戏:机器人选择一个随机数,然后用户尝试通过机器人的指导来查找数字。我试过这个东西,但是当我发送一条消息(我发送一个号码)时,它变成了 NaN。为什么会发生这种情况,我该如何解决?

        let randomNumber = (Math.floor( Math.random() * (100)))
        let usersAnswer = parseInt(message.content)

        if (!message.author.bot && message.content === "!pick number"){
                message.reply("I kept! :check: ").then(j => {
                    message.channel.awaitMessages(( message, user) => (user.id === message.author.id && randomNumber < usersAnswer || randomNumber > usersAnswer),
                        {max: 1, time: 10000}).then(j => {
                        if (usersAnswer < randomNumber) {
                            message.reply("Increase! :arrow_up:" + usersAnswer) //I add usersAnswer to the bot's message because I want to see what it reads my message like in Discord
                        }
                        else {
                            message.reply("Decrease! :arrow_down:" + usersAnswer)
                        }
                    })
            })
        }

【问题讨论】:

标签: discord.js parseint


【解决方案1】:

如果你使用parseInt(),你需要在使用这个方法之前设置一个基数。我以 10 为例。

let usersAnswer = parseInt(message.content, 10)

        if (!message.author.bot && message.content === "!pick number"){
                message.reply("I kept! :check: ").then(j => {
                    message.channel.awaitMessages(( message, user) => (user.id === message.author.id && randomNumber < usersAnswer || randomNumber > usersAnswer),
                        {max: 1, time: 10000}).then(j => {
                        if (usersAnswer < randomNumber) {
                            message.reply("Increase! :arrow_up:" + usersAnswer) //I add usersAnswer to the bot's message because I want to see what it reads my message like in Discord
                        }
                        else {
                            message.reply("Decrease! :arrow_down:" + usersAnswer)
                        }
                    })
            })
        }

或者你也可以简单地使用Number():

let usersAnswer = Number(message.content)

        if (!message.author.bot && message.content === "!pick number"){
                message.reply("I kept! :check: ").then(j => {
                    message.channel.awaitMessages(( message, user) => (user.id === message.author.id && randomNumber < usersAnswer || randomNumber > usersAnswer),
                        {max: 1, time: 10000}).then(j => {
                        if (usersAnswer < randomNumber) {
                            message.reply("Increase! :arrow_up:" + usersAnswer) //I add usersAnswer to the bot's message because I want to see what it reads my message like in Discord
                        }
                        else {
                            message.reply("Decrease! :arrow_down:" + usersAnswer)
                        }
                    })
            })
        }

如果我是你,我会检查 usersAnswer 是否甚至是数字,否则输出也可能是 NaN。) 您可以通过简单地添加以下行来做到这一点:

if (isNaN(usersAnswer)) return message.reply('This is not a number');

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 2021-05-08
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2021-10-09
    • 2019-04-14
    • 2021-06-25
    相关资源
    最近更新 更多