如何编写Discord数数游戏Bot 实现错数检测及计数重置功能
问题排查与修复方案
原代码存在的问题
- 错数判断逻辑完全无效:
else if (count === count+++)属于无意义的自比较逻辑,没有对用户输入的内容做正确性校验,完全无法触发错数提示。 - 未校验输入内容合法性:如果用户发送的不是数字内容,
Number(content)会返回NaN,现有逻辑无法处理这类非法输入场景。 - 错误场景覆盖不全:除了正确输入的情况外,其余所有错数、非法输入场景都没有对应的处理逻辑。
修复后完整代码
let count = 0 client.on('message', ({channel, content, member}) => { // 替换为你的目标频道ID if (channel.id === '') { // 过滤机器人发送的消息 if (member.user.bot) return // 转换输入为数字,同时校验是否为有效正整数 const inputNum = Number(content) const isValidNumber = !isNaN(inputNum) && Number.isInteger(inputNum) && inputNum > 0 if (isValidNumber && inputNum === count + 1) { // 输入正确,计数自增 count++ } else { // 所有输入错误、内容非法的场景统一处理 channel.send(`${member} messed up at ${count + 1}, I'm gonna reset the count to 0`).catch(console.error) count = 0 } } })
逻辑说明
- 新增输入合法性校验,只有用户发送正整数时才会进入正确性判断,发送文字、符号、小数、负数都视为输入错误。
- 只要不符合「输入等于当前计数+1」的要求,统一触发错误提示,同时将计数重置为0。
- 错误提示中标注的错误数值为用户本该输入的正确数值,符合数数游戏的常规使用习惯。
内容的提问来源于stack exchange,提问作者Jesus Perez
相关产品推荐
相关产品推荐

