236 lines
9.6 KiB
Python
236 lines
9.6 KiB
Python
import asyncio
|
||
import discord
|
||
import json
|
||
|
||
from funcs import logThis, deleteGame
|
||
from .money import addMoney
|
||
from .fourInARow import parseFourInARow, fourInARowAI
|
||
from .blackjack import blackjackContinue, blackjackFinish
|
||
from .hex import parseHex, hexAI
|
||
from .monopoly import parseMonopoly, monopolyContinue
|
||
|
||
# Deletes a message
|
||
async def deleteMessage(imageLocation,channel):
|
||
try:
|
||
logThis("Finding old image")
|
||
with open("resources/games/oldImages/"+imageLocation, "r") as f:
|
||
oldImage = await channel.fetch_message(int(f.read()))
|
||
logThis("Deleting old image")
|
||
await oldImage.delete()
|
||
except:
|
||
oldImage = ""
|
||
|
||
return oldImage
|
||
|
||
# Runs Hex
|
||
async def runHex(channel,command,user):
|
||
try:
|
||
response, showImage, deleteImage, gameDone, gwendoTurn = parseHex(command,str(channel.id),user)
|
||
except:
|
||
logThis("Error parsing command (error code 1510)")
|
||
|
||
await channel.send(response)
|
||
logThis(response,str(channel.id))
|
||
if showImage:
|
||
if deleteImage:
|
||
try:
|
||
oldImage = await deleteMessage("hex"+str(channel.id),channel)
|
||
except:
|
||
logThis("Error deleting old image (error code 1501)")
|
||
oldImage = await channel.send(file = discord.File("resources/games/hexBoards/board"+str(channel.id)+".png"))
|
||
if not gameDone:
|
||
if gwendoTurn:
|
||
try:
|
||
response, showImage, deleteImage, gameDone, gwendoTurn = hexAI(str(channel.id))
|
||
except:
|
||
logThis("AI error (error code 1520)")
|
||
await channel.send(response)
|
||
logThis(response,str(channel.id))
|
||
if showImage:
|
||
if deleteImage:
|
||
await oldImage.delete()
|
||
oldImage = await channel.send(file = discord.File("resources/games/hexBoards/board"+str(channel.id)+".png"))
|
||
|
||
else:
|
||
with open("resources/games/oldImages/hex"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
|
||
if gameDone:
|
||
with open("resources/games/games.json", "r") as f:
|
||
data = json.load(f)
|
||
|
||
try:
|
||
with open("resources/games/oldImages/hex"+str(channel.id), "r") as f:
|
||
oldImage = await channel.fetch_message(int(f.read()))
|
||
await oldImage.delete()
|
||
except:
|
||
logThis("The old image was already deleted")
|
||
|
||
winner = data["hex games"][str(channel.id)]["winner"]
|
||
if winner != 0:
|
||
addMoney(data["hex games"][str(channel.id)]["players"][winner-1].lower(),20)
|
||
|
||
deleteGame("hex games",str(channel.id))
|
||
|
||
|
||
|
||
# Runs Four in a Row
|
||
async def fiar(channel,command,user):
|
||
try:
|
||
response, showImage, deleteImage, gameDone, gwendoTurn = parseFourInARow(command,str(channel.id),user)
|
||
except:
|
||
logThis("Error parsing command (error code 1410)")
|
||
|
||
await channel.send(response)
|
||
logThis(response,str(channel.id))
|
||
if showImage:
|
||
if deleteImage:
|
||
try:
|
||
oldImage = await deleteMessage("fourInARow"+str(channel.id),channel)
|
||
except:
|
||
logThis("Error deleting message (error code 1401)")
|
||
oldImage = await channel.send(file = discord.File("resources/games/4InARowBoards/board"+str(channel.id)+".png"))
|
||
if gameDone == False:
|
||
if gwendoTurn:
|
||
try:
|
||
response, showImage, deleteImage, gameDone, gwendoTurn = fourInARowAI(str(channel.id))
|
||
except:
|
||
logThis("AI error (error code 1420)")
|
||
await channel.send(response)
|
||
logThis(response,str(channel.id))
|
||
if showImage:
|
||
if deleteImage:
|
||
await oldImage.delete()
|
||
oldImage = await channel.send(file = discord.File("resources/games/4InARowBoards/board"+str(channel.id)+".png"))
|
||
if gameDone == False:
|
||
with open("resources/games/oldImages/fourInARow"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
try:
|
||
reactions = ["1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣"]
|
||
for reaction in reactions:
|
||
await oldImage.add_reaction(reaction)
|
||
|
||
except:
|
||
logThis("Image deleted before I could react to all of them")
|
||
|
||
else:
|
||
with open("resources/games/oldImages/fourInARow"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
try:
|
||
reactions = ["1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣"]
|
||
for reaction in reactions:
|
||
await oldImage.add_reaction(reaction)
|
||
except:
|
||
logThis("Image deleted before I could react to all of them")
|
||
|
||
if gameDone:
|
||
with open("resources/games/games.json", "r") as f:
|
||
data = json.load(f)
|
||
|
||
try:
|
||
with open("resources/games/oldImages/fourInARow"+str(channel.id), "r") as f:
|
||
oldImage = await channel.fetch_message(int(f.read()))
|
||
|
||
await oldImage.delete()
|
||
except:
|
||
logThis("The old image was already deleted")
|
||
|
||
winner = data["4 in a row games"][str(channel.id)]["winner"]
|
||
difficulty = int(data["4 in a row games"][str(channel.id)]["difficulty"])
|
||
reward = difficulty**2 + 5
|
||
if winner != 0:
|
||
if data["4 in a row games"][str(channel.id)]["players"][winner-1].lower() != "gwendolyn":
|
||
addMoney(data["4 in a row games"][str(channel.id)]["players"][winner-1].lower(),reward)
|
||
with open("resources/games/games.json", "r") as f:
|
||
data = json.load(f) #why is this here?
|
||
|
||
deleteGame("4 in a row games",str(channel.id))
|
||
|
||
# Loop of blackjack game rounds
|
||
async def blackjackLoop(channel,gameRound,gameID):
|
||
logThis("Loop "+str(gameRound),str(channel.id))
|
||
|
||
with open("resources/games/oldImages/blackjack"+str(channel.id), "r") as f:
|
||
oldImage = await channel.fetch_message(int(f.read()))
|
||
|
||
new_message, allStanding, gamedone = blackjackContinue(str(channel.id))
|
||
if new_message != "":
|
||
logThis(new_message,str(channel.id))
|
||
await channel.send(new_message)
|
||
if gamedone == False:
|
||
await oldImage.delete()
|
||
oldImage = await channel.send(file = discord.File("resources/games/blackjackTables/blackjackTable"+str(channel.id)+".png"))
|
||
with open("resources/games/oldImages/blackjack"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
|
||
try:
|
||
if allStanding:
|
||
await asyncio.sleep(5)
|
||
else:
|
||
await asyncio.sleep(120)
|
||
except:
|
||
logThis("Loop "+str(gameRound)+" interrupted (error code 1321)")
|
||
|
||
with open("resources/games/games.json", "r") as f:
|
||
data = json.load(f)
|
||
|
||
if str(channel.id) in data["blackjack games"]:
|
||
realRound = data["blackjack games"][str(channel.id)]["round"]
|
||
realGameID = data["blackjack games"][str(channel.id)]["id"]
|
||
|
||
if gameRound == realRound and realGameID == gameID:
|
||
if gamedone == False:
|
||
logThis("Loop "+str(gameRound)+" calling blackjackLoop()",str(channel.id))
|
||
await blackjackLoop(channel,gameRound+1,gameID)
|
||
else:
|
||
try:
|
||
new_message = blackjackFinish(str(channel.id))
|
||
except:
|
||
logThis("Something fucked up (error code 1310)")
|
||
await channel.send(new_message)
|
||
else:
|
||
logThis("Ending loop on round "+str(gameRound),str(channel.id))
|
||
else:
|
||
logThis("Ending loop on round "+str(gameRound),str(channel.id))
|
||
|
||
async def runMonopoly(channel, command, user):
|
||
try:
|
||
response, showImage, deleteImage, gameStarted, gameContinue = parseMonopoly(command,str(channel.id),user)
|
||
except:
|
||
logThis("Error parsing command (error code 1610)")
|
||
if response != "":
|
||
await channel.send(response)
|
||
logThis(response,str(channel.id))
|
||
if showImage:
|
||
if deleteImage:
|
||
try:
|
||
oldImage = await deleteMessage("monopoly"+str(channel.id),channel)
|
||
except:
|
||
logThis("Error deleting message (error code 1601)")
|
||
oldImage = await channel.send(file = discord.File("resources/games/monopolyBoards/monopolyBoard"+str(channel.id)+".png"))
|
||
with open("resources/games/oldImages/monopoly"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
|
||
if gameContinue:
|
||
if gameStarted:
|
||
await asyncio.sleep(60)
|
||
else:
|
||
await asyncio.sleep(3)
|
||
response, showImage, deleteImage, gameDone = monopolyContinue(str(channel.id))
|
||
em = discord.Embed(description=response,colour = 0x59f442)
|
||
await channel.send(embed=em)
|
||
if showImage:
|
||
if deleteImage:
|
||
try:
|
||
oldImage = await deleteMessage("monopoly"+str(channel.id),channel)
|
||
except:
|
||
logThis("Error deleting message (error code 1601)")
|
||
oldImage = await channel.send(file = discord.File("resources/games/monopolyBoards/monopolyBoard"+str(channel.id)+".png"))
|
||
with open("resources/games/oldImages/monopoly"+str(channel.id), "w") as f:
|
||
f.write(str(oldImage.id))
|
||
if gameDone == False:
|
||
try:
|
||
await oldImage.add_reaction("🎲")
|
||
except:
|
||
logThis("Image deleted before I could react to all of them")
|
||
|