node.js - 在discord bot (node.js) 中逐行解析

标签 node.js discord.js

我正在使用 node.js 制作一个不和谐的机器人,并且我有一个包含 3 行的 .txt 文件:

User1|421
User2|5543
User3|12

我只想解析“|”之后的数字,我已经使用了

fs.readFile('balance.txt', 'utf8', function(err, contents) {
         message.channel.sendMessage(contents);
   })

要从中获取文本,我想要做的是检查发送请求检查余额的用户是否存在于列表中,如果存在则打印出余额。

我希望输入为

!余额

输出为

$43

检查时:

用户存在? 获取用户所在行 获取“|”后的数字并将其存储在临时变量中以进行打印

谢谢!

最佳答案

我会尝试这种方法,将该文件读入内存并为其创建一个访问器函数:

const fs = require("fs");
const os = require('os');

fs.readFile('balance.txt', 'utf8', function(err, contents) {

    if (err) {
        console.error("Error occurred: ", err);
    } else {
        let balancesDetails = getUserBalances(contents);

        let user3BalanceDetails = balancesDetails.find(result => result.user === "User3");
        console.log("User 3 balance: ", user3BalanceDetails.balance);

        // Send the balance if required
        //message.channel.sendMessage(user3BalanceDetails.balance);
    }
});

function getUserBalances(fileContents) {
    return fileContents.split(os.EOL).map(line => line.split("|")).map(([user, balance]) => { return { user, balance: parseFloat(balance)} });
}

在纯 JavaScript 中工作的示例如下(唯一真正的区别是我们不能使用 OS 对象,因为这只是 Node.js!):

let contents = `User1|421\nUser2|5543\nUser3|12`;

function getUserBalanceArray(fileContents) {
    return fileContents.split('\n').map(line => line.split("|")).map(([user, balance]) => { return { user, balance: parseFloat(balance)} });
}

function getUserBalanceMap(fileContents) {
    return fileContents.split('\n').map(line => line.split("|")).reduce((map, [user, balance]) => { map[user] = parseFloat(balance); 
    return map }, {});
}

console.log("File contents:\n" + contents);
console.log("Balance array: ", getUserBalanceArray(contents));
console.log("Balance map: ", getUserBalanceMap(contents));

关于node.js - 在discord bot (node.js) 中逐行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767792/

相关文章:

node.js - create-react-app 无法正常工作并且需要很长时间,有什么建议吗?

node.js - 创建同步类别和 channel

javascript - 如何获取网站的中间值(网页抓取)

javascript - Discord.js 仅使用 id 管理角色

javascript - client.startTyping 不是一个函数(Discord.JS)

node.js - 如何使用 D3 更改桑基图中 Node 的对齐方式?

node.js - 如何在 Windows 中更改 Node 版本?

javascript - 检查discord角色是否高于另一个角色

javascript - node.js 生成响应时出错。 TypeError : response. json 不是函数

node.js - 'use' 和 'next' 的文档在哪里?