Попытка зарегистрировать сообщения в discord.js

#javascript #node.js #npm #discord #discord.js

#javascript #node.js #npm #Discord #discord.js

Вопрос:

Я создаю регистратор сообщений discord, но я хочу вывести message.content message.author message.id message.channel.id в один текстовый файл каждый раз, когда отправляется сообщение в следующем формате: Идентификатор сообщения: (Идентификатор здесь) Автор сообщения: (Идентификатор автора здесь) Идентификатор канала: (Идентификатор канала здесь) Сообщение: (сообщение здесь) я пробовал использовать следующий код, но он напечатал undefined в текстовом документе

 const Discord = require("discord.js");
const bot = new Discord.Client();
const TOKEN = "NOPE"
var color = require('chalk');
var fs = require('fs');

bot.on("ready", function(message) {
    console.log(color.green("Online"))
})
bot.on("message", function(message){
    console.log("Channel:"   color.blue(message.channel)   " "   "Author:"   color.blue(message.author)   " "   "Message:"   color.blue(message.content))
    if (message.content.includes("uranium") || message.content == "Uranium" || message.content == "uranium" || message.content.includes("uranium")) {
        console.log(color.black.yellow("Message Flagged As Suspicous"))
        console.log(color.black.yellow("Contains: Uranium"))
        console.log(color.black.bgYellow("Message:"   message.content))
        console.log(color.black.bgYellow("Message Id:"   message.id))
        console.log(color.black.bgYellow("Author Id:"   message.author.id))
        console.log(color.black.bgYellow("Channel Id:"   message.channel.id))
        console.log(color.yellow("Severity:"   "1"))
        var alertsev1 =  `Message   Id:   ${message.id}   |   Author   Id:   ${message.author.id}   |   Message   Channel Id: ${message.channel.id}   |   Message:   ${message.content}` 
        fs.writeFile('alerts.txt', `${alertsev2}`)
    }
    if (message.content.includes("raid") || message.content.includes("Raid")) {
        console.log(color.black.red("Message Flagged As Suspicous"))
        console.log(color.black.red("Contains: Raid"))
        console.log(color.black.bgRed("Message:"   message.content))
        console.log(color.black.bgRed("Message Id:"   message.id))
        console.log(color.black.bgRed("Author Id:"   message.author.id))
        console.log(color.black.bgRed("Channel Id:"   message.channel.id))
        console.log(color.black.red("Severity:"   "2"))
        var alertsev2 =  `Message   Id:   ${message.id}   |   Author   Id:   ${message.author.id}   |   Message   Channel Id: ${message.channel.id}   |   Message:   ${message.content}` 
        fs.writeFile('alerts.txt', `${alertsev2}`)
    }
    if (message.content.includes("raid") amp;amp; message.content.includes("uranium") || message.content.includes("raid") amp;amp; message.content.includes("Uranium") || message.content.includes("raid") amp;amp; message.content.includes("uranium") || message.content.includes("Raid") amp;amp; message.content.includes("uranium") || message.content.includes("Raid")) {
        console.log(color.black.red("Message Flagged As Possible Raid Initiation"))
        console.log(color.black.red("Contains: Raid, Uranium"))
        console.log(color.black.bgRed("Message:"   message.content))
        console.log(color.black.bgRed("Message Id:"   message.id))
        console.log(color.black.bgRed("Author Id:"   message.author.id))
        console.log(color.black.bgRed("Channel Id:"   message.channel.id))
        console.log(color.black.red("Severity:"   "3"))
        var alertsev3 =  `Message   Id:   ${message.id}   |   Author   Id:   ${message.author.id}   |   Message   Channel Id: ${message.channel.id}   |   Message:   ${message.content}` 
        fs.writeFile('alerts.txt', `${alertsev3}`)
    }
})
bot.login(TOKEN)
  

Комментарии:

1. Все ли определено или, например, только идентификатор канала?

2. не связано, но в ваших операторах if используйте if(message.content.toLowerCase().includes(<text>)) , чтобы избежать необходимости проверять наличие слов с заглавной буквы.

Ответ №1:

Если вы получаете это undefined в файле во время выполнения uranium условия, это потому, что вы пытаетесь использовать alertsev2 то, что не было объявлено, так что это исправит это:

 fs.writeFile('alerts.txt', `${alertsev1}`)
  

Комментарии:

1. Чтобы увидеть подобные проблемы самостоятельно, вы могли бы также получить линтер, например discord.js : Как настроить Eslint . Это поможет вашему форматированию и покажет вам проблемы, подобные этим.