1
0
Fork 0
mirror of https://gitlab.com/oloturia/damastodon.git synced 2025-01-06 21:47: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):]
saves = os.listdir(save_position)
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
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_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:
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
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
else:
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
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()
with open(account,"wb") as f:
with open(save_position+account,"wb") as f:
pickle.dump("@"+account,f)
pickle.dump(content.split(" ")[0],f)
pickle.dump("@"+challenger,f)
pickle.dump(False,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
elif content.split(" ")[1].lower() == "no":
os.remove(save_position+content.split(" ")[0][1:])
mastodon.status_post(account+" you cancelled the challenge from "+content.split(" ")[0],visibility="direct")
return
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
else:
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):
board = dama.valid_move(content.lower(),turn,board)
if board == -1:
mastodon.status_post("@"+account+"\nInvalid move.",visibility="direct")
mastodon.status_post("@"+account+" \nInvalid move.",visibility="direct")
return
else:
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")
return
else:
mastodon.status_post("@"+account+"\nIt's not your turn.",visibility="direct")
mastodon.status_post("@"+account+" \nIt's not your turn.",visibility="direct")
return
if __name__ == "__main__":

View file

@ -1,5 +1,7 @@
#!/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"):
bstr = ""
bstr += frstrow
@ -46,10 +48,13 @@ def row_column_translation(row,col):
return row,cols.index(ord(col))
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)
for rowcol in pos:
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
#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 = re.findall("\\b[abcdefgh][12345678]\\b",pos_toParse)
#for rowcol in pos:
# 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])
if(row_start == -1):
return -1