Added pawn promotion and locales support!
This commit is contained in:
pare
2d43565417
commit
8ec306c680
S'han modificat 4 arxius amb 360 adicions i 121 eliminacions
48
locales/cat.txt
Normal file
48
locales/cat.txt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
search_end: fi
|
||||||
|
search_move: mou
|
||||||
|
search_new: nova
|
||||||
|
search_games: jocs
|
||||||
|
search_send: envia
|
||||||
|
new_game_started: partida iniciada! Esperant jugador...
|
||||||
|
playing_with: jugues amb
|
||||||
|
your_turn: el teu torn
|
||||||
|
game_name: partida
|
||||||
|
chess_hashtag: #escacs
|
||||||
|
send_error: error al enviar les anotacions :-(
|
||||||
|
game_number_anotations: les anotacions de la partida n.
|
||||||
|
anotations_sent: enviades amb èxit!
|
||||||
|
game_no_exists: la partida n.
|
||||||
|
it_not_exists: no existeix...
|
||||||
|
game_already_started: ja tenies iniciada una partida!
|
||||||
|
wait_other_player: espera l'altre jugador
|
||||||
|
is_not_legal_move: és un moviment il·legal. Torna a tirar.
|
||||||
|
check_done: t'ha fet escac!
|
||||||
|
check_mate: Escac i mat! (en
|
||||||
|
check_mate_movements: moviments)
|
||||||
|
the_winner_is: El guanyador és:
|
||||||
|
well_done: ben jugat!
|
||||||
|
winned_games: Partides guanyades:
|
||||||
|
wins_of_many: de
|
||||||
|
lost_piece: * has perdut
|
||||||
|
not_legal_move_str: moviment il·legal!
|
||||||
|
player_leave_game: ha deixat la partida amb
|
||||||
|
leave_waiting_game: has abandonat la partida en espera.
|
||||||
|
started_games: partides iniciades:
|
||||||
|
game_is_waiting: en espera...
|
||||||
|
game_is_on_going: (en joc)
|
||||||
|
no_on_going_games: cap partida en joc
|
||||||
|
is_not_your_turn: no és el teu torn.
|
||||||
|
is_the_turn_of: és el torn de
|
||||||
|
pawn_piece: un peó
|
||||||
|
knight_piece: un cavall
|
||||||
|
bishop_piece: l'alfil
|
||||||
|
rook_piece: una torre
|
||||||
|
queen_piece: la Dama
|
||||||
|
king_piece: el Rei
|
||||||
|
pawn_piece_letter: P
|
||||||
|
knight_piece_letter: C
|
||||||
|
bishop_piece_letter: A
|
||||||
|
rook_piece_letter: T
|
||||||
|
queen_piece_letter: D
|
||||||
|
king_piece_letter: R
|
||||||
|
email_subject: Anotacions partida n.
|
48
locales/eng.txt
Normal file
48
locales/eng.txt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
search_end: end
|
||||||
|
search_move: move
|
||||||
|
search_new: new
|
||||||
|
search_games: games
|
||||||
|
search_send: send
|
||||||
|
new_game_started: game started! Waiting for the second player...
|
||||||
|
playing_with: you play with
|
||||||
|
your_turn: it's your turn
|
||||||
|
game_name: game
|
||||||
|
chess_hashtag: #chess
|
||||||
|
send_error: sending anotations error :-(
|
||||||
|
game_number_anotations: the anotations of game n.
|
||||||
|
anotations_sent: succesfully sent!
|
||||||
|
game_no_exists: the game n.
|
||||||
|
it_not_exists: don't exists...
|
||||||
|
game_already_started: you already started a game!
|
||||||
|
wait_other_player: wait for the second player
|
||||||
|
is_not_legal_move: is not a legal move. Play again.
|
||||||
|
check_done: you are in check!
|
||||||
|
check_mate: it's a checkmate! (in
|
||||||
|
check_mate_movements: moves)
|
||||||
|
the_winner_is: The winner is:
|
||||||
|
well_done: well done!
|
||||||
|
winned_games: Won games:
|
||||||
|
wins_of_many: of
|
||||||
|
lost_piece: * you have lost
|
||||||
|
not_legal_move_str: not a legal move!
|
||||||
|
player_leave_game: has left the game with
|
||||||
|
leave_waiting_game: you have left the game in hold.
|
||||||
|
started_games: started games:
|
||||||
|
game_is_waiting: on hold...
|
||||||
|
game_is_on_going: (on going)
|
||||||
|
no_on_going_games: no games
|
||||||
|
is_not_your_turn: it's not your turn.
|
||||||
|
is_the_turn_of: it's the turn of
|
||||||
|
pawn_piece: a pawn
|
||||||
|
knight_piece: one knight
|
||||||
|
bishop_piece: one bishop
|
||||||
|
rook_piece: a rook
|
||||||
|
queen_piece: the Queen
|
||||||
|
king_piece: the King
|
||||||
|
pawn_piece_letter: P
|
||||||
|
knight_piece_letter: N
|
||||||
|
bishop_piece_letter: B
|
||||||
|
rook_piece_letter: R
|
||||||
|
queen_piece_letter: Q
|
||||||
|
king_piece_letter: K
|
||||||
|
email_subject: Anotations of game n.
|
349
mastochess.py
349
mastochess.py
|
@ -101,27 +101,27 @@ def get_piece_name(captured_piece):
|
||||||
|
|
||||||
if captured_piece == 1:
|
if captured_piece == 1:
|
||||||
|
|
||||||
piece_name = "un Peó"
|
piece_name = pawn_piece
|
||||||
|
|
||||||
if captured_piece == 2:
|
if captured_piece == 2:
|
||||||
|
|
||||||
piece_name = "un cavall"
|
piece_name = knight_piece
|
||||||
|
|
||||||
if captured_piece == 3:
|
if captured_piece == 3:
|
||||||
|
|
||||||
piece_name = "l'àlfil"
|
piece_name = bishop_piece
|
||||||
|
|
||||||
if captured_piece == 4:
|
if captured_piece == 4:
|
||||||
|
|
||||||
piece_name = "una torre"
|
piece_name = rook_piece
|
||||||
|
|
||||||
if captured_piece == 5:
|
if captured_piece == 5:
|
||||||
|
|
||||||
piece_name = "la Dama"
|
piece_name = queen_piece
|
||||||
|
|
||||||
if captured_piece == 6:
|
if captured_piece == 6:
|
||||||
|
|
||||||
piece_name = "el Rei"
|
piece_name = king_piece
|
||||||
|
|
||||||
return piece_name
|
return piece_name
|
||||||
|
|
||||||
|
@ -129,27 +129,27 @@ def get_moved_piece_name(moved_piece):
|
||||||
|
|
||||||
if moved_piece == 1:
|
if moved_piece == 1:
|
||||||
|
|
||||||
moved_piece_name = "P"
|
moved_piece_name = pawn_piece_letter
|
||||||
|
|
||||||
if moved_piece == 2:
|
if moved_piece == 2:
|
||||||
|
|
||||||
moved_piece_name = "C"
|
moved_piece_name = knight_piece_letter
|
||||||
|
|
||||||
if moved_piece == 3:
|
if moved_piece == 3:
|
||||||
|
|
||||||
moved_piece_name = "A"
|
moved_piece_name = bishop_piece_letter
|
||||||
|
|
||||||
if moved_piece == 4:
|
if moved_piece == 4:
|
||||||
|
|
||||||
moved_piece_name = "T"
|
moved_piece_name = rook_piece_letter
|
||||||
|
|
||||||
if moved_piece == 5:
|
if moved_piece == 5:
|
||||||
|
|
||||||
moved_piece_name = "D"
|
moved_piece_name = queen_piece_letter
|
||||||
|
|
||||||
if moved_piece == 6:
|
if moved_piece == 6:
|
||||||
|
|
||||||
moved_piece_name = "R"
|
moved_piece_name = king_piece_letter
|
||||||
|
|
||||||
return moved_piece_name
|
return moved_piece_name
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ def get_notification_data():
|
||||||
|
|
||||||
url_lst = []
|
url_lst = []
|
||||||
|
|
||||||
search_text = ['fi','mou','nova','jocs', 'envia']
|
search_text = [search_end, search_move, search_new, search_games, search_send]
|
||||||
|
|
||||||
conn = None
|
conn = None
|
||||||
|
|
||||||
|
@ -511,13 +511,23 @@ def update_game(board_game, toot_url):
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
def save_annotation():
|
def save_anotation(moving):
|
||||||
|
|
||||||
square_index = chess.SQUARE_NAMES.index(moving[2:])
|
if moving_piece != 1:
|
||||||
|
|
||||||
moved_piece = board.piece_type_at(square_index)
|
square_index = chess.SQUARE_NAMES.index(moving[2:])
|
||||||
|
|
||||||
moved_piece_name = get_moved_piece_name(moved_piece)
|
moved_piece = board.piece_type_at(square_index)
|
||||||
|
|
||||||
|
moved_piece_name = get_moved_piece_name(moved_piece)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
moved_piece_name = 'P'
|
||||||
|
|
||||||
|
if promoted == True:
|
||||||
|
|
||||||
|
moving = moving + 'q'
|
||||||
|
|
||||||
game_file = "anotations/" + str(game_id) + ".txt"
|
game_file = "anotations/" + str(game_id) + ".txt"
|
||||||
|
|
||||||
|
@ -541,7 +551,13 @@ def save_annotation():
|
||||||
|
|
||||||
if check != True and checkmate != True:
|
if check != True and checkmate != True:
|
||||||
|
|
||||||
line_data = str(board.fullmove_number) + ". " + moved_piece_name + moving[2:]
|
if promoted != True:
|
||||||
|
|
||||||
|
line_data = str(board.fullmove_number) + ". " + moved_piece_name + moving[2:]
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
line_data = str(board.fullmove_number) + ". " + moved_piece_name + "=D"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
@ -553,15 +569,20 @@ def save_annotation():
|
||||||
|
|
||||||
if check != True and checkmate != True:
|
if check != True and checkmate != True:
|
||||||
|
|
||||||
line_data = " - " + moved_piece_name + moving[2:] + "\n"
|
if promoted != True:
|
||||||
|
|
||||||
|
line_data = " - " + moved_piece_name + moving[2:] + "\n"
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
line_data = " - " + moved_piece_name + "=D"
|
||||||
else:
|
else:
|
||||||
|
|
||||||
line_data = " - " + moved_piece_name + "\n"
|
line_data = " - " + moved_piece_name + "\n"
|
||||||
|
|
||||||
if not os.path.isfile(game_file):
|
if not os.path.isfile(game_file):
|
||||||
|
|
||||||
file_header = "Partida: " + str(game_id) + "\n" + white_user + " / " + black_user + "\n\n"
|
file_header = game_name + ': ' + str(game_id) + "\n" + white_user + " / " + black_user + "\n\n"
|
||||||
|
|
||||||
with open(game_file, 'w+') as f:
|
with open(game_file, 'w+') as f:
|
||||||
|
|
||||||
|
@ -621,7 +642,7 @@ def send_anotation(game_id):
|
||||||
# Declare message elements
|
# Declare message elements
|
||||||
msg['From'] = smtp_user_login
|
msg['From'] = smtp_user_login
|
||||||
msg['To'] = username_email
|
msg['To'] = username_email
|
||||||
msg['Subject'] = "Anotaciones partida n." + game_id
|
msg['Subject'] = email_subject + game_id
|
||||||
|
|
||||||
# Attach the game anotation
|
# Attach the game anotation
|
||||||
file_to_attach = "anotations/" + game_id + ".txt"
|
file_to_attach = "anotations/" + game_id + ".txt"
|
||||||
|
@ -967,30 +988,30 @@ def replying():
|
||||||
|
|
||||||
if unidecode.unidecode(question)[0:query_word_length] == query_word:
|
if unidecode.unidecode(question)[0:query_word_length] == query_word:
|
||||||
|
|
||||||
if query_word[0:4] == 'nova':
|
if query_word == search_new:
|
||||||
|
|
||||||
reply = True
|
reply = True
|
||||||
|
|
||||||
elif query_word[0:3] == 'mou':
|
elif query_word[:search_move_slicing] == search_move:
|
||||||
|
|
||||||
moving = query_word[4:query_word_length].replace(" ","")
|
moving = query_word[4:query_word_length].replace(" ","")
|
||||||
reply = True
|
reply = True
|
||||||
|
|
||||||
elif query_word[0:2] == 'fi':
|
elif query_word == search_end:
|
||||||
|
|
||||||
reply = True
|
reply = True
|
||||||
|
|
||||||
elif query_word[0:4] == 'jocs':
|
elif query_word == search_games:
|
||||||
|
|
||||||
reply = True
|
reply = True
|
||||||
|
|
||||||
elif query_word[0:5] == 'envia':
|
elif query_word[:search_send_slicing] == search_send:
|
||||||
|
|
||||||
reply = True
|
reply = True
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
reply = False
|
reply = False
|
||||||
|
|
||||||
return (reply, query_word, moving)
|
return (reply, query_word, moving)
|
||||||
|
|
||||||
|
@ -998,6 +1019,84 @@ def replying():
|
||||||
|
|
||||||
print(v_error)
|
print(v_error)
|
||||||
|
|
||||||
|
def load_strings(bot_lang):
|
||||||
|
|
||||||
|
search_end = get_parameter("search_end", language_filepath)
|
||||||
|
search_move = get_parameter("search_move", language_filepath)
|
||||||
|
search_new = get_parameter("search_new", language_filepath)
|
||||||
|
search_games = get_parameter("search_games", language_filepath)
|
||||||
|
search_send = get_parameter("search_send", language_filepath)
|
||||||
|
new_game_started = get_parameter("new_game_started", language_filepath)
|
||||||
|
playing_with = get_parameter("playing_with", language_filepath)
|
||||||
|
your_turn = get_parameter("your_turn", language_filepath)
|
||||||
|
game_name = get_parameter("game_name", language_filepath)
|
||||||
|
chess_hashtag = get_parameter("chess_hashtag", language_filepath)
|
||||||
|
send_error = get_parameter("send_error", language_filepath)
|
||||||
|
|
||||||
|
return (search_end, search_move, search_new, search_games, search_send, new_game_started, playing_with, your_turn, game_name, chess_hashtag, send_error)
|
||||||
|
|
||||||
|
def load_strings1(bot_lang):
|
||||||
|
|
||||||
|
game_number_anotations = get_parameter("game_number_anotations", language_filepath)
|
||||||
|
anotations_sent = get_parameter("anotations_sent", language_filepath)
|
||||||
|
game_no_exists = get_parameter("game_no_exists", language_filepath)
|
||||||
|
it_not_exists = get_parameter("it_not_exists", language_filepath)
|
||||||
|
game_already_started = get_parameter("game_already_started", language_filepath)
|
||||||
|
wait_other_player = get_parameter("wait_other_player", language_filepath)
|
||||||
|
is_not_legal_move = get_parameter("is_not_legal_move", language_filepath)
|
||||||
|
check_done = get_parameter("check_done", language_filepath)
|
||||||
|
check_mate = get_parameter("check_mate", language_filepath)
|
||||||
|
|
||||||
|
return (game_number_anotations, anotations_sent, game_no_exists, it_not_exists, game_already_started, wait_other_player, is_not_legal_move, check_done, check_mate)
|
||||||
|
|
||||||
|
def load_strings2(bot_lang):
|
||||||
|
|
||||||
|
check_mate_movements = get_parameter("check_mate_movements", language_filepath)
|
||||||
|
the_winner_is = get_parameter("the_winner_is", language_filepath)
|
||||||
|
well_done = get_parameter("well_done", language_filepath)
|
||||||
|
winned_games = get_parameter("winned_games", language_filepath)
|
||||||
|
wins_of_many = get_parameter("wins_of_many", language_filepath)
|
||||||
|
lost_piece = get_parameter("lost_piece", language_filepath)
|
||||||
|
not_legal_move_str = get_parameter("not_legal_move_str", language_filepath)
|
||||||
|
player_leave_game = get_parameter("player_leave_game", language_filepath)
|
||||||
|
|
||||||
|
return (check_mate_movements, the_winner_is, well_done, winned_games, wins_of_many, lost_piece, not_legal_move_str, player_leave_game)
|
||||||
|
|
||||||
|
def load_strings3(bot_lang):
|
||||||
|
|
||||||
|
leave_waiting_game = get_parameter("leave_waiting_game", language_filepath)
|
||||||
|
started_games = get_parameter("started_games", language_filepath)
|
||||||
|
game_is_waiting = get_parameter("game_is_waiting", language_filepath)
|
||||||
|
game_is_on_going = get_parameter("game_is_on_going", language_filepath)
|
||||||
|
no_on_going_games = get_parameter("no_on_going_games", language_filepath)
|
||||||
|
is_not_your_turn = get_parameter("is_not_your_turn", language_filepath)
|
||||||
|
is_the_turn_of = get_parameter("is_the_turn_of", language_filepath)
|
||||||
|
|
||||||
|
return (leave_waiting_game, started_games, game_is_waiting, game_is_on_going, no_on_going_games, is_not_your_turn, is_the_turn_of)
|
||||||
|
|
||||||
|
def load_strings4(bot_lang):
|
||||||
|
|
||||||
|
pawn_piece = get_parameter("pawn_piece", language_filepath)
|
||||||
|
knight_piece = get_parameter("knight_piece", language_filepath)
|
||||||
|
bishop_piece = get_parameter("bishop_piece", language_filepath)
|
||||||
|
rook_piece = get_parameter("rook_piece", language_filepath)
|
||||||
|
queen_piece = get_parameter("queen_piece", language_filepath)
|
||||||
|
king_piece = get_parameter("king_piece", language_filepath)
|
||||||
|
|
||||||
|
return (pawn_piece, knight_piece, bishop_piece, rook_piece, queen_piece, king_piece)
|
||||||
|
|
||||||
|
def load_strings5(bot_lang):
|
||||||
|
|
||||||
|
pawn_piece_letter = get_parameter("pawn_piece_letter", language_filepath)
|
||||||
|
knight_piece_letter = get_parameter("knight_piece_letter", language_filepath)
|
||||||
|
bishop_piece_letter = get_parameter("bishop_piece_letter", language_filepath)
|
||||||
|
rook_piece_letter = get_parameter("rook_piece_letter", language_filepath)
|
||||||
|
queen_piece_letter = get_parameter("queen_piece_letter", language_filepath)
|
||||||
|
king_piece_letter = get_parameter("king_piece_letter", language_filepath)
|
||||||
|
email_subject = get_parameter("email_subject", language_filepath)
|
||||||
|
|
||||||
|
return (pawn_piece_letter, knight_piece_letter, bishop_piece_letter, rook_piece_letter, queen_piece_letter, king_piece_letter, email_subject)
|
||||||
|
|
||||||
def mastodon():
|
def mastodon():
|
||||||
|
|
||||||
# Load secrets from secrets file
|
# Load secrets from secrets file
|
||||||
|
@ -1066,7 +1165,7 @@ def create_dir():
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
|
|
||||||
print('usage: python ' + sys.argv[0] + ' --play')
|
print('usage: python ' + sys.argv[0] + ' --play' + ' --eng')
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# main
|
# main
|
||||||
|
@ -1079,10 +1178,58 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
|
|
||||||
elif len(sys.argv) == 2:
|
elif len(sys.argv) >= 2:
|
||||||
|
|
||||||
if sys.argv[1] == '--play':
|
if sys.argv[1] == '--play':
|
||||||
|
|
||||||
|
if len(sys.argv) == 3:
|
||||||
|
|
||||||
|
if sys.argv[2] == '--eng':
|
||||||
|
|
||||||
|
bot_lang = 'eng'
|
||||||
|
else:
|
||||||
|
|
||||||
|
bot_lang = 'ca'
|
||||||
|
|
||||||
|
if bot_lang == "ca":
|
||||||
|
|
||||||
|
language_filepath = "locales/cat.txt"
|
||||||
|
|
||||||
|
elif bot_lang == "eng":
|
||||||
|
|
||||||
|
language_filepath = "locales/eng.txt"
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("\nOnly 'cat' and 'eng' languages are supported.\n")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if bot_lang == 'ca':
|
||||||
|
|
||||||
|
search_move_slicing = 3
|
||||||
|
search_send_slicing = 5
|
||||||
|
send_game_slicing = 6
|
||||||
|
|
||||||
|
elif bot_lang == 'eng':
|
||||||
|
|
||||||
|
search_move_slicing = 4
|
||||||
|
search_send_slicing = 4
|
||||||
|
send_game_slicing = 5
|
||||||
|
|
||||||
|
search_end, search_move, search_new, search_games, search_send, new_game_started, playing_with, your_turn, game_name, chess_hashtag, send_error = load_strings(bot_lang)
|
||||||
|
|
||||||
|
game_number_anotations, anotations_sent, game_no_exists, it_not_exists, game_already_started, wait_other_player, is_not_legal_move, check_done, check_mate = load_strings1(bot_lang)
|
||||||
|
|
||||||
|
check_mate_movements, the_winner_is, well_done, winned_games, wins_of_many, lost_piece, not_legal_move_str, player_leave_game = load_strings2(bot_lang)
|
||||||
|
|
||||||
|
leave_waiting_game, started_games, game_is_waiting, game_is_on_going, no_on_going_games, is_not_your_turn, is_the_turn_of = load_strings3(bot_lang)
|
||||||
|
|
||||||
|
pawn_piece, knight_piece, bishop_piece, rook_piece, queen_piece, king_piece = load_strings4(bot_lang)
|
||||||
|
|
||||||
|
pawn_piece_letter, knight_piece_letter, bishop_piece_letter, rook_piece_letter, queen_piece_letter, king_piece_letter, email_subject = load_strings5(bot_lang)
|
||||||
|
|
||||||
mastodon, mastodon_hostname, bot_username = mastodon()
|
mastodon, mastodon_hostname, bot_username = mastodon()
|
||||||
|
|
||||||
mastodon_db, mastodon_db_user, chess_db, chess_db_user = db_config()
|
mastodon_db, mastodon_db_user, chess_db, chess_db_user = db_config()
|
||||||
|
@ -1130,7 +1277,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
status_url = url_lst[i]
|
status_url = url_lst[i]
|
||||||
|
|
||||||
if query_word != "jocs":
|
if query_word != search_games:
|
||||||
|
|
||||||
is_playing, game_id, white_user, black_user, on_going_game, waiting, playing_user = check_games()
|
is_playing, game_id, white_user, black_user, on_going_game, waiting, playing_user = check_games()
|
||||||
|
|
||||||
|
@ -1144,7 +1291,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
if reply == True and is_playing == False:
|
if reply == True and is_playing == False:
|
||||||
|
|
||||||
if query_word == 'nova' and not game_waiting:
|
if query_word == search_new and not game_waiting:
|
||||||
|
|
||||||
board = chess.Board()
|
board = chess.Board()
|
||||||
|
|
||||||
|
@ -1154,7 +1301,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
svg2png(bytestring=svgfile,write_to=board_file)
|
svg2png(bytestring=svgfile,write_to=board_file)
|
||||||
|
|
||||||
toot_text = "@"+username+ " partida iniciada! Esperant jugador... " +"\n"
|
toot_text = '@'+username + ' ' + new_game_started + '\n'
|
||||||
|
|
||||||
toot_text += '\n'
|
toot_text += '\n'
|
||||||
|
|
||||||
|
@ -1168,7 +1315,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
update_replies(status_id, username, now)
|
update_replies(status_id, username, now)
|
||||||
|
|
||||||
elif query_word == 'nova' and game_waiting:
|
elif query_word == search_new and game_waiting:
|
||||||
|
|
||||||
game_status, white_user, chess_game = join_player()
|
game_status, white_user, chess_game = join_player()
|
||||||
|
|
||||||
|
@ -1184,15 +1331,15 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
svg2png(bytestring=svgfile,write_to=board_file)
|
svg2png(bytestring=svgfile,write_to=board_file)
|
||||||
|
|
||||||
toot_text = "@"+username + " jugues amb " + white_user + "\n"
|
toot_text = '@'+username + ' ' + playing_with + ' ' + white_user + "\n"
|
||||||
|
|
||||||
toot_text += '\n'
|
toot_text += '\n'
|
||||||
|
|
||||||
toot_text += "@"+white_user + ": el teu torn" + "\n"
|
toot_text += '@'+white_user + ': ' + your_turn + "\n"
|
||||||
|
|
||||||
toot_text += '\n'
|
toot_text += '\n'
|
||||||
|
|
||||||
toot_text += 'partida: ' + str(game_id) + ' ' + '#escacs' + '\n'
|
toot_text += game_name + ': ' + str(game_id) + ' ' + chess_hashtag + '\n'
|
||||||
|
|
||||||
image_id = mastodon.media_post(board_file, "image/png").id
|
image_id = mastodon.media_post(board_file, "image/png").id
|
||||||
|
|
||||||
|
@ -1204,25 +1351,25 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
update_replies(status_id, username, now)
|
update_replies(status_id, username, now)
|
||||||
|
|
||||||
elif query_word[0:5] == 'envia':
|
elif query_word[:search_send_slicing] == search_send:
|
||||||
|
|
||||||
query_word_length = len(query_word)
|
query_word_length = len(query_word)
|
||||||
|
|
||||||
send_game = query_word[6:query_word_length].replace(' ', '')
|
send_game = query_word[send_game_slicing:query_word_length].replace(' ', '')
|
||||||
|
|
||||||
emailed, game_id, game_found = send_anotation(send_game)
|
emailed, game_id, game_found = send_anotation(send_game)
|
||||||
|
|
||||||
if emailed == False and game_found == True:
|
if emailed == False and game_found == True:
|
||||||
|
|
||||||
toot_text = "@"+username + " error al enviar les anotacions :-("
|
toot_text = '@'+username + send_error
|
||||||
|
|
||||||
elif emailed == True and game_found == True:
|
elif emailed == True and game_found == True:
|
||||||
|
|
||||||
toot_text = "@"+username + " les anotaciones de la partida n." + str(game_id) + " enviades amb èxit!"
|
toot_text = '@'+username + ' ' + game_number_anotations + str(game_id) + ' ' + anotations_sent
|
||||||
|
|
||||||
elif emailed == False and game_found == False:
|
elif emailed == False and game_found == False:
|
||||||
|
|
||||||
toot_text = "@"+username + " la partida n." + str(game_id) + " no existeix..."
|
toot_text = '@'+username + ' ' + game_no_exists + str(game_id) + ' ' + it_not_exists
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1234,9 +1381,9 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
elif reply and is_playing:
|
elif reply and is_playing:
|
||||||
|
|
||||||
if query_word == 'nova':
|
if query_word == search_new:
|
||||||
|
|
||||||
toot_text = "@"+username + ' ja tenies iniciada una partida!' + '\n'
|
toot_text = '@'+username + ' ' + game_already_started + '\n'
|
||||||
|
|
||||||
if black_user != '':
|
if black_user != '':
|
||||||
|
|
||||||
|
@ -1244,11 +1391,11 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text += "espera l'altre jugador" + '\n'
|
toot_text += wait_other_player + '\n'
|
||||||
|
|
||||||
toot_text += '\n'
|
toot_text += '\n'
|
||||||
|
|
||||||
toot_text += 'partida: ' + str(game_id) + ' ' + '#escacs' + '\n'
|
toot_text += game_name + ': ' + str(game_id) + ' ' + chess_hashtag + '\n'
|
||||||
|
|
||||||
board = chess.Board(on_going_game)
|
board = chess.Board(on_going_game)
|
||||||
|
|
||||||
|
@ -1264,15 +1411,47 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
update_replies(status_id, username, now)
|
update_replies(status_id, username, now)
|
||||||
|
|
||||||
elif query_word[0:3] == 'mou' and playing_user == username:
|
elif query_word[:search_move_slicing] == search_move and playing_user == username:
|
||||||
|
|
||||||
board = chess.Board(on_going_game)
|
board = chess.Board(on_going_game)
|
||||||
|
|
||||||
|
promoted = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
if chess.Move.from_uci(moving) not in board.legal_moves:
|
piece_square_index = chess.SQUARE_NAMES.index(moving[:2])
|
||||||
|
|
||||||
toot_text = "@"+username + ": " + moving + " és un moviment il·legal. Torna a tirar." + "\n"
|
moving_piece = board.piece_type_at(piece_square_index)
|
||||||
|
|
||||||
|
if moving_piece == 1:
|
||||||
|
|
||||||
|
square_index = chess.SQUARE_NAMES.index(moving[2:4])
|
||||||
|
|
||||||
|
if bool(board.turn == chess.WHITE) == True:
|
||||||
|
|
||||||
|
square_rank_trigger = 7
|
||||||
|
|
||||||
|
elif bool(board.turn == chess.BLACK) == True:
|
||||||
|
|
||||||
|
square_rank_trigger = 0
|
||||||
|
|
||||||
|
if chess.square_rank(square_index) == square_rank_trigger:
|
||||||
|
|
||||||
|
promoted = True
|
||||||
|
|
||||||
|
if len(moving) == 4:
|
||||||
|
|
||||||
|
moving = moving + 'q'
|
||||||
|
|
||||||
|
not_legal_move = chess.Move.from_uci(moving) not in board.legal_moves
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
not_legal_move = chess.Move.from_uci(moving) not in board.legal_moves
|
||||||
|
|
||||||
|
if not_legal_move:
|
||||||
|
|
||||||
|
toot_text = '@'+username + ': ' + moving + ' ' + is_not_legal_move + '\n'
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1288,7 +1467,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
capture = True
|
capture = True
|
||||||
|
|
||||||
square_capture_index = chess.SQUARE_NAMES.index(moving[2:])
|
square_capture_index = chess.SQUARE_NAMES.index(moving[2:4])
|
||||||
|
|
||||||
captured_piece = board.piece_type_at(square_capture_index)
|
captured_piece = board.piece_type_at(square_capture_index)
|
||||||
|
|
||||||
|
@ -1326,33 +1505,33 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
if check == True and checkmate == False:
|
if check == True and checkmate == False:
|
||||||
|
|
||||||
toot_text = "@"+playing_user + " " + username + " t'ha fet escac!\n"
|
toot_text = "@"+playing_user + " " + username + ' ' + check_done + '\n'
|
||||||
|
|
||||||
elif check == True and checkmate == True:
|
elif check == True and checkmate == True:
|
||||||
|
|
||||||
toot_text = "\nEscac i mat! (en " + str(game_moves) + " moviments)" + "\n\nEl guanyador és: " + "@"+username + '\n'
|
toot_text = '\n' + check_mate + ' ' + str(game_moves) + ' ' + check_mate_movements + '\n\n' + the_winner_is + ' ' + "@"+username + '\n'
|
||||||
|
|
||||||
toot_text += "\n@"+playing_user + ": ben jugat!" + "\n"
|
toot_text += "\n@"+playing_user + ': ' + well_done + "\n"
|
||||||
|
|
||||||
toot_text += "\nPartides guanyades:" + "\n"
|
toot_text += '\n' + winned_games + "\n"
|
||||||
|
|
||||||
played_games, wins = get_stats(username)
|
played_games, wins = get_stats(username)
|
||||||
|
|
||||||
toot_text += username + ": " + str(wins) + " de " + str(played_games) + "\n"
|
toot_text += username + ': ' + str(wins) + ' ' + wins_of_many + ' ' + str(played_games) + "\n"
|
||||||
|
|
||||||
played_games, wins = get_stats(playing_user)
|
played_games, wins = get_stats(playing_user)
|
||||||
|
|
||||||
toot_text += playing_user + ": " + str(wins) + " de " + str(played_games) + "\n"
|
toot_text += playing_user + ': ' + str(wins) + ' ' + wins_of_many + ' ' + str(played_games) + "\n"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text = "@"+playing_user + ' el teu torn.'+ '\n'
|
toot_text = '@'+playing_user + ' ' + your_turn + '\n'
|
||||||
|
|
||||||
if capture == True and checkmate == False:
|
if capture == True and checkmate == False:
|
||||||
|
|
||||||
toot_text += "\n* has perdut " + piece_name + "!\n"
|
toot_text += '\n' + lost_piece + ' ' + piece_name + '!\n'
|
||||||
|
|
||||||
toot_text += '\npartida: ' + str(game_id) + ' ' + '#escacs' + '\n'
|
toot_text += '\n' + game_name + ': ' + str(game_id) + ' ' + chess_hashtag + '\n'
|
||||||
|
|
||||||
if username == white_user:
|
if username == white_user:
|
||||||
|
|
||||||
|
@ -1390,7 +1569,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
game_moves = board.ply()
|
game_moves = board.ply()
|
||||||
|
|
||||||
save_annotation()
|
save_anotation(moving)
|
||||||
|
|
||||||
update_moves(username, game_moves)
|
update_moves(username, game_moves)
|
||||||
|
|
||||||
|
@ -1400,7 +1579,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
print(v_error)
|
print(v_error)
|
||||||
|
|
||||||
toot_text = "@"+username + ' moviment il·legal! (' + moving + '!?)\n'
|
toot_text = '@'+username + ' ' + not_legal_move_str + moving + '!?)\n'
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1412,7 +1591,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
print(a_error)
|
print(a_error)
|
||||||
|
|
||||||
toot_text = "@"+username + ' moviment il·legal! (' + moving + '!?)\n'
|
toot_text = '@'+username + ' ' + not_legal_move_str + moving + '!?)\n'
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1420,13 +1599,13 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
elif query_word[0:2] == 'fi':
|
elif query_word == search_end:
|
||||||
|
|
||||||
if black_user != '':
|
if black_user != '':
|
||||||
|
|
||||||
if username == white_user:
|
if username == white_user:
|
||||||
|
|
||||||
toot_text = "@"+username + " ha deixat la partida amb " + "@"+black_user
|
toot_text = '@'+username + ' ' + player_leave_game + ' ' + '@'+black_user
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1440,7 +1619,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text = "@"+username + " ha deixat la partida amb " + white_user
|
toot_text = '@'+username + ' ' + player_leave_game + ' ' + white_user
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1454,7 +1633,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text = "@"+username + " has abandonat la partida en espera."
|
toot_text = '@'+username + ' ' + leave_waiting_game
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id, visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id, visibility=visibility)
|
||||||
|
|
||||||
|
@ -1466,30 +1645,30 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif query_word == 'jocs':
|
elif query_word == search_games:
|
||||||
|
|
||||||
player1_name_lst, player2_name_lst, game_status_lst, game_link_lst, next_move_lst = current_games()
|
player1_name_lst, player2_name_lst, game_status_lst, game_link_lst, next_move_lst = current_games()
|
||||||
|
|
||||||
if len(player1_name_lst) > 0:
|
if len(player1_name_lst) > 0:
|
||||||
|
|
||||||
toot_text = "@"+username + " partides iniciades:" + "\n"
|
toot_text = "@"+username + ' ' + started_games + "\n"
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(player1_name_lst):
|
while i < len(player1_name_lst):
|
||||||
|
|
||||||
if game_status_lst[i] == 'waiting':
|
if game_status_lst[i] == 'waiting':
|
||||||
|
|
||||||
toot_text += "\n" + player1_name_lst[i] + " / " + player2_name_lst[i] + " (en espera...)" + "\n"
|
toot_text += '\n' + player1_name_lst[i] + ' / ' + player2_name_lst[i] + ' ' + game_is_waiting + "\n"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
if next_move_lst[i] == player1_name_lst[i]:
|
if next_move_lst[i] == player1_name_lst[i]:
|
||||||
|
|
||||||
toot_text += "\n*" + player1_name_lst[i] + " / " + player2_name_lst[i] + " (en joc)" + "\n"
|
toot_text += '\n*' + player1_name_lst[i] + ' / ' + player2_name_lst[i] + ' ' + game_is_on_going + '\n'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text += "\n" + player1_name_lst[i] + " / *" + player2_name_lst[i] + " (en joc)" + "\n"
|
toot_text += '\n' + player1_name_lst[i] + ' / *' + player2_name_lst[i] + ' ' + game_is_on_going + '\n'
|
||||||
|
|
||||||
if game_link_lst[i] != None:
|
if game_link_lst[i] != None:
|
||||||
|
|
||||||
|
@ -1501,13 +1680,13 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text = "@"+username + " cap partida en joc" + "\n"
|
toot_text = '@'+username + ' ' + no_on_going_games + '\n'
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
update_replies(status_id, username, now)
|
update_replies(status_id, username, now)
|
||||||
|
|
||||||
elif query_word[0:5] == 'envia':
|
elif query_word[:search_send_slicing] == search_send:
|
||||||
|
|
||||||
query_word_length = len(query_word)
|
query_word_length = len(query_word)
|
||||||
|
|
||||||
|
@ -1517,15 +1696,15 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
if emailed == False and game_found == True:
|
if emailed == False and game_found == True:
|
||||||
|
|
||||||
toot_text = "@"+username + " error al enviar les anotacions :-("
|
toot_text = '@'+username + ' ' + send_error
|
||||||
|
|
||||||
elif emailed == True and game_found == True:
|
elif emailed == True and game_found == True:
|
||||||
|
|
||||||
toot_text = "@"+username + " les anotaciones de la partida n." + str(game_id) + " enviades amb èxit!"
|
toot_text = '@'+username + ' ' + game_number_anotations + str(game_id) + ' ' + anotations_sent
|
||||||
|
|
||||||
elif emailed == False and game_found == False:
|
elif emailed == False and game_found == False:
|
||||||
|
|
||||||
toot_text = "@"+username + " la partida n." + str(game_id) + " no existeix..."
|
toot_text = '@'+username + ' ' + game_no_exists + str(game_id) + ' ' + it_not_exists
|
||||||
|
|
||||||
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
mastodon.status_post(toot_text, in_reply_to_id=status_id,visibility=visibility)
|
||||||
|
|
||||||
|
@ -1535,15 +1714,15 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
if playing_user == None:
|
if playing_user == None:
|
||||||
|
|
||||||
toot_text = "@"+username + " no és el teu torn." + "\n"
|
toot_text = '@'+username + ' ' + is_not_your_turn + '\n'
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
toot_text = "@"+username + " és el torn de " + playing_user + "\n"
|
toot_text = '@'+username + ' ' + is_the_turn_of + ' ' + playing_user + "\n"
|
||||||
|
|
||||||
toot_text += '\n'
|
toot_text += '\n'
|
||||||
|
|
||||||
toot_text += 'partida: ' + str(game_id) + ' ' + '#escacs' + '\n'
|
toot_text += game_name + ': ' + str(game_id) + ' ' + chess_hashtag + '\n'
|
||||||
|
|
||||||
board = chess.Board(on_going_game)
|
board = chess.Board(on_going_game)
|
||||||
|
|
||||||
|
|
36
setup.py
36
setup.py
|
@ -39,11 +39,6 @@ def write_config():
|
||||||
print("Writing parameters names 'mastodon_hostname' and 'bot_username' to " + config_filepath)
|
print("Writing parameters names 'mastodon_hostname' and 'bot_username' to " + config_filepath)
|
||||||
the_file.write('mastodon_hostname: \n' + 'bot_username: \n')
|
the_file.write('mastodon_hostname: \n' + 'bot_username: \n')
|
||||||
|
|
||||||
def write_lang_config():
|
|
||||||
with open(lang_config_filepath, 'a') as lang_file:
|
|
||||||
lang_file.write('bot_lang: \n')
|
|
||||||
print("adding Bot lang parameter name 'bot_lang' to "+ lang_config_filepath)
|
|
||||||
|
|
||||||
def read_client_lines(self):
|
def read_client_lines(self):
|
||||||
client_path = 'app_clientcred.txt'
|
client_path = 'app_clientcred.txt'
|
||||||
with open(client_path) as fp:
|
with open(client_path) as fp:
|
||||||
|
@ -72,12 +67,6 @@ def read_config_line():
|
||||||
modify_file(config_filepath, "mastodon_hostname: ", value=hostname)
|
modify_file(config_filepath, "mastodon_hostname: ", value=hostname)
|
||||||
modify_file(config_filepath, "bot_username: ", value=bot_username)
|
modify_file(config_filepath, "bot_username: ", value=bot_username)
|
||||||
|
|
||||||
def read_lang_config_line():
|
|
||||||
with open(lang_config_filepath) as fp:
|
|
||||||
line = fp.readline()
|
|
||||||
lang = input("Enter Bot lang, ex. en or ca: ")
|
|
||||||
modify_file(lang_config_filepath, "bot_lang: ", value=lang)
|
|
||||||
|
|
||||||
def log_in():
|
def log_in():
|
||||||
error = 0
|
error = 0
|
||||||
try:
|
try:
|
||||||
|
@ -195,27 +184,6 @@ def get_hostname( parameter, config_filepath ):
|
||||||
print("setup done!")
|
print("setup done!")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Returns the parameter from the specified file
|
|
||||||
def get_lang( parameter, lang_config_filepath ):
|
|
||||||
|
|
||||||
# Check if lang file exists
|
|
||||||
if not os.path.isfile(lang_config_filepath):
|
|
||||||
print("File %s not found, creating it."%lang_config_filepath)
|
|
||||||
create_lang_config()
|
|
||||||
|
|
||||||
# Find parameter in file
|
|
||||||
with open( lang_config_filepath ) as f:
|
|
||||||
for line in f:
|
|
||||||
if line.startswith( parameter ):
|
|
||||||
return line.replace(parameter + ":", "").strip()
|
|
||||||
|
|
||||||
# Cannot find parameter, exit
|
|
||||||
print(lang_config_filepath + " Missing parameter %s "%parameter)
|
|
||||||
write_lang_config()
|
|
||||||
read_lang_config_line()
|
|
||||||
print("Bot lang setup done!")
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# main
|
# main
|
||||||
|
|
||||||
|
@ -232,7 +200,3 @@ if __name__ == '__main__':
|
||||||
mastodon_hostname = get_hostname("mastodon_hostname", config_filepath)
|
mastodon_hostname = get_hostname("mastodon_hostname", config_filepath)
|
||||||
bot_username = get_parameter("bot_username", config_filepath)
|
bot_username = get_parameter("bot_username", config_filepath)
|
||||||
|
|
||||||
# Load Bot lang from config file
|
|
||||||
lang_config_filepath = "config/lang_config.txt"
|
|
||||||
bot_lang = get_lang("bot_lang", lang_config_filepath) # E.g., en or ca
|
|
||||||
|
|
||||||
|
|
Loading…
Referencia en una nova incidència