gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:53 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com