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 2h agoCreated Aug 27, 2026
commands/_search.js
javascript · 754 lines
1/**#command2name: /search3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ==========================================================13// 🔎 GIFT AI — /SEARCH14// USER + GROUP DATABASE SEARCH15//16// • OWNER CAN USE17// • SAVED BOT ADMINS CAN USE18// • REPLIES DIRECTLY TO /SEARCH MESSAGE19// • SEARCHES USERS + GROUPS20// • NAME / USERNAME / TELEGRAM ID21// • CASE-INSENSITIVE22// • DUPLICATE-FREE RESULTS23// ==========================================================24 25 26// ==========================================================27// 👑 BOT OWNER28// ==========================================================29 30var OWNER_ID = "8031061590";31 32 33// ==========================================================34// 👑 GET SAVED ADMINS35// ==========================================================36 37var admins =38 Bot.getProperty(39 "GIFT_BOT_ADMINS"40 );41 42 43if (!Array.isArray(admins)) {44 admins = [];45}46 47 48// ==========================================================49// 🔐 ADMIN CHECK50// ==========================================================51 52var currentUserId = "";53 54try {55 56 currentUserId =57 String(58 user.telegramid59 );60 61} catch (e) {62 63 currentUserId = "";64 65}66 67 68var isAdmin =69 currentUserId === OWNER_ID;70 71 72// Check saved admins73if (!isAdmin) {74 75 for (76 var a = 0;77 a < admins.length;78 a++79 ) {80 81 var savedAdmin =82 admins[a];83 84 85 var savedAdminId = "";86 87 88 // Supports:89 // ["123", "456"]90 // OR91 // [{id:"123"}]92 93 if (94 typeof savedAdmin === "object" &&95 savedAdmin !== null96 ) {97 98 if (99 savedAdmin.id !== undefined100 ) {101 102 savedAdminId =103 String(104 savedAdmin.id105 );106 107 }108 109 else if (110 savedAdmin.telegramid !== undefined111 ) {112 113 savedAdminId =114 String(115 savedAdmin.telegramid116 );117 118 }119 120 }121 122 else {123 124 savedAdminId =125 String(126 savedAdmin127 );128 129 }130 131 132 if (133 savedAdminId ===134 currentUserId135 ) {136 137 isAdmin = true;138 break;139 140 }141 142 }143 144}145 146 147// ==========================================================148// ❌ NOT ADMIN149// ==========================================================150 151if (!isAdmin) {152 153 try {154 155 Api.sendMessage({156 157 chat_id:158 chat.id,159 160 text:161 "❌ You don't have permission to use this command.",162 163 reply_to_message_id:164 request.message_id165 166 });167 168 } catch (e) {169 170 Bot.sendMessage(171 "❌ You don't have permission to use this command."172 );173 174 }175 176 return;177}178 179 180// ==========================================================181// 🔎 GET SEARCH QUERY182// ==========================================================183 184var query = "";185 186try {187 188 query =189 String(190 params || ""191 )192 .trim()193 .toLowerCase();194 195} catch (e) {196 197 query = "";198 199}200 201 202// ==========================================================203// EMPTY QUERY204// ==========================================================205 206if (!query) {207 208 try {209 210 Api.sendMessage({211 212 chat_id:213 chat.id,214 215 text:216 "🔎 <b>Search usage</b>\n\n" +217 "<code>/search a</code>\n" +218 "<code>/search alex</code>\n" +219 "<code>/search anime</code>\n" +220 "<code>/search 8031061590</code>",221 222 parse_mode:223 "HTML",224 225 reply_to_message_id:226 request.message_id227 228 });229 230 } catch (e) {231 232 Bot.sendMessage(233 "🔎 Usage: /search <name, username, letter or ID>"234 );235 236 }237 238 return;239}240 241 242// ==========================================================243// 🛡️ ESCAPE HTML244// ==========================================================245 246function escapeHTML(value) {247 248 return String(249 value || ""250 )251 .replace(252 /&/g,253 "&"254 )255 .replace(256 /</g,257 "<"258 )259 .replace(260 />/g,261 ">"262 )263 .replace(264 /"/g,265 """266 )267 .replace(268 /'/g,269 "'"270 );271 272}273 274 275// ==========================================================276// 📂 GET USER DATABASE277// ==========================================================278 279var users =280 Bot.getProperty(281 "GIFT_USERS_DATABASE"282 );283 284 285if (!Array.isArray(users)) {286 users = [];287}288 289 290// ==========================================================291// 📂 GET GROUP DATABASE292// ==========================================================293 294var groups =295 Bot.getProperty(296 "GIFT_GROUPS_DATABASE"297 );298 299 300if (!Array.isArray(groups)) {301 groups = [];302}303 304 305// ==========================================================306// 🔎 RESULTS307// ==========================================================308 309var peopleResults = [];310var groupResults = [];311 312 313// ==========================================================314// 👤 SEARCH USERS315// ==========================================================316 317for (318 var i = 0;319 i < users.length;320 i++321) {322 323 var person =324 users[i] || {};325 326 327 var personName =328 (329 String(330 person.first_name || ""331 ) +332 " " +333 String(334 person.last_name || ""335 )336 )337 .toLowerCase();338 339 340 var personUsername =341 String(342 person.username || ""343 )344 .replace(345 /^@/,346 ""347 )348 .toLowerCase();349 350 351 var personId =352 String(353 person.id || ""354 );355 356 357 if (358 personName.indexOf(query) !== -1 ||359 personUsername.indexOf(query) !== -1 ||360 personId === query361 ) {362 363 peopleResults.push(364 person365 );366 367 }368 369}370 371 372// ==========================================================373// 👥 SEARCH GROUPS374// ==========================================================375 376for (377 var g = 0;378 g < groups.length;379 g++380) {381 382 var group =383 groups[g] || {};384 385 386 var groupName =387 String(388 group.title || ""389 )390 .toLowerCase();391 392 393 var groupUsername =394 String(395 group.username || ""396 )397 .replace(398 /^@/,399 ""400 )401 .toLowerCase();402 403 404 var groupId =405 String(406 group.id || ""407 );408 409 410 if (411 groupName.indexOf(query) !== -1 ||412 groupUsername.indexOf(query) !== -1 ||413 groupId === query414 ) {415 416 groupResults.push(417 group418 );419 420 }421 422}423 424 425// ==========================================================426// 📊 RESULT LIMIT427// ==========================================================428 429var MAX_RESULTS = 30;430 431 432// ==========================================================433// 📝 BUILD RESPONSE434// ==========================================================435 436var text =437 "🔎 <b>GIFT SEARCH</b>\n" +438 "━━━━━━━━━━━━━━━━━━\n" +439 "🔍 Query: <code>" +440 escapeHTML(query) +441 "</code>\n\n";442 443 444// ==========================================================445// 👤 PEOPLE446// ==========================================================447 448if (449 peopleResults.length > 0450) {451 452 text +=453 "👤 <b>PEOPLE</b>\n\n";454 455 456 var peopleLimit =457 Math.min(458 peopleResults.length,459 MAX_RESULTS460 );461 462 463 for (464 var p = 0;465 p < peopleLimit;466 p++467 ) {468 469 var person =470 peopleResults[p];471 472 473 var name =474 String(475 person.first_name ||476 "Unknown"477 );478 479 480 if (481 person.last_name482 ) {483 484 name +=485 " " +486 String(487 person.last_name488 );489 490 }491 492 493 name =494 escapeHTML(495 name496 );497 498 499 var mention =500 "";501 502 503 if (504 person.id505 ) {506 507 mention =508 '<a href="tg://user?id=' +509 String(510 person.id511 ) +512 '">' +513 name +514 "</a>";515 516 }517 518 else {519 520 mention =521 name;522 523 }524 525 526 if (527 person.username528 ) {529 530 mention +=531 " — @" +532 escapeHTML(533 String(534 person.username535 ).replace(536 /^@/,537 ""538 )539 );540 541 }542 543 544 text +=545 (p + 1) +546 ". " +547 mention +548 "\n";549 550 }551 552 553 if (554 peopleResults.length >555 MAX_RESULTS556 ) {557 558 text +=559 "… and " +560 (561 peopleResults.length -562 MAX_RESULTS563 ) +564 " more\n";565 566 }567 568 569 text += "\n";570 571}572 573 574// ==========================================================575// 👥 GROUPS576// ==========================================================577 578if (579 groupResults.length > 0580) {581 582 text +=583 "👥 <b>GROUPS</b>\n\n";584 585 586 var groupLimit =587 Math.min(588 groupResults.length,589 MAX_RESULTS590 );591 592 593 for (594 var q = 0;595 q < groupLimit;596 q++597 ) {598 599 var group =600 groupResults[q];601 602 603 var groupName =604 escapeHTML(605 String(606 group.title ||607 "Unknown Group"608 )609 );610 611 612 text +=613 (q + 1) +614 ". 👥 <b>" +615 groupName +616 "</b>";617 618 619 if (620 group.username621 ) {622 623 text +=624 " — @" +625 escapeHTML(626 String(627 group.username628 ).replace(629 /^@/,630 ""631 )632 );633 634 }635 636 637 text += "\n";638 639 }640 641 642 if (643 groupResults.length >644 MAX_RESULTS645 ) {646 647 text +=648 "… and " +649 (650 groupResults.length -651 MAX_RESULTS652 ) +653 " more\n";654 655 }656 657 658 text += "\n";659 660}661 662 663// ==========================================================664// ❌ NO RESULTS665// ==========================================================666 667if (668 peopleResults.length === 0 &&669 groupResults.length === 0670) {671 672 text +=673 "❌ <b>No results found.</b>\n\n" +674 "Nothing in Gift's database matches " +675 "<code>" +676 escapeHTML(query) +677 "</code>.";678 679}680 681 682// ==========================================================683// 📊 TOTALS684// ==========================================================685 686if (687 peopleResults.length > 0 ||688 groupResults.length > 0689) {690 691 text +=692 "━━━━━━━━━━━━━━━━━━\n" +693 "👤 People: " +694 peopleResults.length +695 "\n" +696 "👥 Groups: " +697 groupResults.length +698 "\n" +699 "📊 Total: " +700 (701 peopleResults.length +702 groupResults.length703 );704 705}706 707 708// ==========================================================709// 📤 SEND RESULT710// ==========================================================711//712// IMPORTANT:713// reply_to_message_id makes Gift reply directly714// to the /search command.715// ==========================================================716 717try {718 719 Api.sendMessage({720 721 chat_id:722 chat.id,723 724 text:725 text,726 727 parse_mode:728 "HTML",729 730 disable_web_page_preview:731 true,732 733 reply_to_message_id:734 request.message_id735 736 });737 738} catch (e) {739 740 // Fallback without reply741 try {742 743 Bot.sendMessage(744 text745 );746 747 } catch (e2) {}748 749}750 751 752// ==========================================================753// END754// ==========================================================