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:
commit
03c1dfffc6
2 changed files with 32 additions and 17 deletions
|
@ -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__":
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue