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
112 commands3 envUpdated 1h agoCreated Aug 27, 2026
commands/_start.js
javascript · 594 lines
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, "&")477 .replace(/</g, "<")478 .replace(/>/g, ">");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// ==========================================================