我给自己做了一个机器人,它只会从Discord中获取一个参数,如果参数匹配,它会发送消息"成功赎回"这一部分起作用,但不起作用的是完全匹配.我希望它完全匹配,以便出现该消息,但假设一个键是123456,它也会接受一个参数为12123.我不想这样,应该是EXACTLY场比赛.这是我当前的代码:

    if (command === '$redeemkey') {
        const fs = require('fs')
        fs.readFile('notredeemed.txt', function (err, data) {
            if (err) throw err;
            if(data.includes(`${args[0]}`)){
            console.log("true")
                 return message.reply({
                embeds: [
                    new MessageEmbed()
                    .setColor('GREEN')
                    .setDescription('Redeemed Successfully')
                ]
            })
            }

以下是我的notredeemed.txt的外观:

12345678
1234567
123456
12345

推荐答案

.includes()将判断整个文件内容中的参数,无论它位于哪个位置.


解决方案#1

您可以使用RegExp来计算基于行内容的精确值.

  • ^-字符串开始
  • $-字符串结束
  • m-多线

替换:

data.includes(`${args[0]}`)

使用:

data.toString().match(new RegExp(`^${args[0]}$`, "m"))

解决方案#2

您可以在数据中设置.split()个换行符,然后判断所创建的数组是否包含参数,这与您最初try 判断值的方式类似.

替换:

data.includes(`${args[0]}`)

使用:

data.toString().split("\n").includes(`${args[0]}`);

Javascript相关问答推荐

在拖放时阻止文件打开

使用Java脚本根据按下的按钮更改S文本

在Three JS中看不到补间不透明度更改效果

material UI按钮组样式props 不反射

当我在Reaction中创建一个输入列表时,我的输入行为异常

搜索功能不是在分页的每一页上进行搜索

更新Redux存储中的对象数组

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

设置复选框根据选中状态输入选中值

找不到处于状态的联系人

当一条路由在Reaction路由中命中时,如何有条件地渲染两个组件或更改两个插座?

react :图表负片区域不同 colored颜色

如何格式化API的响应

如何在Java脚本中添加一个可以在另一个面板中垂直调整大小的面板?

在使用Jest进行测试时,在Express应用程序中未定义Multer

在给定的最小值、最大值和分辨率下计算相同分布的值

从D3 v3更新,没有错误,但输出SVG路径不可见

错误403 Spotify API:ERR_ABORTED 403(禁止)

promise 封装未知数量的异步工作(即其他promise )

无法将bson类型转换为日期MongoDB