Проблема с полным запуском функции перед продолжением работы с кодом - PullRequest
0 голосов
/ 14 апреля 2019

Я хочу удалить последнюю строку в моем файле журнала, в которой есть заданный идентификатор пользователя, поэтому мне нужно подождать, пока программа чтения полностью не прочитает файл logsFile. То есть мой вывод выглядит так:

[4:55 PM] Skifty: <unban nolog 477627076753752064
[4:55 PM] BOTMafiBot: nologging
[4:55 PM] BOTMafiBot: Mitsuko#1398 unbanned.
[4:55 PM] BOTMafiBot: [14/3/2019 // 15:37] Gebannt durch: Skifty#3967 User: Mitsuko#1398 mit UserID 477627076753752064 mit ID 1
[4:55 PM] BOTMafiBot: [14/3/2019 // 15:39] Gebannt durch: Skifty#3967 User: Mitsuko#1398 mit UserID 477627076753752064 mit ID 1

последние два сообщения должны отображаться перед небанкованным сообщением.

Уже поиграл с Async / Await для функции (как это все еще в коде), но это не помогает.

client.on('message', async message => {
  if (mess.startsWith(prefix + "unban")) {
    try {
      var bansFile = "Bans.txt";
      var logsFile = "banLogs.txt";
      var fileLine;
      var bans = fs.readFileSync(bansFile, "utf-8");
      var logs = fs.readFileSync(logsFile, "utf-8");
      var rd;
      var userID = args.split(" ")[1];
      var User = client.users.get(`${userID}`);
      message.channel.send("nologging");
      var found = false;
      if (User == undefined) return message.channel.send("Bitte gib die UserID des zu entbannenden Accounts ein!");
      if (!bans.includes(User.id)) return message.channel.send(`User ${User.tag} ist nicht gebannt!`);

      async function read() {
        rd = readline.createInterface({
          input: fs.createReadStream(logsFile)
        });
        rd.on('line', function(line) {
          line = line.concat('\n');
          if (line.includes(User.id)) {
            fileLine = line;
            message.channel.send(fileLine);
          }
        });
      }

      await read();
      if (found === true) {
        logs = logs.replace(fileLile, "");
        fs.writeFileSync(logsFile, logs);
      }

      message.guild.unban(User);
      message.channel.send(`${User.tag} unbanned.`);
    } catch (error) {
      return message.channel.send(`Dezenter Fehler: ${error}`);
    }
  }
});
...