Added pawn promotion and locales support!

This commit is contained in:
spla 2020-11-27 20:50:38 +01:00
pare 2d43565417
commit 8ec306c680
S'han modificat 4 arxius amb 360 adicions i 121 eliminacions

48
locales/cat.txt Normal file
Veure arxiu

@ -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
Veure arxiu

@ -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.

Veure arxiu

@ -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)

Veure arxiu

@ -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