millswelbeck148/SireimadeBotPublic · Bot Template

AISireImade appears to be a Telegram automation bot. Commands include /start, /about, /support, /id, /admin, /ban, /unban, /x. Observed in code: messaging, keyboards, games.

Utilityutility
ProfileTelegram
112 commands3 envUpdated 2h agoCreated Aug 27, 2026
Back to folder

commands/_start.js

javascript · 594 lines

Raw
1/**#command2name: /start3answer: 4keyboard: 5parse_mode: markdownv26aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ==========================================================13// 💜 GIFT AI — /start14// FORCE JOIN + USER REGISTRATION15//16// • Checks both required channels17// • Registers verified users18// • Uses broadcast_users database19// • Duplicate-safe20// • Never wipes existing users21// • Works with /broadcast22// • Handles membership-check errors safely23// • Replies directly to /start24// • TeleBotHost-safe25// ==========================================================26 27 28// ==========================================================29// 🛡️ SAFETY CHECK30// ==========================================================31 32if (!user) {33  return;34}35 36 37// ==========================================================38// 📢 REQUIRED CHANNELS39// ==========================================================40 41var channel1 = "@Sire_mide";42var channel2 = "@me_himweds";43 44var joinLink1 = "https://t.me/Sire_mide";45var joinLink2 = "https://t.me/+Znlg3G0aNQcyZjVk";46 47 48// ==========================================================49// 👤 CURRENT USER ID50// ==========================================================51 52var userId = String(53  user.telegramid || user.id || ""54).trim();55 56 57// ----------------------------------------------------------58// INVALID USER ID59// ----------------------------------------------------------60 61if (62  !userId ||63  !/^\d+$/.test(userId)64) {65  return;66}67 68 69// ==========================================================70// 📨 /START MESSAGE ID71// ==========================================================72 73var startMessageId = null;74 75if (76  request &&77  request.message_id78) {79  startMessageId = request.message_id;80}81 82 83// ==========================================================84// 🔍 CHECK CHANNEL MEMBERSHIP85// ==========================================================86 87var check1 = null;88var check2 = null;89 90 91// ==========================================================92// 🟣 CHANNEL 1 CHECK93// ==========================================================94 95try {96 97  check1 = Api.call(98    "getChatMember",99    {100      chat_id: channel1,101      user_id: userId102    }103  );104 105} catch (error1) {106 107  check1 = null;108 109}110 111 112// ==========================================================113// 🌺 CHANNEL 2 CHECK114// ==========================================================115 116try {117 118  check2 = Api.call(119    "getChatMember",120    {121      chat_id: channel2,122      user_id: userId123    }124  );125 126} catch (error2) {127 128  check2 = null;129 130}131 132 133// ==========================================================134// 👥 MEMBERSHIP CHECK FUNCTION135// ==========================================================136 137function isMember(result) {138 139  if (140    !result141  ) {142    return false;143  }144 145 146  // --------------------------------------------------------147  // Handle Telegram API response safely148  // --------------------------------------------------------149 150  if (151    result.ok !== true ||152    !result.result153  ) {154    return false;155  }156 157 158  var member =159    result.result;160 161  var status =162    String(member.status || "").toLowerCase();163 164 165  // --------------------------------------------------------166  // NORMAL MEMBER167  // --------------------------------------------------------168 169  if (170    status === "member"171  ) {172    return true;173  }174 175 176  // --------------------------------------------------------177  // ADMIN178  // --------------------------------------------------------179 180  if (181    status === "administrator"182  ) {183    return true;184  }185 186 187  // --------------------------------------------------------188  // OWNER189  // --------------------------------------------------------190 191  if (192    status === "creator"193  ) {194    return true;195  }196 197 198  // --------------------------------------------------------199  // RESTRICTED MEMBER200  // --------------------------------------------------------201 202  if (203    status === "restricted" &&204    member.is_member === true205  ) {206    return true;207  }208 209 210  return false;211}212 213 214// ==========================================================215// ✅ MEMBERSHIP RESULTS216// ==========================================================217 218var joined1 =219  isMember(check1);220 221var joined2 =222  isMember(check2);223 224 225// ==========================================================226// 🔒 FORCE JOIN227// ==========================================================228 229if (230  !joined1 ||231  !joined2232) {233 234  var missing = "";235 236 237  if (!joined1) {238 239    missing +=240      "🟣 <b>Channel 1</b>\n";241 242  }243 244 245  if (!joined2) {246 247    missing +=248      "🌺 <b>Channel 2</b>\n";249 250  }251 252 253  var forceJoinData = {254 255    text:256 257      "💜 <b>GIFT AI — ACCESS LOCKED</b> 🔐\n\n" +258 259      "👀 You're not getting in just yet.\n\n" +260 261      "To unlock <b>Gift AI</b>, you need to join " +262      "both required channels first. 🫶\n\n" +263 264      "╭━━━━━━━━━━━━━━━━━━╮\n" +265      "   💜 <b>REQUIRED CHANNELS</b> 💜\n" +266      "╰━━━━━━━━━━━━━━━━━━╯\n\n" +267 268      missing +269 270      "\n━━━━━━━━━━━━━━━━━━\n\n" +271 272      "✨ Join the missing channel(s) below.\n" +273      "🔄 Then tap <b>CHECK MEMBERSHIP</b>.\n\n" +274 275      "💜 Once you're verified, " +276      "Gift will unlock. 🔓",277 278    parse_mode: "HTML",279 280    reply_markup: {281 282      inline_keyboard: [283 284        [285          {286            text: "💜 JOIN CHANNEL 1",287            url: joinLink1288          }289        ],290 291        [292          {293            text: "🌺 JOIN CHANNEL 2",294            url: joinLink2295          }296        ],297 298        [299          {300            text: "🔄 CHECK MEMBERSHIP",301            callback_data: "start"302          }303        ]304 305      ]306 307    }308 309  };310 311 312  if (313    startMessageId314  ) {315 316    forceJoinData.reply_to_message_id =317      startMessageId;318 319  }320 321 322  Bot.sendMessage(323    forceJoinData324  );325 326  return;327}328 329 330// ==========================================================331// ✅ USER VERIFIED332// 📡 REGISTER USER333// ==========================================================334//335// IMPORTANT:336//337// /broadcast uses:338//339//     broadcast_users340//341// Therefore /start must save users into the SAME database.342//343// This prevents the situation where /start says the user344// is registered but /broadcast cannot find them.345// ==========================================================346 347var users =348  Bot.getProperty(349    "broadcast_users"350  );351 352 353// ==========================================================354// 🛡️ DATABASE SAFETY355// ==========================================================356 357if (358  !Array.isArray(users)359) {360 361  users = [];362 363}364 365 366// ==========================================================367// 🧹 CLEAN EXISTING DATABASE368// ==========================================================369//370// This removes invalid entries and duplicates without371// deleting valid users.372// ==========================================================373 374var cleanUsers = [];375var seenUsers = {};376 377for (378  var i = 0;379  i < users.length;380  i++381) {382 383  if (384    users[i] === null ||385    users[i] === undefined386  ) {387    continue;388  }389 390 391  var savedId =392    String(users[i]).trim();393 394 395  // --------------------------------------------------------396  // Only numeric Telegram IDs397  // --------------------------------------------------------398 399  if (400    !/^\d+$/.test(savedId)401  ) {402    continue;403  }404 405 406  // --------------------------------------------------------407  // Remove duplicates408  // --------------------------------------------------------409 410  if (411    seenUsers[savedId]412  ) {413    continue;414  }415 416 417  seenUsers[savedId] = true;418 419  cleanUsers.push(420    savedId421  );422 423}424 425 426// ==========================================================427// ➕ ADD CURRENT USER IF NOT ALREADY SAVED428// ==========================================================429 430if (431  !seenUsers[userId]432) {433 434  cleanUsers.push(435    userId436  );437 438}439 440 441// ==========================================================442// 💾 SAVE DATABASE443// ==========================================================444//445// IMPORTANT:446// The entire cleaned list is written back.447//448// Existing users are preserved.449// Duplicate users are not added.450// Invalid IDs are removed.451// ==========================================================452 453Bot.setProperty(454  "broadcast_users",455  cleanUsers,456  "json"457);458 459 460// ==========================================================461// 👤 USER FIRST NAME462// ==========================================================463 464var firstName =465  String(466    user.first_name || "there"467  );468 469 470// ==========================================================471// 🛡️ ESCAPE HTML472// ==========================================================473 474firstName =475  firstName476    .replace(/&/g, "&amp;")477    .replace(/</g, "&lt;")478    .replace(/>/g, "&gt;");479 480 481// ==========================================================482// 💜 WELCOME MESSAGE483// ==========================================================484 485var welcomeData = {486 487  text:488 489    "💜 <b>WELCOME TO GIFT AI</b> ✨\n\n" +490 491    "Hey, <b>" +492    firstName +493    "</b>! 👋🥰\n\n" +494 495    "🔓 Your access has been verified.\n" +496    "🤖 Gift is ready to serve you.\n\n" +497 498    "╭━━━━━━━━━━━━━━━━━━╮\n" +499    "   💫 <b>ACCESS GRANTED</b> 💫\n" +500    "╰━━━━━━━━━━━━━━━━━━╯\n\n" +501 502    "💜 Have fun...\n" +503    "and don't annoy Gift too much. 😭",504 505  parse_mode: "HTML"506 507};508 509 510if (511  startMessageId512) {513 514  welcomeData.reply_to_message_id =515    startMessageId;516 517}518 519 520Bot.sendMessage(521  welcomeData522);523 524 525// ==========================================================526// 🛠️ DEVELOPMENT MESSAGE527// ==========================================================528 529var developmentData = {530 531  text:532 533    "🛠️ <b>GIFT AI IS STILL UNDER DEVELOPMENT</b> 💜\n\n" +534 535    "👀 Some features are still being cooked...\n\n" +536 537    "⚙️ Commands are being improved.\n" +538    "✨ New features are coming.\n" +539    "🐞 Bugs are being hunted down.\n\n" +540 541    "╭━━━━━━━━━━━━━━━━━━╮\n" +542    "   💜 <b>STAY TUNED</b> 💜\n" +543    "╰━━━━━━━━━━━━━━━━━━╯\n\n" +544 545    "😭 Don't expect perfection yet.\n" +546    "Gift is still learning how to behave. 🤭\n\n" +547 548    "💜 Thanks for being here.",549 550  parse_mode: "HTML",551 552  reply_markup: {553 554    inline_keyboard: [555 556      [557        {558          text: "💜 SIRE MIDE",559          url: joinLink1560        }561      ],562 563      [564        {565          text: "🌺 ME HIMWEDS",566          url: joinLink2567        }568      ]569 570    ]571 572  }573 574};575 576 577if (578  startMessageId579) {580 581  developmentData.reply_to_message_id =582    startMessageId;583 584}585 586 587Bot.sendMessage(588  developmentData589);590 591 592// ==========================================================593// ✅ END /START594// ==========================================================