首页 > 解决方案 > 获取文本小于 1024 个字符的 reddit 帖子

问题描述

`我正在尝试将 reddit 帖子提取到我的不和谐机器人上,但只想要帖子文本小于 1024 个字符的帖子,因为这是 RichEmbed 中 .addField 的限制。我该怎么做呢?

目前我有:

     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 帖子的地方,但它似乎没有效果。

标签: javascriptdiscord.js

解决方案


解决方案

你正在做的

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

这将检查是否false大于1024. 我假设您想归档并获取所有长度小于 1024 的帖子?

将您的代码更改为...

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

解释

当您在属性前添加感叹号时!,您将反转其真实性。如果不是,某些事情将是真实的

  • 一个空字符串
  • 0
  • 无效的
  • 不明确的
  • “错误的”
  • 错误的

在您的情况下,您将反转一个不适合上述内容的字符串,因此除非长度实际上为 0,否则它将被转换为 false:

!post.data.selftext.length

推荐阅读