Discord Bot 读取单行然后删除它们
Posted
技术标签:
【中文标题】Discord Bot 读取单行然后删除它们【英文标题】:Discord Bot Read single lines and then deleting them 【发布时间】:2020-08-07 01:38:47 【问题描述】:我正在构建一个将值存储在 .txt 文件中的机器人,每行一个代码。 现在我只想抓取txt文件的一行,然后删除该行。
虽然我不知道如何删除一行然后写一个新文件
bot.on("message", message=>
let args = message.content.substring(prefix.length).split(" ");
switch(args[0])
case "code":
let codetext = message.content.replace(prefix + "code", "")
fs.appendFile("./text.txt", codetext + "\n",(err)=>
if (err) throw err;
message.channel.send("message written")
)
break;
case "getcode":
let getcode = fs.readFileSync("./text.txt", "utf8", (err)=>
if (err) throw err;
)
var code_array = getcode.split("\n")
message.channel.send(code_array[0])
);
【问题讨论】:
我要强烈,强烈 提倡不要在 javascript 中使用像这样的自定义纯文本存储格式。您可以访问每个 js 文件和每个作用域中的 JSON 函数,使用它们! 有什么建议可以解决我的问题吗? 我将照搬 Klaycon 所说的话。理想情况下,您会将数据作为 JSON 中的数组。然后你可以抓取数组并弹出或拼接等来删除元素,然后字符串化并覆盖旧文件。不过,您可以使用此处的内容来执行此操作,创建 code_array,因此您需要弹出、移位或拼接出您想要删除的内容。 【参考方案1】:你已经创建了一个数组,所以你只需要删除你想要的元素并将剩下的元素重写回文件,覆盖旧的。有几种方法可以做到这一点,以下所有方法都会改变原始数组:
删除最后一个元素并返回删除的内容。
let popped = code_array.pop()
删除第一个元素并返回删除的内容。
let shifted = code_array.shift()
从元素索引 2 开始删除 3 个项目(第 3 个元素,它是从 0 开始的!)并返回一个包含已删除内容的数组。
let spliced = code_array.splice(2, 3);
【讨论】:
以上是关于Discord Bot 读取单行然后删除它们的主要内容,如果未能解决你的问题,请参考以下文章