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 1h agoCreated Aug 27, 2026
Back to folder

commands/_o.js

javascript · 496 lines

Raw
1/**#command2name: /o3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ==========================================================13// 🎮 GIFT AI — /O14// TIC-TAC-TOE PLAYER O15// /O = JOIN16// /O 1-9 = MAKE MOVE17// FAST • RESPONSIVE • ERROR-SAFE • ENGAGING18// DIRECT REPLY19// ==========================================================20 21// ----------------------------------------------------------22// 📌 BASIC DATA23// ----------------------------------------------------------24 25var input = "";26var userId = "";27var chatId = "";28 29try {30  input = String(params || "").trim();31  userId = String(request.from.id);32  chatId = String(request.chat.id);33} catch (e) {34 35  Bot.sendMessage({36    text:37      "⚠️ <b>Something went wrong.</b>\n\n" +38      "Please try again.",39 40    parse_mode: "HTML"41  });42 43  return;44}45 46// ----------------------------------------------------------47// 🔑 GAME KEYS48// ----------------------------------------------------------49 50var keyX = "XO_X_" + chatId;51var keyO = "XO_O_" + chatId;52var keyBoard = "XO_BOARD_" + chatId;53var keyTurn = "XO_TURN_" + chatId;54 55// ----------------------------------------------------------56// 📦 LOAD GAME57// ----------------------------------------------------------58 59var playerX = Bot.getProperty(keyX);60var playerO = Bot.getProperty(keyO);61var board = Bot.getProperty(keyBoard);62var turn = Bot.getProperty(keyTurn);63 64if (playerX) playerX = String(playerX);65if (playerO) playerO = String(playerO);66if (turn) turn = String(turn);67 68// ----------------------------------------------------------69// 🚫 NO ACTIVE GAME70// ----------------------------------------------------------71 72if (!playerX) {73 74  Bot.sendMessage({75    text:76      "❌ <b>NO ACTIVE GAME</b>\n\n" +77      "🎮 Start a new game with <b>/x</b>.",78 79    parse_mode: "HTML",80    reply_to_message_id:81      request && request.message_id82        ? request.message_id83        : undefined84  });85 86  return;87}88 89// ----------------------------------------------------------90// 📋 VALIDATE / REPAIR BOARD91// ----------------------------------------------------------92 93if (!Array.isArray(board) || board.length !== 9) {94 95  board = [96    "1", "2", "3",97    "4", "5", "6",98    "7", "8", "9"99  ];100 101  Bot.setProperty(keyBoard, board, "json");102}103 104// ==========================================================105// ⭕ PLAYER O ALREADY EXISTS106// ==========================================================107 108if (playerO) {109 110  // --------------------------------------------------------111  // ⭕ CURRENT O PLAYER112  // --------------------------------------------------------113 114  if (userId === playerO) {115 116    // ------------------------------------------------------117    // ❓ /O WITHOUT MOVE118    // ------------------------------------------------------119 120    if (!input) {121 122      if (turn !== "O") {123 124        Bot.sendMessage({125          text:126            "⏳ <b>Not your turn!</b>\n\n" +127            "❌ It's <b>Player X's</b> turn.\n\n" +128            "Wait for X to play.",129 130          parse_mode: "HTML",131          reply_to_message_id:132            request && request.message_id133              ? request.message_id134              : undefined135        });136 137        return;138      }139 140      Bot.sendMessage({141        text:142          "🎮 <b>Your turn, Player O!</b>\n\n" +143          "⭕ Choose a position from <b>1 to 9</b>.\n\n" +144          "Example:\n" +145          "<code>/o 7</code>\n\n" +146          "🎯 Make your move!",147 148        parse_mode: "HTML",149        reply_to_message_id:150          request && request.message_id151            ? request.message_id152            : undefined153      });154 155      return;156    }157 158    // ------------------------------------------------------159    // 🎯 CHECK O TURN160    // ------------------------------------------------------161 162    if (turn !== "O") {163 164      Bot.sendMessage({165        text:166          "⏳ <b>Not your turn!</b>\n\n" +167          "❌ Player X is currently playing.\n\n" +168          "Wait for Player X to make a move.",169 170        parse_mode: "HTML",171        reply_to_message_id:172          request && request.message_id173            ? request.message_id174            : undefined175      });176 177      return;178    }179 180    // ------------------------------------------------------181    // 🔢 POSITION182    // ------------------------------------------------------183 184    var pos = parseInt(input, 10) - 1;185 186    if (187      isNaN(pos) ||188      pos < 0 ||189      pos > 8 ||190      String(pos + 1) !== String(parseInt(input, 10))191    ) {192 193      Bot.sendMessage({194        text:195          "❌ <b>Invalid position.</b>\n\n" +196          "Choose a number from <b>1 to 9</b>.\n\n" +197          "Example: <code>/o 7</code>",198 199        parse_mode: "HTML",200        reply_to_message_id:201          request && request.message_id202            ? request.message_id203            : undefined204      });205 206      return;207    }208 209    // ------------------------------------------------------210    // 🚫 POSITION TAKEN211    // ------------------------------------------------------212 213    if (214      board[pos] === "X" ||215      board[pos] === "O"216    ) {217 218      Bot.sendMessage({219        text:220          "🚫 <b>That position is already taken!</b>\n\n" +221          "🎯 Choose another position from <b>1–9</b>.",222 223        parse_mode: "HTML",224        reply_to_message_id:225          request && request.message_id226            ? request.message_id227            : undefined228      });229 230      return;231    }232 233    // ------------------------------------------------------234    // ⭕ MAKE O MOVE235    // ------------------------------------------------------236 237    board[pos] = "O";238 239    // ------------------------------------------------------240    // 🏆 WINNING COMBINATIONS241    // ------------------------------------------------------242 243    var winningLines = [244      [0, 1, 2],245      [3, 4, 5],246      [6, 7, 8],247      [0, 3, 6],248      [1, 4, 7],249      [2, 5, 8],250      [0, 4, 8],251      [2, 4, 6]252    ];253 254    var win = false;255 256    for (var w = 0; w < winningLines.length; w++) {257 258      var line = winningLines[w];259 260      if (261        board[line[0]] === "O" &&262        board[line[1]] === "O" &&263        board[line[2]] === "O"264      ) {265        win = true;266        break;267      }268    }269 270    // ------------------------------------------------------271    // 🏆 PLAYER O WINS272    // ------------------------------------------------------273 274    if (win) {275 276      Bot.sendMessage({277        text:278          "🏆 <b>PLAYER O WINS!</b>\n\n" +279 280          "⭕ " +281          '<a href="tg://user?id=' + playerO + '">Player O</a>' +282          " played a winning move!\n\n" +283 284          "🔥 <b>Congratulations!</b>\n" +285          "Player X has been defeated. 😏",286 287        parse_mode: "HTML",288        reply_to_message_id:289          request && request.message_id290            ? request.message_id291            : undefined292      });293 294      // Clear finished game295      Bot.setProperty(keyX, null);296      Bot.setProperty(keyO, null);297      Bot.setProperty(keyBoard, null);298      Bot.setProperty(keyTurn, null);299 300      return;301    }302 303    // ------------------------------------------------------304    // 🤝 DRAW CHECK305    // ------------------------------------------------------306 307    var full = true;308 309    for (var i = 0; i < 9; i++) {310 311      if (312        board[i] !== "X" &&313        board[i] !== "O"314      ) {315        full = false;316        break;317      }318    }319 320    // ------------------------------------------------------321    // 🤝 DRAW322    // ------------------------------------------------------323 324    if (full) {325 326      Bot.sendMessage({327        text:328          "🤝 <b>IT'S A DRAW!</b>\n\n" +329 330          "❌ Player X: " +331          '<a href="tg://user?id=' + playerX + '">Player X</a>' +332          "\n" +333 334          "⭕ Player O: " +335          '<a href="tg://user?id=' + playerO + '">Player O</a>' +336          "\n\n" +337 338          "🔥 Nobody takes the win this time!",339 340        parse_mode: "HTML",341        reply_to_message_id:342          request && request.message_id343            ? request.message_id344            : undefined345      });346 347      Bot.setProperty(keyX, null);348      Bot.setProperty(keyO, null);349      Bot.setProperty(keyBoard, null);350      Bot.setProperty(keyTurn, null);351 352      return;353    }354 355    // ------------------------------------------------------356    // 💾 SAVE → X TURN357    // ------------------------------------------------------358 359    Bot.setProperty(keyBoard, board, "json");360    Bot.setProperty(keyTurn, "X", "string");361 362    Bot.sendMessage({363      text:364        "🎮 <b>X &amp; O</b>\n\n" +365 366        "❌ Player X: " +367        '<a href="tg://user?id=' + playerX + '">Player X</a>' +368        "\n" +369 370        "⭕ Player O: " +371        '<a href="tg://user?id=' + playerO + '">Player O</a>' +372        "\n\n" +373 374        "✅ <b>Player O made a move!</b>\n\n" +375 376        "🎯 <b>Player X's turn.</b>\n" +377        "👉 Use <b>/x 1</b> to <b>/x 9</b>.",378 379      parse_mode: "HTML",380      reply_to_message_id:381        request && request.message_id382          ? request.message_id383          : undefined384    });385 386    return;387  }388 389  // --------------------------------------------------------390  // 🚫 SOMEONE ELSE TRIES /O 7391  // --------------------------------------------------------392 393  Bot.sendMessage({394    text:395      "⛔ <b>Player O is already taken!</b>\n\n" +396 397      "❌ Player X: " +398      '<a href="tg://user?id=' + playerX + '">Player X</a>' +399      "\n" +400 401      "⭕ Player O: " +402      '<a href="tg://user?id=' + playerO + '">Player O</a>' +403      "\n\n" +404 405      "🎮 This game already has two players.",406 407    parse_mode: "HTML",408    reply_to_message_id:409      request && request.message_id410        ? request.message_id411        : undefined412  });413 414  return;415}416 417// ==========================================================418// ⭕ NO PLAYER O YET — JOIN GAME419// ==========================================================420 421// X cannot join as O422if (userId === playerX) {423 424  Bot.sendMessage({425    text:426      "❌ <b>You are already Player X!</b>\n\n" +427      "You can't join the same game as Player O.",428 429    parse_mode: "HTML",430    reply_to_message_id:431      request && request.message_id432        ? request.message_id433        : undefined434  });435 436  return;437}438 439// ----------------------------------------------------------440// ⭕ JOIN AS PLAYER O441// ----------------------------------------------------------442 443playerO = userId;444 445Bot.setProperty(446  keyO,447  playerO,448  "string"449);450 451// X always goes first452turn = "X";453 454Bot.setProperty(455  keyTurn,456  turn,457  "string"458);459 460Bot.setProperty(461  keyBoard,462  board,463  "json"464);465 466// ----------------------------------------------------------467// 🎮 GAME STARTED468// ----------------------------------------------------------469 470Bot.sendMessage({471  text:472    "🎮 <b>X &amp; O GAME</b>\n\n" +473 474    "🔥 <b>Player O joined!</b>\n\n" +475 476    "❌ <b>X:</b> " +477    '<a href="tg://user?id=' + playerX + '">Player X</a>' +478    "\n" +479 480    "⭕ <b>O:</b> " +481    '<a href="tg://user?id=' + playerO + '">Player O</a>' +482    "\n\n" +483 484    "🚀 <b>Game started!</b>\n\n" +485 486    "🎯 <b>Player X goes first.</b>\n" +487    "👉 Use <b>/x 1</b> to <b>/x 9</b>.\n\n" +488 489    "🍀 Good luck to both players!",490 491  parse_mode: "HTML",492  reply_to_message_id:493    request && request.message_id494      ? request.message_id495      : undefined496});