1
0
Fork 0
mirror of https://gitlab.com/oloturia/damastodon.git synced 2025-01-07 22:17:15 +01:00

Merge branch 'master' into 'main'

Master

See merge request oloturia/damastodon!4
This commit is contained in:
Mattioli 2021-10-29 15:03:10 +00:00
commit 03c1dfffc6
2 changed files with 32 additions and 17 deletions

View file

@ -28,38 +28,48 @@ def check_message(notification):
content = content[len(botname):] content = content[len(botname):]
saves = os.listdir(save_position) saves = os.listdir(save_position)
if content.lower() == "help": if content.lower() == "help":
mastodon.status_post("Hello @"+account+",\nchallenge an user by writing to me\nCHALL <USERNAME>\nEx. \"CHALL @someone@mastdn.inst.wxyz\"\nThe challenger takes WHITE and begins the match.\nFor movements and jumps, write the coords separated by spaces.\nEx. \"A4 B5\" (normal movement) or \"A4 C6 D8\" (double jump)\nQUIT ends the match.\nCommands are NOT case sensitive..",visibility="direct") mastodon.status_post("Hello @"+account+" \nchallenge an user by writing to me\nCHALL <USERNAME>\nEx. \"CHALL @someone@mastdn.inst.wxyz\"\nThe challenger takes WHITE and begins the match.\nFor movements and jumps, write the coords separated by spaces.\nEx. \"A4 B5\" (normal movement) or \"A4 C6 D8\" (double jump)\nQUIT ends the match.\nCommands are NOT case sensitive..",visibility="direct")
return return
if not os.path.exists(save_position+account): if not os.path.exists(save_position+account):
if content[:5].lower() == "sfida": try:
challenged = notification["status"]["mentions"][1]["acct"]
except:
mastodon.status_post("Hello @"+account+" \n your request is not valid")
return
if content[:5].lower() == "chall":
file_save_white = [sv for sv in saves if account in sv] file_save_white = [sv for sv in saves if account in sv]
file_save_black = [sv for sv in saves if content[:6] in sv] file_save_black = [sv for sv in saves if challenged in sv]
if len(file_save_white) > 0: if len(file_save_white) > 0:
mastodon.status_post("Hello @"+account+",\n you're already playing a match") mastodon.status_post("Hello @"+account+" \n you're already playing a match")
return return
elif len(file_save_black): elif len(file_save_black):
mastodon.status_post("Hello @"+content[7:]+",\n is already playing a match") mastodon.status_post("Hello @"+account+" \n the user you challenged is already playing a match")
return return
else: else:
open(save_position+account,"w").close() open(save_position+account,"w").close()
ident = mastodon.status_post("Hello @"+content[7:]+",\n@"+account+" challenged you to a match of draughts! Anzwer \n@"+account+" OK\n to accept the chellenge or \n@"+account+" NO\n to cancel.",visibility="direct") ident = mastodon.status_post("Hello @"+challenged+" \n@"+account+" challenged you to a match of draughts! Answer \n@"+account+" OK\n to accept the chellenge or \n@"+account+" NO\n to cancel.",visibility="direct")
return return
elif content.split(" ")[1].lower() == "ok": elif content.split(" ")[1].lower() == "ok":
os.symlink(content.split(" ")[0][1:],save_position+account) try:
challenger = notification["status"]["mentions"][1]["acct"]
except:
mastodon.status_post("Hello @"+account+" \n your request is not valid")
return
os.symlink(save_position+challenger,save_position+account)
board = dama.init_board() board = dama.init_board()
with open(account,"wb") as f: with open(save_position+account,"wb") as f:
pickle.dump("@"+account,f) pickle.dump("@"+account,f)
pickle.dump(content.split(" ")[0],f) pickle.dump("@"+challenger,f)
pickle.dump(False,f) pickle.dump(False,f)
pickle.dump(board,f) pickle.dump(board,f)
mastodon.status_post("◾: @"+account+" ◽: "+content.split(" ")[0]+" turn ◽\n"+dama.draw_checkerboard(board,space="🟥 ",white_norm="",white_knight="",black_norm="",black_knight="",empty="🟦 ",frstrow="0🇦 🇧 🇨 🇩 🇪 🇫 🇬 🇭 \n"),visibility="direct") mastodon.status_post("◾: @"+account+" ◽: @"+challenger+" turn ◽\n"+dama.draw_checkerboard(board,space="🟥 ",white_norm="",white_knight="",black_norm="",black_knight="",empty="🟦 ",frstrow="0🇦 🇧 🇨 🇩 🇪 🇫 🇬 🇭 \n"),visibility="direct")
return return
elif content.split(" ")[1].lower() == "no": elif content.split(" ")[1].lower() == "no":
os.remove(save_position+content.split(" ")[0][1:]) os.remove(save_position+content.split(" ")[0][1:])
mastodon.status_post(account+" you cancelled the challenge from "+content.split(" ")[0],visibility="direct") mastodon.status_post(account+" you cancelled the challenge from "+content.split(" ")[0],visibility="direct")
return return
else: else:
mastodon.status_post("Hello @"+account+" I can't understand your commend or you're not in a match.\nWrite HELP to see the list of available commands.",visibility="direct") mastodon.status_post("Hello @"+account+" \nI can't understand your command or you're not in a match.\nWrite HELP to see the list of available commands.",visibility="direct")
return return
else: else:
with open(save_position+account,"rb") as f: with open(save_position+account,"rb") as f:
@ -75,7 +85,7 @@ def check_message(notification):
if (black == "@"+account and turn == 1) or (white == "@"+account and turn == 0): if (black == "@"+account and turn == 1) or (white == "@"+account and turn == 0):
board = dama.valid_move(content.lower(),turn,board) board = dama.valid_move(content.lower(),turn,board)
if board == -1: if board == -1:
mastodon.status_post("@"+account+"\nInvalid move.",visibility="direct") mastodon.status_post("@"+account+" \nInvalid move.",visibility="direct")
return return
else: else:
with open(save_position+account,"wb") as f: with open(save_position+account,"wb") as f:
@ -102,7 +112,7 @@ def check_message(notification):
mastodon.status_post("◾: "+black+" ◽: "+white+"\n"+winner_t+" WINS!\n"+dama.draw_checkerboard(board,space="🟥 ",white_norm="",white_knight="",black_norm="",black_knight="",empty="🟦 ",frstrow="0🇦 🇧 🇨 🇩 🇪 🇫 🇬 🇭 \n"),visibility="direct") mastodon.status_post("◾: "+black+" ◽: "+white+"\n"+winner_t+" WINS!\n"+dama.draw_checkerboard(board,space="🟥 ",white_norm="",white_knight="",black_norm="",black_knight="",empty="🟦 ",frstrow="0🇦 🇧 🇨 🇩 🇪 🇫 🇬 🇭 \n"),visibility="direct")
return return
else: else:
mastodon.status_post("@"+account+"\nIt's not your turn.",visibility="direct") mastodon.status_post("@"+account+" \nIt's not your turn.",visibility="direct")
return return
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -1,5 +1,7 @@
#!/usr/bin/python3 #!/usr/bin/python3
import re
def draw_checkerboard(status,space="",white_norm="h",white_knight="H",black_norm="b",black_knight="B",empty=" ",frstrow=" abcdefgh\n"): def draw_checkerboard(status,space="",white_norm="h",white_knight="H",black_norm="b",black_knight="B",empty=" ",frstrow=" abcdefgh\n"):
bstr = "" bstr = ""
bstr += frstrow bstr += frstrow
@ -46,10 +48,13 @@ def row_column_translation(row,col):
return row,cols.index(ord(col)) return row,cols.index(ord(col))
def valid_move(pos_toParse,turn,board): def valid_move(pos_toParse,turn,board):
pos = pos_toParse.split(" ") #tricky part, pos[0] is the starting cell, pos[1] to pos[n] the destination point(s), for every coord, [x][0] is the column (the letter) and [x][1] the row (the number) #pos = pos_toParse.split(" ") #tricky part, pos[0] is the starting cell, pos[1] to pos[n] the destination point(s), for every coord, [x][0] is the column (the letter) and [x][1] the row (the number)
for rowcol in pos: pos = re.findall("\\b[abcdefgh][12345678]\\b",pos_toParse)
if (rowcol[0] not in ("a","b","c","d","e","f","g","h")) or (rowcol[1] not in ("1","2","3","4","5","6","7","8")): #check if the positions are valid #for rowcol in pos:
return -1 # if (rowcol[0] not in ("a","b","c","d","e","f","g","h")) or (rowcol[1] not in ("1","2","3","4","5","6","7","8")): #check if the positions are valid
# return -1
if len(pos) < 2:
return -1
row_start,col_start = row_column_translation(pos[0][1],pos[0][0]) row_start,col_start = row_column_translation(pos[0][1],pos[0][0])
if(row_start == -1): if(row_start == -1):
return -1 return -1