首页 > 解决方案 > 如何在 Discord.js 中创建输出文件下一行的命令

问题描述

我有一个不和谐的服务器,我们经常在其中赠送 Steam 密钥作为赠品奖品。目前,我从文本文件中手动剪切/粘贴密钥,但我想要一个可以自动执行此操作的机器人命令。(它们在 TXT 文件上进行了线路分离......机器人不必读取 txt 文件,但它需要是我可以轻松复制/粘贴到其中的东西,因为我会将 100 多个密钥传输到机器人中每一次)

我已经尝试创建一个命令,但它只是给我错误消息,所以我不知道重新编码或修复我现有的代码是否更好。

这是我当前的机器人代码:

const Discord = require('discord.js');
const fs = require('fs');
const yml = require("../yml.js");
module.exports.run = async (bot, message, args) => {
    if(!message.member.roles.has(message.guild.roles.find(r => r.name == "Faulty Admins").id)) return message.channel.send('Invalid permissions.');
    let file = fs.readFileSync('codes.txt').toString();
    let lines = file.split('\n');
    message.channel.send(lines[0]);
    lines.splice(0, 1);
    fs.writeFile('./codes.txt', lines.join('\n'), function(err) { if(err) console.log(err) });
}
module.exports.help = { name: 'code' }

这是我得到的错误:

ReferenceError: file is not defined
at Object.module.exports.run (/home/container/commands/code.js:7:17)
at /home/container/index.js:312:33
at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:53:3)

我在容器的根目录中有一个带有行分隔键的代码.txt 文件。出于希望显而易见的原因,我不会提供。;)

我需要它每次都能输出一个新密钥,而不会发送一堆或错误。

非常感谢任何和所有帮助。

标签: node.jsdiscord.js

解决方案


此后,此问题已得到解决。我更改了文件的变量名,解决了这个问题。

const Discord = require('discord.js');
const fs = require('fs');
const yml = require("../yml.js");
module.exports.run = async (bot, message, args) => {
    if(!message.member.roles.has(message.guild.roles.find(r => r.name == "Faulty Admins").id)) return message.channel.send('Invalid permissions.');
    let steamkeys = fs.readFileSync('codes.txt').toString();
    let lines = steamkeys.split('\n');
    message.channel.send(lines[0]);
    lines.splice(0, 1);
    fs.writeFile('./codes.txt', lines.join('\n'), function(err) { if(err) console.log(err) });
}
module.exports.help = { name: 'code' }

推荐阅读