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/_stats.js

javascript · 622 lines

Raw
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);