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 读取单行然后删除它们的主要内容,如果未能解决你的问题,请参考以下文章

Discord Bot 读取对设置消息的反应

discord bot c# 读取收到的直接消息

如何在discord bot上删除所有角色并添加一个角色,然后删除添加的角色并恢复以前的角色

Discord bot 发送后删除消息

discord.py Bot 并不总是删除消息

Discord.js Bot 赠品命令:.array() 不是函数