1 Вопрос: Извлечение сообщений Reddit, в которых текст <1024 символов

вопрос создан в Thu, May 2, 2019 12:00 AM

`Я пытаюсь получить посты reddit на своего бота, вызывающего разногласия, но хочу только посты, в которых текст поста < 1024 символа, так как это предел .addField в RichEmbed. Как бы я поступил так?

В настоящее время у меня есть:

     const allowed = message.channel.nsfw ? body.data.children : 
     body.data.children.filter(post => !post.data.over_18);

     const postlength = body.data.children.filter(post => 
     !post.data.selftext.length > 1024);
        if (!postlength && !allowed.length) 
        return message.channel.send('It seems we are out of fresh memes!, Try again later.');

        const randomnumber = Math.floor(Math.random() * allowed.length)
        const embed = new Discord.RichEmbed()
        .setColor(0x00A2E8)
        .setTitle(allowed[randomnumber].data.title)
        .setDescription("Posted by: " + allowed[randomnumber].data.author)
        .addField("Post: ", allowed[randomnumber].data.selftext + allowed[randomnumber].data.selftext.length)
        .setImage(allowed[randomnumber].data.url)
        .addField("Other info:", "Up votes: " + allowed[randomnumber].data.ups + " / Comments: " + allowed[randomnumber].data.num_comments)
        .setFooter("Memes provided by r/dankmemes")
        message.channel.send(embed)

Моя переменная postlength - это место, где я пытаюсь отфильтровать сообщения reddit, однако, похоже, это не дает никакого эффекта.

    
0
1 ответ                              1                         

Решение

Вы делаете

filter(post => !post.data.selftext.length > 1024);

который проверит, больше ли false больше, чем 1024. Я предполагаю, что вы хотите отфильтровать и получить все сообщения, длина которых меньше 1024?

Измените свой код на ...

filter(post => post.data.selftext.length < 1024);

Explaination

Когда вы добавляете восклицательный знак ! перед свойством, вы инвертируете его истинность. Что-то будет Правдой , если это не так

  • Пустая строка
  • 0
  • NULL
  • не определено
  • "ложь"
  • ложь

В вашем случае вы будете инвертировать строку, которая не соответствует вышеприведенному, поэтому она будет переведена в false, если длина фактически не равна 0:

!post.data.selftext.length
    
1
2019-05-02 15: 32: 17Z
источник размещен Вот