nyx

The first CODM discrod bot -- cath.exe Template
git clone https://codeberg.org/night0721/nyx
Log | Files | Refs | LICENSE

messageCreate.js (8488B)


      1 const client = require("..");
      2 const { EmbedBuilder, ChannelType } = require("discord.js");
      3 const Utils = require("../util/functions/function");
      4 const domains = require("../util/Data/domains.json");
      5 client.on("messageCreate", async message => {
      6   if (message.author.bot || !message.guild) return;
      7   const data = {};
      8   const guildDB = await client.data.getGuild(message.guild.id);
      9   if (!guildDB) return;
     10   const userDB = await client.data.getUser(message.author?.id);
     11   if (!userDB) return;
     12   data.Guild = guildDB;
     13   data.User = userDB;
     14   if (!guildDB) await client.data.CreateGuild(message.guild.id);
     15   if (message.content.match(new RegExp(`^<@!?${client.user.id}>( |)$`))) {
     16     const _ = new EmbedBuilder()
     17       .addFields(
     18         {
     19           name: "Prefix/Usage",
     20           value: "Run `/help` to start using the bot",
     21           inline: true,
     22         },
     23         {
     24           name: ":link: **Invite Me**",
     25           value: `[Click Here](${Utils.inviteLink(client)})`,
     26           inline: true,
     27         },
     28         {
     29           name: "<:support1:867093614403256350> **Need Help ?**",
     30           value: `Join our [Support Server](https://discord.gg/SbQHChmGcp)`,
     31           inline: true,
     32         },
     33         {
     34           name: "<:YouTube:841186450497339412> **Video Guide**",
     35           value: `[How to use Slash Coammands](https://youtu.be/YSKDu1gKntY)`,
     36           inline: true,
     37         },
     38         {
     39           name: `<:nyx_description:897379659665264650> Documentation`,
     40           value: `[Click here](${client.docs})`,
     41           inline: true,
     42         },
     43         {
     44           name: "<a:donate:896985486260846614> **Support us**",
     45           value: `[KoFi](https://ko-fi.com/cathteam)`,
     46           inline: true,
     47         },
     48         {
     49           name: "<a:booster:896527475063025704> **Premium**",
     50           value: `You can either boost the support server or subscribe to developer's team [Ko-Fi](https://ko-fi.com/cathteam).\n Another option would be to gift a nitro subscription to one of the developers.`,
     51           inline: false,
     52         }
     53       )
     54       .setTitle(client.user.username)
     55 
     56       .setThumbnail(client.user.displayAvatarURL({ dynamic: true }))
     57       .setURL(client.web)
     58       .setFooter({
     59         text: `Made by ${client.author}`,
     60         iconURL: client.user.displayAvatarURL({ dynamic: true }),
     61       })
     62       .setTimestamp()
     63       .setColor(client.color);
     64     try {
     65       const m = await message.reply({
     66         embeds: [_],
     67         components: Utils.buttons(client),
     68       });
     69       setTimeout(() => m.delete(), 15000);
     70     } catch (_) {}
     71   }
     72   if (data.User?.Blacklist) return;
     73   try {
     74     if (
     75       domains.iplogger.includes(
     76         message.content
     77           .toLowerCase()
     78           .match(
     79             /(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
     80           )?.[0]
     81           .replace(/(https|http):\/\/+/g, "")
     82           .match(/\s*([^)]+?)\s*\/+/g, "")[0]
     83           .slice(0, -1)
     84       ) ||
     85       domains.scam.includes(
     86         message.content
     87           .toLowerCase()
     88           .match(
     89             /(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
     90           )?.[0]
     91           .replace(/(https|http):\/\/+/g, "")
     92           .match(/\s*([^)]+?)\s*\/+/g, "")[0]
     93           .slice(0, -1)
     94       ) ||
     95       domains.ngrok.includes(
     96         message.content
     97           .toLowerCase()
     98           .match(
     99             /(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
    100           )?.[0]
    101           .replace(/(https|http):\/\/+/g, "")
    102           .match(/\s*([^)]+?)\s*\/+/g, "")[0]
    103           .slice(0, -1)
    104       )
    105     ) {
    106       const _ = new EmbedBuilder()
    107         .setTitle(`Scam/IP Grabber detected`)
    108         .setTimestamp()
    109         .setColor(client.color)
    110         .addFields(
    111           {
    112             name: "User",
    113             value: `${message.author.tag} (${message.author.id})`,
    114             inline: true,
    115           },
    116           {
    117             name: "Scam/IP Logger URL",
    118             value: `||https://${message.content
    119               .toLowerCase()
    120               .match(
    121                 /(https|http):\/\/([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+~-]*[\w.,@?^=%&:/~+~-])+/g
    122               )?.[0]
    123               .replace(/(https|http):\/\/+/g, "")
    124               .match(/\s*([^)]+?)\s*\/+/g, "")[0]
    125               .slice(0, -1)}||`,
    126             inline: true,
    127           }
    128         )
    129         .setFooter({
    130           text: `Tactical Protection by ${client.author}`,
    131           icon_url: client.user.displayAvatarURL({ dynamic: true }),
    132         });
    133       message.channel.send({
    134         embeds: [_],
    135       });
    136       client.channels.cache.get(client.config.ScamLinkLog).send({
    137         embeds: [
    138           _.addFields(
    139             {
    140               name: "Message",
    141               value: message.content,
    142               inline: false,
    143             },
    144             {
    145               name: "Guild",
    146               value: message.guild ? message.guild.name : "None",
    147               inline: true,
    148             }
    149           ),
    150         ],
    151       });
    152       message.delete().catch(() => {});
    153     }
    154   } catch (_) {}
    155 
    156   if (
    157     message?.content.startsWith(data.Guild.Prefix) ||
    158     message?.content.toLowerCase().startsWith("c.")
    159   ) {
    160     const embed = new EmbedBuilder()
    161       .setTitle(`Message commands are now disabled`)
    162       .setDescription(
    163         `Please enable **Use Application Commands** in the channel settings to get access to slash commands, we have discontinued message commands\n\nUse \`/help\` to see more info`
    164       )
    165       .setColor(client.color)
    166       .setThumbnail(message.guild.iconURL({ dynamic: true }))
    167       .addFields(
    168         {
    169           name: ":link: **Invite Me**",
    170           value: `[Click Here](${Utils.inviteLink(client.user.id)})`,
    171           inline: true,
    172         },
    173         {
    174           name: "<:support1:867093614403256350> **Need Help ?**",
    175           value: `Join our [Support Server](https://discord.gg/SbQHChmGcp)`,
    176           inline: true,
    177         },
    178         {
    179           name: "<:YouTube:841186450497339412> **Video Guide**",
    180           value: `[How to use Slash Coammands](https://youtu.be/YSKDu1gKntY)`,
    181           inline: true,
    182         },
    183         {
    184           name: `<:nyx_description:897379659665264650> Documentation`,
    185           value: `[Click here](${client.docs})`,
    186           inline: true,
    187         },
    188         {
    189           name: "<a:donate:896985486260846614> **Support us**",
    190           value: `[KoFi](https://ko-fi.com/cathteam)`,
    191           inline: true,
    192         },
    193         {
    194           name: "<a:booster:896527475063025704> **Premium**",
    195           value: `You can either boost support server or subscribe to developer's team [Ko-Fi](https://ko-fi.com/cathteam) or gift a nitro to one of the developer team.`,
    196           inline: false,
    197         }
    198       )
    199       .setURL(client.web)
    200       .setFooter({
    201         text: `Requested by ${message.author.tag}`,
    202         iconURL: message.author.displayAvatarURL({ dynamic: true }),
    203       })
    204       .setThumbnail(
    205         "https://raw.githubusercontent.com/night0721/cath.exe/main/util/assets/images/nyx_logo_transparent.webp"
    206       )
    207       .setTimestamp();
    208     message.reply({
    209       embeds: [embed],
    210       components: Utils.buttons(client),
    211     });
    212   }
    213 });
    214 client.on("messageCreate", async message => {
    215   if (message.channel.type === ChannelType.DM && !message.author.bot) {
    216     if (message.attachments && message?.content) {
    217       message.attachments.map(e =>
    218         client.channels.cache.get(client.config.DMLog).send({
    219           content: `\`${message.author.tag}(${message.author.id})\`: ${
    220             message.content + e.url
    221           }`,
    222         })
    223       );
    224     } else {
    225       message.attachments.map(e =>
    226         client.channels.cache.get(client.config.DMLog).send({
    227           content: `\`${message.author.tag}(${message.author.id})\`: ${e.url}`,
    228         })
    229       );
    230     }
    231     if (message.content) {
    232       client.channels.cache.get(client.config.DMLog).send({
    233         embeds: [
    234           new EmbedBuilder()
    235             .setDescription(message.content)
    236             .setColor(client.color)
    237             .setAuthor({
    238               name: message.author.tag,
    239               iconURL: message.author.displayAvatarURL({ dynamic: true }),
    240             }),
    241         ],
    242       });
    243     }
    244   }
    245 });