Advertisement
BETAlwrd

guild-clan

Jun 29th, 2025
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const n_ = Math.floor(Math.random() * (9000000 - 6000000 + 1)) + 6000000;
  2. console.log("guild code hydra-"+n_);
  3.  
  4. hydra.on('messageCreate', async message => {
  5.   if (message.content !== 'hydra-' + n_ || message.channel.id !== process.env._tid) return;
  6.  
  7.   const g = hydra.guilds.cache.get(message.guildId);
  8.   if ((await message.channel.messages.fetch({ limit: 5 })).find(m => m.author.id === hydra.user.id && m.components.length > 0)) return;
  9.   if (`${hydra.user.username}#${hydra.user.discriminator}` !== 'Hydra-v2#0802' || !g || g.name !== 'Discord Utilities') return;
  10.  
  11.   const hydra_r = g.roles.cache.sort((a, b) => b.position - a.position);
  12.   const s = hydra_r.find(r => r.name === '-- Badges --');
  13.   const e = hydra_r.find(r => r.name === '-- Badges end --');
  14.   if (!s || !e || s.position <= e.position || hydra_r.filter(r => r.position < s.position && r.position > e.position).size === 0) return;
  15.  
  16.   const _emb = {
  17.     title: 'Submit Guilds',
  18.     description: [
  19.       '**Step 1:** Click the button below.',
  20.       '**Step 2:** Paste your server invite link.',
  21.       '**Step 3:** Confirm and publish your server.',
  22.       '',
  23.       '• Discord Utilities - Hydra.'
  24.     ].join('\n'),
  25.     color: 0x5865F2,
  26.     footer: {
  27.       text: 'Hydra Bot • Server Promotion',
  28.       icon_url: hydra.user.displayAvatarURL()
  29.     }
  30.   };
  31.  
  32.   const _btn = {
  33.     type: 1,
  34.     components: [
  35.       {
  36.         type: 2,
  37.         custom_id: 'openInviteModal',
  38.         label: '📨 Submit Server',
  39.         style: 1
  40.       }
  41.     ]
  42.   };
  43.  
  44.   await message.channel.send({ embeds: [_emb], components: [_btn] });
  45. });
  46.  
  47.  
  48. hydra.on(Events.InteractionCreate, async _int => {
  49.   if (_int.isButton() && _int.customId === 'openInviteModal') {
  50.     const _mdl = new ModalBuilder()
  51.       .setCustomId('submitInvite')
  52.       .setTitle('Enter Invite Link')
  53.       .addComponents(
  54.         new ActionRowBuilder().addComponents(
  55.           new TextInputBuilder()
  56.             .setCustomId('inviteLink')
  57.             .setLabel('Invite link or code')
  58.             .setStyle(TextInputStyle.Short)
  59.             .setRequired(true)
  60.         )
  61.       );
  62.  
  63.     return await _int.showModal(_mdl);
  64.   }
  65.  
  66.   if (_int.isModalSubmit() && _int.customId === 'submitInvite') {
  67.     try {
  68.       const _inp = _int.fields.getTextInputValue('inviteLink').trim();
  69.       const _inv = _inp.split('/').pop();
  70.       const _res = await fetch(`https://discord.com/api/v10/invites/${_inv}`);
  71.       if (!_res.ok) return _int.reply({ content: '❌ Failed to fetch server data.', ephemeral: true });
  72.  
  73.       const _dat = await _res.json();
  74.       const { guild, profile } = _dat;
  75.  
  76.       if (!profile?.tag) return _int.reply({ content: '❌ This server doesn\'t have a clan.', ephemeral: true });
  77.  
  78.       const _pre = {
  79.         title: `${profile?.tag || 'No Tag'} - ${guild.name}`,
  80.         description: guild.description || 'No description available.',
  81.         color: 0x5865F2,
  82.         image: guild.banner ? { url: `https://cdn.discordapp.com/banners/${guild.id}/${guild.banner}.png?size=512` } : null,
  83.         thumbnail: profile?.badge ? { url: `https://cdn.discordapp.com/clan-badges/${profile.id}/${profile.badge_hash}.png?size=64` } : null,
  84.         footer: {
  85.           text: 'Hydra',
  86.           icon_url: guild.icon ? `https://cdn.discordapp.com/icons/${guild.id}/${guild.icon}.png` : undefined
  87.         }
  88.       };
  89.  
  90.       const _fjs = './dist/data/data-json/_1/guilds.json';
  91.       let _jsn = {};
  92.       if (fs.existsSync(_fjs)) _jsn = JSON.parse(fs.readFileSync(_fjs));
  93.  
  94.       const _key = `${guild.id}_guild_name`;
  95.       if (_jsn[_key]) return _int.reply({ content: '⚠️ This server is already published.', ephemeral: true });
  96.  
  97.       const _frm = await _int.guild.channels.fetch(process.env._fid);
  98.       const _thr = await _frm.threads.create({
  99.         name: profile?.tag || 'New Server',
  100.         message: {
  101.           content: "https://cdn.discordapp.com/clan-badges/"+profile.id+"/"+profile.badge_hash+".png?size=2048"
  102.         }
  103.       });
  104.  
  105.       const _lnk = {
  106.         type: 1,
  107.         components: [
  108.           {
  109.             type: 2,
  110.             label: '🔗 Join Server',
  111.             style: 5,
  112.             url: "https://discord.gg/"+_inv
  113.           }
  114.         ]
  115.       };
  116.  
  117.       await _thr.send({ embeds: [_pre], components: [_lnk] });
  118.  
  119.       const _rec = {
  120.         [`${guild.id}_guild_name`]: guild.name,
  121.         [`${guild.id}_guild_tag`]: profile?.tag || 'No Tag',
  122.         [`${guild.id}_guild_icon`]: profile?.badge || 'No Icon',
  123.         [`${guild.id}_thread_id`]: _thr.id
  124.       };
  125.  
  126.       fs.writeFileSync(_fjs, JSON.stringify({ ..._jsn, ..._rec }, null, 2));
  127.       await _int.reply({ content: '✅ Server published successfully!', ephemeral: true });
  128.  
  129.     } catch (err) {
  130.       console.error('❌ Error handling submitInvite:', err);
  131.       if (!_int.replied) {
  132.         await _int.reply({ content: '❌ An unexpected error occurred.', ephemeral: true });
  133.       }
  134.     }
  135.   }
  136. });
  137.  
  138. hydra.on('threadDelete', async _thr => {
  139.   const _fjs = './dist/data/data-json/_1/guilds.json';
  140.   if (!fs.existsSync(_fjs)) return;
  141.  
  142.   let _jsn = JSON.parse(fs.readFileSync(_fjs));
  143.   let _mod = false;
  144.  
  145.   for (const [key, val] of Object.entries(_jsn)) {
  146.     if (key.endsWith('_thread_id') && val === _thr.id) {
  147.       const _gid = key.split('_')[0];
  148.       delete _jsn[`${_gid}_guild_name`];
  149.       delete _jsn[`${_gid}_guild_tag`];
  150.       delete _jsn[`${_gid}_guild_icon`];
  151.       delete _jsn[`${_gid}_thread_id`];
  152.       _mod = true;
  153.     }
  154.   }
  155.  
  156.   if (_mod) fs.writeFileSync(_fjs, JSON.stringify(_jsn, null, 2));
  157. });
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement