From 10efe53e6de5c91229f7c0abb3d279f3db2c31d4 Mon Sep 17 00:00:00 2001
From: "Elizabeth (Lizzy) Hunt" <elizabeth.hunt@simponic.xyz>
Date: Mon, 20 Nov 2023 12:53:25 -0700
Subject: create bot docs

---
 front/src/routes/man_pages.jsx | 60 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 59 insertions(+), 1 deletion(-)

(limited to 'front/src/routes/man_pages.jsx')

diff --git a/front/src/routes/man_pages.jsx b/front/src/routes/man_pages.jsx
index f904394..40c5af0 100644
--- a/front/src/routes/man_pages.jsx
+++ b/front/src/routes/man_pages.jsx
@@ -1,3 +1,18 @@
+const botMoveRequestSchema = `GameUpdate {
+  bot_id: number;
+  bot_name: string;
+  game_id: number;
+  fen: string;
+  turn: string;
+  bot_turn: boolean;
+  last_move: string;
+  status: string;
+}`;
+
+const botMoveResponseSchema = `BotMoveResponse {
+  attempted_message: string;
+}`;
+
 export const ManPages = () => {
   return (
     <div>
@@ -69,7 +84,6 @@ export const ManPages = () => {
               In the "Previous Games" viewer, use h/l or left/right to view the
               previous/next move.
             </li>
-
             <li>In a game board use "f" to flip the board.</li>
             <li>
               In the "Previous Games" viewer, use "m" to show the game's move
@@ -86,6 +100,50 @@ export const ManPages = () => {
           </ul>
         </div>
       </div>
+      <div>
+        <div>
+          <b>BOTS & WEBHOOKS</b>
+        </div>
+        <div>
+          <ul>
+            <li>Goto <Link to="/bots">/bots</Link> and create a bot, taking note of the new bot's token (keep this private!).</li>
+            <li>Highly recommend <a
+                href="https://ngrok.io"
+                target="_blank"
+                rel="noreferrer"
+              >
+                ngrok
+              </a> for testing.</li>
+            <li>A "public" bot can be seen and played against by any player.</li>
+            <li>A "private" bot can be seen and played against by the player which created it.</li>
+            <li>
+              A bot's "webhook" is the route that CheSSH will POST a
+              JSON message to upon an update in a game it is playing. Upon a move,
+              it will be immediately POST'd to with a single GameUpdate object, but 
+              when using the "redrive" feature (mostly for testing), an array of game that
+              correspond to games in which it is still the bot's turn:
+              <pre>{botMoveRequestSchema}</pre>
+            </li>
+            <li>
+              After receiving the update, the bot must "respond" with its attempted move,
+              with the plain token (no "Bearer" prefix) in its "Authorization" header, and
+              a body of (given "attempted_move" is the from space appended to the destination space i.e.
+              "e2e4"):
+              <pre>{botMoveResponseSchema}</pre>
+            </li>
+            <li>
+              <a
+                href="https://github.com/Simponic/chessh_bot/blob/3748df9a58ff92b71980eda613d4ffe6aa8bda91/src/api/index.ts#L18-L55"
+                target="_blank"
+                rel="noreferrer"
+              >
+                Here
+              </a>
+              is an example of how this logic should play out for a simple bot.
+            </li>
+          </ul>
+        </div>
+      </div>
     </div>
   );
 };
-- 
cgit v1.2.3-70-g09d2

