Discord.js | Как мне сделать так, чтобы он вводил новую строку каждые 2 или 3 слова?

#javascript #node.js #json #string #https

#javascript #node.js #json #строка #https

Вопрос:

Я попытался создать команду random words, и я также новичок в этом Discord js. Так что … извините за мой плохой вонючий код. Мой код

 const discord = require('discord.js')
module.exports = {
    commands: 'randomWords',
    minArgs: 1,
    maxArgs: 1,
    expectedArgs: '<Number>',
    
    callback: async (message, arguments, text, client) => {

        const request = require('request');
        const https = require('https');

        if (!isNaN(arguments[0])) {
            var url = `https://random-word-api.herokuapp.com/word?number=${arguments[0]}`
        } else {
            message.channel.send("Please input a number. ex. 24")
        }


        // Get data from link 

        https.get(url, resp => {

            let data = '';


            // chunk of data been received
            resp.on("data", chunk => {
                data  = chunk
            })

            resp.on("end", () => {
                let dataIn = JSON.parse(data);

                var dataInString = dataIn.toString()
                var datas = dataInString.replace(/,/g, " ")
                // here you add a new line every 2 words or 3 words
                console.log("nnn"   datas   "nnn")
                // i know i suck at this, but my terminal was very filled and so confused reading so added spaces

                // send the message

                const embed = new discord.MessageEmbed()
                .setAuthor(`Random Words: ${arguments[0]}`)
                .setDescription(`this right here is supposed to be advertisement, so i deleted it for stack overflow nWord Separated by spaces`)
                .addFields(
                    { name: "Words:", value: datas },
                    {name: "Invite Bot Below", value: "invite bot advertisement blocked"}
                )


            
                message.channel.send(embed)
            })


        })        
        
    }
}
 

Проблема в обратном вызове, обработчик команды не имеет значения

Проблема примерно в строке 38

Очень признателен, если вы мне помогли 🙂 Спасибо

Ответ №1:

 let words = ["hello", "test", "ice", "cream", "fast", "food"];
let str = "";

for(var i = 0; i < words.length; i  ) {
  if(i % 2 === 0) str  = words[i]   " ";
  else str  = words[i]   "n";
}

console.log(str);
 

Возможно, этот пример поможет вам решить вашу проблему. Цикл for выполняет итерацию по массиву. Если i это равное число, он просто выводит значения без новой строки. В противном случае, если i число не равно, оно выводит значение, но с новой строкой.

Результатом этого является:

 hello test
ice cream
fast food