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 1h agoCreated Aug 27, 2026
commands/_x.js
javascript · 447 lines
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 & 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 & 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});