繁体   English   中英

如何在 JavaScript Discord 机器人中重复代码?

[英]How to repeat code in JavaScript Discord bot?

我正在制作一个 discord 机器人,它从 Reddit (r/CuteAnimeGirls) 获取随机帖子并将图像链接发送到 discord 服务器。 但是因为不是 Reddit 上的每篇文章都是图片,所以一些链接不起作用。 我通过检查 url 是否以 .png /.jpg /.gif 结尾来过滤掉这些链接,如果是,我将链接发送到服务器。 如果我得到一个不工作的链接,我想重复这个过程并搜索一个不同的帖子,直到我找到一个工作链接。 这是我的代码:

 const Discord = require('discord.js') const client = new Discord.Client() const api = require("imageapi.js"); var endings = [".png", ".jpg", ".gif"] client.on('message', (message) => { if (message.content === '%animegirl') { let subreddits = ["CuteAnimeGirls"]; let subreddit = subreddits[Math.floor(Math.random()*(subreddits.length))]; var legal = false; api(subreddit).then((img) => { console.log(img) for (var i = 0; i <= endings.length; i++){ if (img.endsWith(endings[i])) { legal = true; const Embed = new Discord.MessageEmbed().setTitle(`A cute anime girl`).setURL(`https://www.reddit.com/r/CuteAnimeGirls`).setColor('RANDOM').setImage(img) message.channel.send(Embed) break; } } if (legal === false){ console.log('Invalid URL') } }) } }); client.login("token")

我尝试了一个while循环,但出现以下错误:

致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆出 memory

您应该使用以下代码,它更快更干净:

const Discord = require('discord.js')
const client = new Discord.Client()
const api = require("imageapi.js");

const legalExtensions = [".png", ".jpg", ".gif"]

client.on('message', (message) => {
    if (message.content === '%animegirl') {
            
        let subreddits = ["CuteAnimeGirls"];        
        let subreddit = subreddits[Math.floor(Math.random()*(subreddits.length))];                           
            
        api(subreddit).then((img) => {

            let legal = legalExtensions.some((ext) => img.endsWith(ext)); 
                
            if (legal)
                const Embed = new Discord.MessageEmbed()
                    .setTitle(`A cute anime girl`)
                    .setURL(`https://www.reddit.com/r/CuteAnimeGirls`)
                    .setColor('RANDOM')
                    .setImage(img)
                message.channel.send(Embed)
            } else {
                message.channel.send('Invalid URL');
            }

        })
    }
});

client.login("token")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM