当错误的 link 或 url 粘贴到图像中时,机器人会一直崩溃。我能做什么?

Bot keeps crashing when wrong link is paste in the image, or url. what can i do?

我正在创建一个动态嵌入生成器,当错误的 link 或 url.

粘贴到图像中时,我的 Discord Bot 一直崩溃

我的代码:

const { CommandInteraction, MessageEmbed, WebhookClient, GuildMember, ApplicationCommandManager, HTTPError } = require("discord.js");

module.exports = {
name: "bejelentés_készítés",
description: "⟬ADMIN⟭ Rövid beágyazott üzenet",
options: [
    {name: "csatorna",description: "válaszd ki a csatornát ahova küldeni szeretnéd",required: true,type: 7,},

    {name: "rang",description: "Add meg a ping rang-ot!",required: true,type: 8,},
    
    {name: "szín",description: "Válassz egy színt",required: true,type: 3,
        choices: [{name: "Random",value: "RANDOM"},{name: "Red",value: "RED"},{name: "Aqua",value: "AQUA"},{name: "Dark Aqua",value: "DARK_AQUA"},{name: "Green",value: "GREEN"},{name: "Dark Green",value: "DARK_GREEN"},
          {name: "Blue",value: "BLUE"},{name: "Dark Blue",value: "DARK_BLUE"},{name: "Purple",value: "PURPLE"},{name: "Dark Purple",value: "DARK_PURPLE"},{name: "Luminous Vivid Pink",value: "LUMINOUS_VIVID_PINK"},
          {name: "Dark Vivid Pink",value: "DARK_VIVID_PINK"},{name: "Gold",value: "GOLD"},{name: "Dark Gold",value: "DARK_GOLD"},{name: "Orange",value: "ORANGE"},{name: "Dark Orange",value: "DARK_ORANGE"},
          {name: "Dark Red",value: "DARK_RED"},{name: "Grey",value: "GREY"},{name: "Dark Grey",value: "DARK_GREY"},{name: "Darker Grey",value: "DARKER_GREY"},{name: "Light Grey",value: "LIGHT_GREY"},
          {name: "Navy",value: "NAVY"},{name: "Dark Navy",value: "DARK_NAVY"},{name: "Yellow",value: "YELLOW"},{name: "White",value: "WHITE"}]
    },
    {name: "cím",description: "Add meg a címet",required: true,type: 3,},

    {name: "leírás",description: "Add meg a leírást",required: true,type: 3,},

    {name: "link",description: "Csatolj egy link-et",required: false,type: 3,},
    
    {name: "kép",description: "Illesz be egy kép linket",required: false,type: 3,},
    
    {name: "további_cím_1",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_1",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_2",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_2",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_3",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_3",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_4",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_4",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_5",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_5",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_6",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_6",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_7",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_7",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_8",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_8",description: "Írd le amit közölnél",type: 3,required: false},
    
    {name: "további_cím_9",description: "Adj egy címet",type: 3,required: false},{name: "további_leírás_9",description: "Írd le amit közölnél",type: 3,required: false},
    
],
/**
 * 
 * @param {CommandInteraction} interaction 
 * @param {GuildMember} member 
 */
async execute(interaction, member) {
    
    const { options } = interaction;
    const { user, guild } = member;

    const WebhookRes = new WebhookClient({
        id: "", 
        token: ""
    });
    
    const cím = options.getString("cím");
    const szín = options.getString("szín");
    const leírás = options.getString("leírás");
    const kép = options.getString("kép");
    const hc1 = options.getString("további_cím_1");
    const hl1 = options.getString("további_leírás_1");  
    const hc2 = options.getString("további_cím_2");
    const hl2 = options.getString("további_leírás_2");   
    const hc3 = options.getString("további_cím_3");
    const hl3 = options.getString("további_leírás_3");  
    const hc4 = options.getString("további_cím_4");
    const hl4 = options.getString("további_leírás_4");   
    const hc5 = options.getString("további_cím_5");
    const hl5 = options.getString("további_leírás_5");      
    const hc6 = options.getString("további_cím_6");
    const hl6 = options.getString("további_leírás_6");    
    const hc7 = options.getString("további_cím_7");
    const hl7 = options.getString("további_leírás_7");     
    const hc8 = options.getString("további_cím_8");
    const hl8 = options.getString("további_leírás_8");      
    const hc9 = options.getString("további_cím_9");
    const hl9 = options.getString("további_leírás_9");         
    const link = options.getString("link");
    const rang = options.getRole("rang");
    const csatorna = options.getChannel("csatorna");
    
    let Response = new MessageEmbed()
    .setColor(`${ szín }`)
    .setTitle(`${ cím }`)
    .setAuthor({ name: interaction.member.user.tag, iconURL: interaction.member.user.avatarURL({dynamic: true, size: 512}) })
    .setDescription(`${rang} ${ leírás }`)
    .setThumbnail('https://media.discordapp.net/attachments/967828295121006592/969690574674354337/958794200999145513.png')
    .setFooter({text: `Telihold, tele mosoly `})
    .setTimestamp()

    if ( hc1 )  {Response.addField(`${ hc1 }`, `${ hl1 }`)}
    if ( hc2 )  {Response.addField(`${ hc2 }`, `${ hl2 }`)}
    if ( hc3 )  {Response.addField(`${ hc3 }`, `${ hl3 }`)}
    if ( hc4 )  {Response.addField(`${ hc4 }`, `${ hl4 }`)}
    if ( hc5 )  {Response.addField(`${ hc5 }`, `${ hl5 }`)}
    if ( hc6 )  {Response.addField(`${ hc6 }`, `${ hl6 }`)}
    if ( hc7 )  {Response.addField(`${ hc7 }`, `${ hl7 }`)}
    if ( hc8 )  {Response.addField(`${ hc8 }`, `${ hl8 }`)}
    if ( hc9 )  {Response.addField(`${ hc9 }`, `${ hl9 }`)}
    if ( kép )  {Response.setImage(`${kép}`)}
    if (link )  {Response.setURL  (`${link}`)}

    

   interaction.guild.channels.cache.get(csatorna.id).send({embeds: [Response], fetchReply: true})
   interaction.reply({content: `A beágyazást elküldtem **${cím}**-Címmel | ${rang} pingeléssel | a ${csatorna} csatornára`, ephemeral: true})

   //if (!`${link}` === 'http', 'https') return interaction.reply({ content: 'Hibás adatot adtál meg, kérlek próbáld újra!', ephemeral: true })
   //if (!link || link === 'http', 'https') return interaction.reply({content: `Nem sikerült elküldenem a **${cím}**-Címmű beágyazást, rossz **link** formátum miatt! `, ephemeral: true});
   //if (!kép || kép === 'http', 'https') return interaction.reply({content: `Nem sikerült elküldenem a **${cím}**-Címmű beágyazást, rossz **kép** formátum miatt! `, ephemeral: true});
   
}
}

如果 url 错误,我该如何发送错误消息? 我想要,如果 url 图像或 link 格式不正确,则不创建嵌入,并发送消息:“url 格式无效,请重试!” .我应该使用正则表达式吗?以及如何?

您可以使用正则表达式检查来确保 url 有效


if (link) {
    if (/(https?:\/\/)/gi.test(link)) {
        // will check if url includes http:// or https://
        Response.setURL (`${link}`);
    } else {
        return interaction.reply({ content: 'Invalid url', ephemeral: true })}
    }
}