shithub: moonfish

Download patch

ref: 5b84fda237d70d33baac4bcb3c77507b93ea3cc5
parent: 4920426da64052fc52d752f0a69f51461842aed6
author: zamfofex <zamfofex@twdb.moe>
date: Sat Apr 6 16:22:45 EDT 2024

add option to reset board to IRC bot

--- a/tools/chat.c
+++ b/tools/chat.c
@@ -220,13 +220,48 @@
 		exit(1);
 	}
 	
+	channel = NULL;
+	message = NULL;
+	
 	for (;;)
 	{
+		if (channel != NULL) free(channel);
+		if (message != NULL) free(message);
+		
 		moonfish_read_chat(argv0, tls, username, &channel, &message);
+		
+		if (!strcmp(message, "!chess reset"))
+		{
+			moonfish_chess(&chess);
+			fprintf(in, "ucinewgame\n");
+			
+			moonfish_write_text(argv0, tls, "PRIVMSG ");
+			moonfish_write_text(argv0, tls, channel);
+			moonfish_write_text(argv0, tls, " :The board has been reset.\r\n");
+			
+			continue;
+		}
+		
 		if (moonfish_from_san(&chess, &move, message))
+			continue;
+		
+		moonfish_play(&chess, &move);
+		if (moonfish_finished(&chess))
 		{
-			free(channel);
-			free(message);
+			moonfish_to_fen(&chess, fen);
+			moonfish_chess(&chess);
+			fprintf(in, "ucinewgame\n");
+			
+			moonfish_write_text(argv0, tls, "PRIVMSG ");
+			moonfish_write_text(argv0, tls, channel);
+			moonfish_write_text(argv0, tls, " :https://lichess.org/export/fen.gif?fen=");
+			moonfish_write_text(argv0, tls, fen);
+			moonfish_write_text(argv0, tls, "\r\n");
+			
+			moonfish_write_text(argv0, tls, "PRIVMSG ");
+			moonfish_write_text(argv0, tls, channel);
+			moonfish_write_text(argv0, tls, " :Game over!\r\n");
+			
 			continue;
 		}
 		
@@ -263,7 +298,6 @@
 		strcat(names, " ");
 		strcat(names, name0);
 		
-		moonfish_play(&chess, &move);
 		moonfish_from_uci(&chess, &move, name0);
 		moonfish_to_san(&chess, name, &move);
 		moonfish_play(&chess, &move);
@@ -281,8 +315,15 @@
 		moonfish_write_text(argv0, tls, fen);
 		moonfish_write_text(argv0, tls, "\r\n");
 		
-		free(channel);
-		free(message);
+		if (moonfish_finished(&chess))
+		{
+			moonfish_chess(&chess);
+			fprintf(in, "ucinewgame\n");
+			
+			moonfish_write_text(argv0, tls, "PRIVMSG ");
+			moonfish_write_text(argv0, tls, channel);
+			moonfish_write_text(argv0, tls, " :Game over!\r\n");
+		}
 	}
 }
 
--