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

javascript · 447 lines

Raw
1/**#command2name: /x3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ==========================================================13// 🎮 GIFT AI — /X14// TIC-TAC-TOE PLAYER X15// FAST • RESPONSIVE • ERROR-SAFE • ENGAGING16// ==========================================================17 18// ----------------------------------------------------------19// 📌 BASIC DATA20// ----------------------------------------------------------21 22var input = "";23var userId = "";24var chatId = "";25 26try {27  input = String(params || "").trim();28  userId = String(user.id);29  chatId = String(request.chat.id);30} catch (e) {31 32  Bot.sendMessage({33    text: "⚠️ <b>Something went wrong.</b>\n\nPlease try again.",34    parse_mode: "HTML"35  });36 37  return;38}39 40// ----------------------------------------------------------41// 🔑 GAME KEYS42// ----------------------------------------------------------43 44var keyX = "XO_X_" + chatId;45var keyO = "XO_O_" + chatId;46var keyBoard = "XO_BOARD_" + chatId;47var keyTurn = "XO_TURN_" + chatId;48 49// ----------------------------------------------------------50// 📦 LOAD GAME51// ----------------------------------------------------------52 53var playerX = Bot.getProperty(keyX);54var playerO = Bot.getProperty(keyO);55var board = Bot.getProperty(keyBoard);56var turn = Bot.getProperty(keyTurn);57 58if (playerX) playerX = String(playerX);59if (playerO) playerO = String(playerO);60if (turn) turn = String(turn);61 62// ----------------------------------------------------------63// 🎮 START GAME64// ----------------------------------------------------------65 66if (!playerX) {67 68  playerX = userId;69 70  board = [71    "1", "2", "3",72    "4", "5", "6",73    "7", "8", "9"74  ];75 76  turn = "X";77 78  Bot.setProperty(keyX, playerX, "string");79  Bot.setProperty(keyBoard, board, "json");80  Bot.setProperty(keyTurn, turn, "string");81 82  Bot.sendMessage({83    text:84      "🎮 <b>X &amp; O</b>\n\n" +85 86      "❌ <b>Player X:</b> " +87      '<a href="tg://user?id=' + playerX + '">Player X</a>' +88      "\n\n" +89 90      "🔥 <b>Game created!</b>\n" +91      "You're Player X.\n\n" +92 93      "⏳ <b>Waiting for Player O...</b>\n\n" +94      "👉 Another player should use <b>/o</b> to join.",95 96    parse_mode: "HTML",97    reply_to_message_id:98      request && request.message_id99        ? request.message_id100        : undefined101  });102 103  return;104}105 106// ----------------------------------------------------------107// 🛡️ VALIDATE BOARD108// ----------------------------------------------------------109 110if (111  !Array.isArray(board) ||112  board.length !== 9113) {114 115  board = [116    "1", "2", "3",117    "4", "5", "6",118    "7", "8", "9"119  ];120 121  Bot.setProperty(keyBoard, board, "json");122}123 124// ----------------------------------------------------------125// ❌ ONLY PLAYER X CAN USE /X126// ----------------------------------------------------------127 128if (userId !== playerX) {129 130  if (!playerO) {131 132    Bot.sendMessage({133      text:134        "⏳ <b>This game already belongs to another player.</b>\n\n" +135 136        "❌ Player X: " +137        '<a href="tg://user?id=' + playerX + '">Player X</a>' +138        "\n\n" +139 140        "👉 Want to join?\n" +141        "Use <b>/o</b> to become Player O.",142 143      parse_mode: "HTML",144      reply_to_message_id:145        request && request.message_id146          ? request.message_id147          : undefined148    });149 150    return;151  }152 153  Bot.sendMessage({154    text:155      "⛔ <b>You are not Player X.</b>\n\n" +156      "Only the player who started the game can use <b>/x</b>.",157 158    parse_mode: "HTML",159    reply_to_message_id:160      request && request.message_id161        ? request.message_id162        : undefined163  });164 165  return;166}167 168// ----------------------------------------------------------169// ⏳ WAITING FOR PLAYER O170// ----------------------------------------------------------171 172if (!playerO) {173 174  Bot.sendMessage({175    text:176      "⏳ <b>Waiting for Player O...</b>\n\n" +177      "❌ You're Player X.\n\n" +178      "👉 Ask another player to use <b>/o</b> to join the game.",179 180    parse_mode: "HTML",181    reply_to_message_id:182      request && request.message_id183        ? request.message_id184        : undefined185  });186 187  return;188}189 190// ----------------------------------------------------------191// 🎯 CHECK TURN192// ----------------------------------------------------------193 194if (turn !== "X") {195 196  Bot.sendMessage({197    text:198      "⏳ <b>Not your turn!</b>\n\n" +199      "⭕ It's <b>Player O's</b> turn.\n\n" +200      "Wait for them to make their move.",201 202    parse_mode: "HTML",203    reply_to_message_id:204      request && request.message_id205        ? request.message_id206        : undefined207  });208 209  return;210}211 212// ----------------------------------------------------------213// ❓ NO POSITION214// ----------------------------------------------------------215 216if (!input) {217 218  Bot.sendMessage({219    text:220      "🎮 <b>Your turn, Player X!</b>\n\n" +221      "❌ Choose a position from <b>1 to 9</b>.\n\n" +222 223      "Example:\n" +224      "<code>/x 5</code>\n\n" +225 226      "🎯 Pick your move wisely!",227 228    parse_mode: "HTML",229    reply_to_message_id:230      request && request.message_id231        ? request.message_id232        : undefined233  });234 235  return;236}237 238// ----------------------------------------------------------239// 🔢 VALIDATE POSITION240// ----------------------------------------------------------241 242var pos = parseInt(input, 10) - 1;243 244if (245  isNaN(pos) ||246  pos < 0 ||247  pos > 8 ||248  String(pos + 1) !== String(parseInt(input, 10))249) {250 251  Bot.sendMessage({252    text:253      "❌ <b>Invalid position.</b>\n\n" +254      "Choose a number from <b>1 to 9</b>.\n\n" +255      "Example: <code>/x 5</code>",256 257    parse_mode: "HTML",258    reply_to_message_id:259      request && request.message_id260        ? request.message_id261        : undefined262  });263 264  return;265}266 267// ----------------------------------------------------------268// 🚫 POSITION ALREADY TAKEN269// ----------------------------------------------------------270 271if (272  board[pos] === "X" ||273  board[pos] === "O"274) {275 276  Bot.sendMessage({277    text:278      "🚫 <b>That position is already taken!</b>\n\n" +279      "🎯 Choose another position from <b>1–9</b>.",280 281    parse_mode: "HTML",282    reply_to_message_id:283      request && request.message_id284        ? request.message_id285        : undefined286  });287 288  return;289}290 291// ----------------------------------------------------------292// ❌ MAKE X MOVE293// ----------------------------------------------------------294 295board[pos] = "X";296 297// ----------------------------------------------------------298// 🏆 WINNING COMBINATIONS299// ----------------------------------------------------------300 301var winningLines = [302  [0, 1, 2],303  [3, 4, 5],304  [6, 7, 8],305  [0, 3, 6],306  [1, 4, 7],307  [2, 5, 8],308  [0, 4, 8],309  [2, 4, 6]310];311 312var win = false;313 314for (var w = 0; w < winningLines.length; w++) {315 316  var line = winningLines[w];317 318  if (319    board[line[0]] === "X" &&320    board[line[1]] === "X" &&321    board[line[2]] === "X"322  ) {323    win = true;324    break;325  }326}327 328// ----------------------------------------------------------329// 🏆 PLAYER X WINS330// ----------------------------------------------------------331 332if (win) {333 334  Bot.sendMessage({335    text:336      "🏆 <b>PLAYER X WINS!</b>\n\n" +337 338      "❌ " +339      '<a href="tg://user?id=' + playerX + '">Player X</a>' +340      " played a winning move!\n\n" +341 342      "🔥 <b>Congratulations!</b>\n" +343      "Better luck next time, Player O. 😏",344 345    parse_mode: "HTML",346    reply_to_message_id:347      request && request.message_id348        ? request.message_id349        : undefined350  });351 352  // Clear finished game353  Bot.setProperty(keyX, null);354  Bot.setProperty(keyO, null);355  Bot.setProperty(keyBoard, null);356  Bot.setProperty(keyTurn, null);357 358  return;359}360 361// ----------------------------------------------------------362// 🤝 DRAW CHECK363// ----------------------------------------------------------364 365var full = true;366 367for (var i = 0; i < 9; i++) {368 369  if (370    board[i] !== "X" &&371    board[i] !== "O"372  ) {373    full = false;374    break;375  }376}377 378// ----------------------------------------------------------379// 🤝 DRAW380// ----------------------------------------------------------381 382if (full) {383 384  Bot.sendMessage({385    text:386      "🤝 <b>IT'S A DRAW!</b>\n\n" +387 388      "❌ Player X: " +389      '<a href="tg://user?id=' + playerX + '">Player X</a>' +390      "\n" +391 392      "⭕ Player O: " +393      '<a href="tg://user?id=' + playerO + '">Player O</a>' +394      "\n\n" +395 396      "🔥 Nobody takes the win this time!",397 398    parse_mode: "HTML",399    reply_to_message_id:400      request && request.message_id401        ? request.message_id402        : undefined403  });404 405  // Clear finished game406  Bot.setProperty(keyX, null);407  Bot.setProperty(keyO, null);408  Bot.setProperty(keyBoard, null);409  Bot.setProperty(keyTurn, null);410 411  return;412}413 414// ----------------------------------------------------------415// 💾 SAVE GAME416// ----------------------------------------------------------417 418Bot.setProperty(keyBoard, board, "json");419Bot.setProperty(keyTurn, "O", "string");420 421// ----------------------------------------------------------422// ⭕ O TURN423// ----------------------------------------------------------424 425Bot.sendMessage({426  text:427    "🎮 <b>X &amp; O</b>\n\n" +428 429    "❌ Player X: " +430    '<a href="tg://user?id=' + playerX + '">Player X</a>' +431    "\n" +432 433    "⭕ Player O: " +434    '<a href="tg://user?id=' + playerO + '">Player O</a>' +435    "\n\n" +436 437    "✅ <b>Player X made a move!</b>\n\n" +438 439    "🎯 <b>Player O's turn.</b>\n" +440    "👉 Use <b>/o 1</b> to <b>/o 9</b>.",441 442  parse_mode: "HTML",443  reply_to_message_id:444    request && request.message_id445      ? request.message_id446      : undefined447});