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/_o.js
javascript · 496 lines
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 & 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 & 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});