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/_stats.js
javascript · 622 lines
1/**#command2name: /stats3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ==========================================================13// 👑 GIFT AI — /stats14// ADMIN-ONLY BOT STATISTICS15//16// • Owner + saved bot admins17// • Uses ONLY modern db.bot storage18// • Single source of truth19// • Duplicate-safe20// • Cleans invalid IDs21// • Shows all saved user IDs22// • Replies directly to /stats23// • TeleBotHost compatible24// ==========================================================25 26 27// ==========================================================28// 🛡️ SAFETY CHECK29// ==========================================================30 31if (!user) {32 return;33}34 35 36// ==========================================================37// 👑 BOT OWNER38// ==========================================================39 40var OWNER_ID = "8031061590";41 42 43// ==========================================================44// 👑 GET SAVED BOT ADMINS45// ==========================================================46 47var admins = [];48 49try {50 51 admins = Bot.getProperty(52 "GIFT_BOT_ADMINS"53 );54 55} catch (error) {56 57 admins = [];58 59}60 61if (!Array.isArray(admins)) {62 admins = [];63}64 65 66// ==========================================================67// 👤 CURRENT USER68// ==========================================================69 70var senderId = String(71 user.telegramid ||72 user.id ||73 ""74).trim();75 76 77// ==========================================================78// 🔐 ADMIN CHECK79// ==========================================================80 81var isAdmin = false;82 83 84// ----------------------------------------------------------85// OWNER86// ----------------------------------------------------------87 88if (senderId === OWNER_ID) {89 isAdmin = true;90}91 92 93// ----------------------------------------------------------94// SAVED ADMINS95// ----------------------------------------------------------96 97if (!isAdmin) {98 99 for (100 var i = 0;101 i < admins.length;102 i++103 ) {104 105 var savedAdminId = String(106 admins[i] || ""107 ).trim();108 109 if (110 savedAdminId &&111 savedAdminId === senderId112 ) {113 114 isAdmin = true;115 break;116 117 }118 119 }120 121}122 123 124// ==========================================================125// ❌ DENY NON-ADMINS126// ==========================================================127 128if (!isAdmin) {129 130 var deniedData = {131 132 chat_id:133 user.telegramid,134 135 text:136 "⛔ <b>ACCESS DENIED</b>\n\n" +137 "You don't have permission to use " +138 "<code>/stats</code>.",139 140 parse_mode:141 "HTML"142 143 };144 145 if (146 request &&147 request.message_id148 ) {149 150 deniedData.reply_to_message_id =151 request.message_id;152 153 }154 155 Api.sendMessage(156 deniedData157 );158 159 return;160}161 162 163// ==========================================================164// 📊 READ MODERN USER DATABASE165// ==========================================================166//167// Single source of truth:168// gift_broadcast_users169//170// No old broadcast_users storage is used.171// ==========================================================172 173var users = null;174 175try {176 177 users = await db.bot.get(178 "gift_broadcast_users",179 []180 );181 182} catch (error) {183 184 users = null;185 186}187 188 189// ==========================================================190// 🛡️ DATABASE READ CHECK191// ==========================================================192 193if (!Array.isArray(users)) {194 195 var statsErrorData = {196 197 chat_id:198 user.telegramid,199 200 text:201 "⚠️ <b>DATABASE ERROR</b>\n\n" +202 203 "Gift couldn't read the user database right now.\n\n" +204 205 "Please try <code>/stats</code> again.",206 207 parse_mode:208 "HTML"209 210 };211 212 if (213 request &&214 request.message_id215 ) {216 217 statsErrorData.reply_to_message_id =218 request.message_id;219 220 }221 222 Api.sendMessage(223 statsErrorData224 );225 226 return;227}228 229 230// ==========================================================231// 🧹 CLEAN + DEDUPLICATE USER DATABASE232// ==========================================================233 234var cleanUsers = [];235var seenUsers = {};236 237for (238 var u = 0;239 u < users.length;240 u++241) {242 243 if (244 users[u] === null ||245 users[u] === undefined246 ) {247 continue;248 }249 250 var userId = String(251 users[u]252 ).trim();253 254 // Telegram numeric IDs only255 if (256 !/^\d+$/.test(userId)257 ) {258 continue;259 }260 261 // Remove duplicates262 if (263 seenUsers[userId]264 ) {265 continue;266 }267 268 seenUsers[userId] = true;269 270 cleanUsers.push(271 userId272 );273 274}275 276 277// ==========================================================278// 💾 SAVE CLEAN DATABASE279// ==========================================================280//281// Keeps the database clean and duplicate-safe.282// ==========================================================283 284try {285 286 await db.bot.set(287 "gift_broadcast_users",288 cleanUsers,289 {290 type: "array"291 }292 );293 294} catch (error) {295 296 // Reading statistics is still possible297 // even if cleanup saving fails.298 299}300 301 302// ==========================================================303// 👥 TOTAL USERS304// ==========================================================305 306var totalUsers =307 cleanUsers.length;308 309 310// ==========================================================311// 👑 COUNT UNIQUE ADMINS312// ==========================================================313 314var uniqueAdmins = {};315var adminCount = 0;316 317 318// ----------------------------------------------------------319// OWNER320// ----------------------------------------------------------321 322uniqueAdmins[OWNER_ID] = true;323adminCount++;324 325 326// ----------------------------------------------------------327// SAVED ADMINS328// ----------------------------------------------------------329 330for (331 var a = 0;332 a < admins.length;333 a++334) {335 336 var adminId = String(337 admins[a] || ""338 ).trim();339 340 if (341 /^\d+$/.test(adminId) &&342 !uniqueAdmins[adminId]343 ) {344 345 uniqueAdmins[adminId] = true;346 347 adminCount++;348 349 }350 351}352 353 354// ==========================================================355// 🤖 BOT START TIME356// ==========================================================357 358var startedAt = null;359 360try {361 362 startedAt = await db.bot.get(363 "bot_started_at",364 null365 );366 367} catch (error) {368 369 startedAt = null;370 371}372 373 374// ==========================================================375// ⏱️ CREATE START TIME IF MISSING376// ==========================================================377 378if (379 !startedAt ||380 isNaN(Number(startedAt))381) {382 383 startedAt = Date.now();384 385 try {386 387 await db.bot.set(388 "bot_started_at",389 startedAt,390 {391 type: "number"392 }393 );394 395 } catch (error) {396 397 // Continue normally.398 }399 400}401 402 403// ==========================================================404// ⏱️ CALCULATE UPTIME405// ==========================================================406 407var uptimeMs =408 Math.max(409 0,410 Date.now() -411 Number(startedAt)412 );413 414 415var totalSeconds =416 Math.floor(417 uptimeMs / 1000418 );419 420 421var days =422 Math.floor(423 totalSeconds / 86400424 );425 426totalSeconds %=427 86400;428 429 430var hours =431 Math.floor(432 totalSeconds / 3600433 );434 435totalSeconds %=436 3600;437 438 439var minutes =440 Math.floor(441 totalSeconds / 60442 );443 444 445var seconds =446 totalSeconds % 60;447 448 449// ==========================================================450// ⏱️ FORMAT UPTIME451// ==========================================================452 453var uptimeParts = [];454 455 456if (days > 0) {457 458 uptimeParts.push(459 days + "d"460 );461 462}463 464 465if (hours > 0) {466 467 uptimeParts.push(468 hours + "h"469 );470 471}472 473 474if (minutes > 0) {475 476 uptimeParts.push(477 minutes + "m"478 );479 480}481 482 483if (484 seconds > 0 ||485 uptimeParts.length === 0486) {487 488 uptimeParts.push(489 seconds + "s"490 );491 492}493 494 495var uptime =496 uptimeParts.join(" ");497 498 499// ==========================================================500// 🆔 BUILD USER ID LIST501// ==========================================================502 503var userIdList = "";504 505 506if (507 cleanUsers.length === 0508) {509 510 userIdList =511 "│ <i>No verified users yet.</i>\n";512 513} else {514 515 for (516 var x = 0;517 x < cleanUsers.length;518 x++519 ) {520 521 userIdList +=522 "│ " +523 (x + 1) +524 ". <code>" +525 cleanUsers[x] +526 "</code>\n";527 528 }529 530}531 532 533// ==========================================================534// 📊 BUILD STATISTICS535// ==========================================================536 537var stats =538 "╭━━━━━━━━━━━━━━━━━━━━╮\n" +539 " 💜 <b>GIFT AI</b>\n" +540 " 📊 <b>SYSTEM STATISTICS</b>\n" +541 "╰━━━━━━━━━━━━━━━━━━━━╯\n\n" +542 543 "👥 <b>USER DATABASE</b>\n" +544 "┌───────────────\n" +545 546 "│ 👤 Total Users: <b>" +547 totalUsers +548 "</b>\n" +549 550 "│ 👑 Bot Admins: <b>" +551 adminCount +552 "</b>\n" +553 554 "└───────────────\n\n" +555 556 "🆔 <b>SAVED /START USERS</b>\n" +557 "┌───────────────\n" +558 559 userIdList +560 561 "└───────────────\n\n" +562 563 "⚡ <b>SYSTEM STATUS</b>\n" +564 "┌───────────────\n" +565 566 "│ 🤖 Status: <b>ONLINE</b> 🟢\n" +567 568 "│ ⏱ Uptime: <b>" +569 uptime +570 "</b>\n" +571 572 "│ 💾 Database: <b>HEALTHY</b> ✅\n" +573 574 "└───────────────\n\n" +575 576 "━━━━━━━━━━━━━━━━━━━━\n" +577 578 "🛡 <i>Admin Statistics Panel</i>\n" +579 580 "💜 <b>Gift AI</b> is running smoothly.";581 582 583// ==========================================================584// 📤 SEND STATISTICS585// ==========================================================586 587var statsData = {588 589 chat_id:590 user.telegramid,591 592 text:593 stats,594 595 parse_mode:596 "HTML"597 598};599 600 601// ==========================================================602// ↩️ REPLY DIRECTLY TO /STATS603// ==========================================================604 605if (606 request &&607 request.message_id608) {609 610 statsData.reply_to_message_id =611 request.message_id;612 613}614 615 616// ==========================================================617// 📤 SEND618// ==========================================================619 620Api.sendMessage(621 statsData622);