🗃️ UserID's instead of display names

This commit is contained in:
Nikolaj Danger
2020-08-04 16:59:13 +02:00
parent 4bcc8cbf59
commit 2ea11eb51f
11 changed files with 201 additions and 111 deletions

1
.gitignore vendored
View File

@ -162,4 +162,5 @@ resources/lookup/monsters.json
resources/lookup/spells.json resources/lookup/spells.json
resources/movies.txt resources/movies.txt
resources/names.txt resources/names.txt
resources/users.json
gwendolynTest.py gwendolynTest.py

View File

@ -10,7 +10,7 @@ import random
#import math #import math
import os import os
from funcs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, emojiToNumber, fiarReactionTest, deleteGame, stopServer, checkBalance, giveMoney, triviaCountPoints, triviaStart, triviaAnswer, blackjackShuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit, parseFourInARow, fourInARowAI, spellFunc, monsterFunc, nameGen, tavernGen, movieFunc, roll_dice, parseChar, parseRoll, critRoll, parseDestiny, parseHex from funcs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, emojiToNumber, fiarReactionTest, deleteGame, stopServer, checkBalance, giveMoney, triviaCountPoints, triviaStart, triviaAnswer, blackjackShuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit, parseFourInARow, fourInARowAI, spellFunc, monsterFunc, nameGen, tavernGen, movieFunc, roll_dice, parseChar, parseRoll, critRoll, parseDestiny, parseHex, addToDict
from gameLoops import fiar, blackjackLoop, runhex from gameLoops import fiar, blackjackLoop, runhex
@ -58,7 +58,7 @@ async def parseCommands(message,content):
# Stops the bot # Stops the bot
elif content.startswith("stop"): elif content.startswith("stop"):
try: try:
if message.author.display_name == "Nikolaj": if "#"+str(message.author.id) == "#266269899859427329":
await message.channel.send("Logging out...") await message.channel.send("Logging out...")
stopServer() stopServer()
@ -220,7 +220,7 @@ async def parseCommands(message,content):
elif content.startswith("swroll"): elif content.startswith("swroll"):
try: try:
command = cap(content.replace("swroll","")) command = cap(content.replace("swroll",""))
newMessage = parseRoll(message.author.display_name,command) newMessage = parseRoll("#"+str(message.author.id),command)
messageList = newMessage.split("\n") messageList = newMessage.split("\n")
for messageItem in messageList: for messageItem in messageList:
await message.channel.send(messageItem) await message.channel.send(messageItem)
@ -232,7 +232,7 @@ async def parseCommands(message,content):
elif content.startswith("swd"): elif content.startswith("swd"):
try: try:
command = content.replace("swd","") command = content.replace("swd","")
newMessage = parseDestiny(message.author.display_name,command) newMessage = parseDestiny("#"+str(message.author.id),command)
messageList = newMessage.split("\n") messageList = newMessage.split("\n")
for messageItem in messageList: for messageItem in messageList:
await message.channel.send(messageItem) await message.channel.send(messageItem)
@ -266,7 +266,7 @@ async def parseCommands(message,content):
elif content.startswith("swchar") or content.startswith("sw"): elif content.startswith("swchar") or content.startswith("sw"):
try: try:
command = string.capwords(content.replace("swchar","").replace("sw","").replace("+","+ ").replace("-","- ").replace(",",", ")) command = string.capwords(content.replace("swchar","").replace("sw","").replace("+","+ ").replace("-","- ").replace(",",", "))
title, desc = parseChar(message.author.display_name,command) title, desc = parseChar("#"+str(message.author.id),command)
if title != "": if title != "":
em1 = discord.Embed(title = title, description = desc, colour=0xDEADBF) em1 = discord.Embed(title = title, description = desc, colour=0xDEADBF)
await message.channel.send(embed = em1) await message.channel.send(embed = em1)
@ -323,7 +323,7 @@ async def parseCommands(message,content):
elif content.startswith("trivia "): elif content.startswith("trivia "):
command = content.replace("trivia ","") command = content.replace("trivia ","")
response = triviaAnswer(message.author.display_name.lower(),str(message.channel),command) response = triviaAnswer("#"+str(message.author.id),str(message.channel),command)
if response.startswith("Locked in "): if response.startswith("Locked in "):
await message.add_reaction("👍") await message.add_reaction("👍")
else: else:
@ -339,7 +339,7 @@ async def parseCommands(message,content):
# Checks your GwendoBucks balance # Checks your GwendoBucks balance
elif content.startswith("balance"): elif content.startswith("balance"):
try: try:
response = checkBalance(message.author.display_name.lower()) response = checkBalance("#"+str(message.author.id))
if response == 1: if response == 1:
new_message = message.author.display_name + " has " + str(response) + " GwendoBuck" new_message = message.author.display_name + " has " + str(response) + " GwendoBuck"
else: else:
@ -360,7 +360,7 @@ async def parseCommands(message,content):
logThis("Conversion error (error code 1221)",str(message.channel)) logThis("Conversion error (error code 1221)",str(message.channel))
await message.channel.send("I didn't quite understand that (error code 1221)") await message.channel.send("I didn't quite understand that (error code 1221)")
else: else:
response = giveMoney(message.author.display_name.lower(),commands[1],amount) response = giveMoney("#"+str(message.author.id),commands[1],amount)
await message.channel.send(response) await message.channel.send(response)
else: else:
logThis("I didn't understand that (error code 1222)",str(message.channel)) logThis("I didn't understand that (error code 1222)",str(message.channel))
@ -426,20 +426,20 @@ async def parseCommands(message,content):
logThis("I didn't understand that",str(message.channel)) logThis("I didn't understand that",str(message.channel))
response = "I didn't understand that" response = "I didn't understand that"
else: else:
response = blackjackPlayerDrawHand(str(message.channel),message.author.display_name,amount) response = blackjackPlayerDrawHand(str(message.channel),"#"+str(message.author.id),amount)
await message.channel.send(response) await message.channel.send(response)
# Hitting # Hitting
elif content.startswith("blackjack hit"): elif content.startswith("blackjack hit"):
if content == "blackjack hit" or content == "blackjack hit ": if content == "blackjack hit" or content == "blackjack hit ":
response = blackjackHit(str(message.channel),message.author.display_name) response = blackjackHit(str(message.channel),"#"+str(message.author.id))
else: else:
commands = content.split(" ") commands = content.split(" ")
try: try:
handNumber = int(commands[2]) handNumber = int(commands[2])
except: except:
handNumber = 0 handNumber = 0
response = blackjackHit(str(message.channel),message.author.display_name,handNumber) response = blackjackHit(str(message.channel),"#"+str(message.author.id),handNumber)
if response.startswith("accept"): if response.startswith("accept"):
await message.add_reaction("👍") await message.add_reaction("👍")
@ -458,14 +458,14 @@ async def parseCommands(message,content):
# Standing # Standing
elif content.startswith("blackjack stand"): elif content.startswith("blackjack stand"):
if content == "blackjack hit" or content == "blackjack hit ": if content == "blackjack hit" or content == "blackjack hit ":
response = blackjackStand(str(message.channel),message.author.display_name) response = blackjackStand(str(message.channel),"#"+str(message.author.id))
else: else:
commands = content.split(" ") commands = content.split(" ")
try: try:
handNumber = int(commands[2]) handNumber = int(commands[2])
except: except:
handNumber = 0 handNumber = 0
response = blackjackStand(str(message.channel),message.author.display_name,handNumber) response = blackjackStand(str(message.channel),"#"+str(message.author.id),handNumber)
if response.startswith("accept"): if response.startswith("accept"):
await message.add_reaction("👍") await message.add_reaction("👍")
@ -487,7 +487,7 @@ async def parseCommands(message,content):
handNumber = int(commands[2]) handNumber = int(commands[2])
except: except:
handNumber = 0 handNumber = 0
response, roundDone = blackjackDouble(str(message.channel),message.author.display_name,handNumber) response, roundDone = blackjackDouble(str(message.channel),"#"+str(message.author.id),handNumber)
await message.channel.send(response) await message.channel.send(response)
@ -507,7 +507,7 @@ async def parseCommands(message,content):
handNumber = int(commands[2]) handNumber = int(commands[2])
except: except:
handNumber = 0 handNumber = 0
response, roundDone = blackjackSplit(str(message.channel),message.author.display_name,handNumber) response, roundDone = blackjackSplit(str(message.channel),"#"+str(message.author.id),handNumber)
await message.channel.send(response) await message.channel.send(response)
@ -521,7 +521,7 @@ async def parseCommands(message,content):
logThis("Something fucked up (error code 1320)") logThis("Something fucked up (error code 1320)")
# Returning current hi-lo value # Returning current hi-lo value
elif content.startswith("blackjack hilo") and message.author.display_name == "Nikolaj": elif content.startswith("blackjack hilo") and "#"+str(message.author.id) == "#266269899859427329":
if os.path.exists("resources/games/blackjackCards/"+str(message.channel)+".txt"): if os.path.exists("resources/games/blackjackCards/"+str(message.channel)+".txt"):
with open("resources/games/hilo/"+str(message.channel)+".txt", "r") as f: with open("resources/games/hilo/"+str(message.channel)+".txt", "r") as f:
data = f.read() data = f.read()
@ -557,7 +557,7 @@ async def parseCommands(message,content):
elif content.startswith("fourinarow"): elif content.startswith("fourinarow"):
try: try:
command = content.replace("fourinarow","") command = content.replace("fourinarow","")
await fiar(message.channel,command,message.author.display_name) await fiar(message.channel,command,"#"+str(message.author.id))
except: except:
logThis("Something went wrong (error code 1400)") logThis("Something went wrong (error code 1400)")
@ -565,7 +565,7 @@ async def parseCommands(message,content):
elif content.startswith("hex"): elif content.startswith("hex"):
try: try:
command = content.replace("hex","") command = content.replace("hex","")
await runhex(message.channel,command,message.author.display_name) await runhex(message.channel,command,"#"+str(message.author.id))
except: except:
logThis("Something went wrong (error code 1500)") logThis("Something went wrong (error code 1500)")
@ -574,7 +574,6 @@ async def parseCommands(message,content):
logThis("That's not a command (error code 001)",str(message.channel)) logThis("That's not a command (error code 001)",str(message.channel))
await message.channel.send("That's not a command (error code 001)") await message.channel.send("That's not a command (error code 001)")
# Makes files if they don't exist yet # Makes files if they don't exist yet
makeFiles() makeFiles()
@ -597,7 +596,8 @@ async def on_message(message):
try: try:
content = message.content content = message.content
if content.startswith(commandPrefix): if content.startswith(commandPrefix):
logThis(message.author.display_name+" ran \""+content+"\"",str(message.channel)) logThis(message.author.display_name+" ("+"#"+str(message.author.id)+") ran \""+content+"\"",str(message.channel))
addToDict("#"+str(message.author.id),message.author.display_name)
await parseCommands(message,content.lower()[1:]) await parseCommands(message,content.lower()[1:])
except: except:
logThis("Something fucked up (error code 000)") logThis("Something fucked up (error code 000)")
@ -615,11 +615,11 @@ async def on_reaction_add(reaction,user):
message = reaction.message message = reaction.message
channel = message.channel channel = message.channel
logThis(user.display_name+" reacted to a message",str(channel)) logThis(user.display_name+" reacted to a message",str(channel))
fourInARowTheirTurn, piece = fiarReactionTest(channel,message,user.display_name) fourInARowTheirTurn, piece = fiarReactionTest(channel,message,"#"+str(user.id))
if fourInARowTheirTurn: if fourInARowTheirTurn:
place = emojiToNumber(reaction.emoji) place = emojiToNumber(reaction.emoji)
await fiar(channel," place "+str(piece)+" "+str(place),user.display_name) await fiar(channel," place "+str(piece)+" "+str(place),user.id)
# Runs the whole shabang # Runs the whole shabang
client.run(token) client.run(token)

View File

@ -1,8 +1,8 @@
"""A collection of all Gwendolyn functions.""" """A collection of all Gwendolyn functions."""
__all__ = ["helloFunc", "cap", "imageFunc", "logThis", "findWikiPage", "makeFiles", "emojiToNumber", "fiarReactionTest", "deleteGame", "stopServer", "checkBalance", "giveMoney", "addMoney", "triviaCountPoints", "triviaStart", "triviaAnswer", "blackjackShuffle", "blackjackStart", "blackjackPlayerDrawHand", "blackjackContinue", "blackjackFinish", "blackjackHit", "blackjackStand", "blackjackDouble", "blackjackSplit", "parseFourInARow", "fourInARowAI", "spellFunc", "monsterFunc", "nameGen", "tavernGen", "movieFunc", "roll_dice", "parseChar", "parseRoll", "critRoll", "parseDestiny","parseHex"] __all__ = ["helloFunc", "cap", "imageFunc", "logThis", "findWikiPage", "makeFiles", "emojiToNumber", "fiarReactionTest", "deleteGame", "stopServer", "checkBalance", "giveMoney", "addMoney", "triviaCountPoints", "triviaStart", "triviaAnswer", "blackjackShuffle", "blackjackStart", "blackjackPlayerDrawHand", "blackjackContinue", "blackjackFinish", "blackjackHit", "blackjackStand", "blackjackDouble", "blackjackSplit", "parseFourInARow", "fourInARowAI", "spellFunc", "monsterFunc", "nameGen", "tavernGen", "movieFunc", "roll_dice", "parseChar", "parseRoll", "critRoll", "parseDestiny", "parseHex", "addToDict", "getName", "getID"]
from .miscFuncs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, replaceMultiple, emojiToNumber, fiarReactionTest, deleteGame, stopServer from .miscFuncs import helloFunc, cap, imageFunc, logThis, findWikiPage, makeFiles, replaceMultiple, emojiToNumber, fiarReactionTest, deleteGame, stopServer, addToDict, getName, getID
from .games import checkBalance, giveMoney, addMoney, triviaCountPoints, triviaStart, triviaAnswer, blackjackShuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit, parseFourInARow, fourInARowAI, parseHex from .games import checkBalance, giveMoney, addMoney, triviaCountPoints, triviaStart, triviaAnswer, blackjackShuffle, blackjackStart, blackjackPlayerDrawHand, blackjackContinue, blackjackFinish, blackjackHit, blackjackStand, blackjackDouble, blackjackSplit, parseFourInARow, fourInARowAI, parseHex

View File

@ -5,7 +5,7 @@ import datetime
from shutil import copyfile from shutil import copyfile
from funcs import logThis, replaceMultiple from funcs import logThis, replaceMultiple, getName
from . import money, blackjackDraw from . import money, blackjackDraw
# Shuffles the blackjack cards # Shuffles the blackjack cards
@ -352,7 +352,7 @@ def blackjackDouble(channel,user,handNumber = 0):
roundDone = False roundDone = False
return "Adding another "+str(bet)+" GwendoBucks to "+user+"'s bet and drawing another card.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"]) return "Adding another "+str(bet)+" GwendoBucks to "+getName(user)+"'s bet and drawing another card.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
else: else:
logThis(user+" doesn't have enough GwendoBucks") logThis(user+" doesn't have enough GwendoBucks")
return "You don't have enough GwendoBucks","" return "You don't have enough GwendoBucks",""
@ -544,7 +544,7 @@ def blackjackSplit(channel,user,handNumber = 0):
if person["fourth hand"]["hit"] == False and person["fourth hand"]["standing"] == False: if person["fourth hand"]["hit"] == False and person["fourth hand"]["standing"] == False:
roundDone = False roundDone = False
return "Splitting "+user+"'s hand into 2. Adding their original bet to the second hand. You can use \"!Blackjack hit/stand/double 1\" and \"!Blackjack hit/stand/double 2\" to play the different hands.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"]) return "Splitting "+getName(user)+"'s hand into 2. Adding their original bet to the second hand. You can use \"!Blackjack hit/stand/double 1\" and \"!Blackjack hit/stand/double 2\" to play the different hands.",str(roundDone)[0] + str(data["blackjack games"][channel]["round"])
else: else:
logThis(user+" doesn't have enough GwendoBucks") logThis(user+" doesn't have enough GwendoBucks")
return "You don't have enough GwendoBucks","" return "You don't have enough GwendoBucks",""
@ -572,7 +572,7 @@ def blackjackPlayerDrawHand(channel,user,bet):
with open("resources/games/games.json", "r") as f: with open("resources/games/games.json", "r") as f:
data = json.load(f) data = json.load(f)
logThis(user+" is trying to join the game in "+channel) logThis(getName(user)+" is trying to join the game in "+channel)
if channel in data["blackjack games"]: if channel in data["blackjack games"]:
if user not in data["blackjack games"][channel]["user hands"]: if user not in data["blackjack games"][channel]["user hands"]:
@ -600,8 +600,8 @@ def blackjackPlayerDrawHand(channel,user,bet):
with open("resources/games/games.json", "w") as f: with open("resources/games/games.json", "w") as f:
json.dump(data,f,indent=4) json.dump(data,f,indent=4)
logThis(user+" entered the game") logThis(getName(user)+" entered the game")
return user+" entered the game" return getName(user)+" entered the game"
else: else:
logThis(user+" doesn't have enough GwendoBucks") logThis(user+" doesn't have enough GwendoBucks")
return "You don't have enough GwendoBucks to place that bet" return "You don't have enough GwendoBucks to place that bet"
@ -669,14 +669,14 @@ def blackjackFinish(channel):
if winnings < 0: if winnings < 0:
if winnings == -1: if winnings == -1:
finalWinnings += user+" lost "+str(-1 * winnings)+" GwendoBuck "+reason+"\n" finalWinnings += getName(user)+" lost "+str(-1 * winnings)+" GwendoBuck "+reason+"\n"
else: else:
finalWinnings += user+" lost "+str(-1 * winnings)+" GwendoBucks "+reason+"\n" finalWinnings += getName(user)+" lost "+str(-1 * winnings)+" GwendoBucks "+reason+"\n"
else: else:
if winnings == 1: if winnings == 1:
finalWinnings += user+" won "+str(winnings)+" GwendoBuck "+reason+"\n" finalWinnings += getName(user)+" won "+str(winnings)+" GwendoBuck "+reason+"\n"
else: else:
finalWinnings += user+" won "+str(winnings)+" GwendoBucks "+reason+"\n" finalWinnings += getName(user)+" won "+str(winnings)+" GwendoBucks "+reason+"\n"
money.addMoney(user,netWinnings) money.addMoney(user,netWinnings)

View File

@ -1,7 +1,7 @@
import json import json
from PIL import Image, ImageDraw, ImageFont from PIL import Image, ImageDraw, ImageFont
from funcs import logThis from funcs import logThis, getName
border = 100 border = 100
placement = [0,0] placement = [0,0]
@ -35,6 +35,7 @@ def drawImage(channel):
for x in range(len(hands)): for x in range(len(hands)):
key, value = list(hands.items())[x] key, value = list(hands.items())[x]
key = getName(key)
logThis("drawing "+key+"'s hand") logThis("drawing "+key+"'s hand")
userHand = drawHand(value["hand"],False,value["busted"],value["blackjack"]) userHand = drawHand(value["hand"],False,value["busted"],value["blackjack"])
try: try:

View File

@ -4,7 +4,7 @@ import copy
import math import math
from . import fourInARowDraw from . import fourInARowDraw
from funcs import logThis from funcs import logThis, getName, getID
AIScores = { AIScores = {
"middle": 3, "middle": 3,
@ -26,48 +26,52 @@ def fourInARowStart(channel, user, opponent):
with open("resources/games/games.json", "r") as f: with open("resources/games/games.json", "r") as f:
data = json.load(f) data = json.load(f)
if user.lower() != opponent.lower(): if channel not in data["4 in a row games"]:
if channel not in data["4 in a row games"]:
if opponent in ["1","2","3","4","5"]: if opponent in ["1","2","3","4","5"]:
difficulty = int(opponent) difficulty = int(opponent)
diffText = " with difficulty "+opponent diffText = " with difficulty "+opponent
opponent = "Gwendolyn" opponent = "Gwendolyn"
elif opponent.lower() == "gwendolyn": elif opponent.lower() == "gwendolyn":
difficulty = 3 difficulty = 3
diffText = " with difficulty 3" diffText = " with difficulty 3"
opponent = "Gwendolyn" opponent = "Gwendolyn"
else: else:
try: try:
int(opponent) int(opponent)
return "That difficulty doesn't exist", False, False, False, False return "That difficulty doesn't exist", False, False, False, False
except: except:
# Opponent is another player # Opponent is another player
opponent = getID(opponent)
if opponent != None:
difficulty = 5 difficulty = 5
diffText = "" diffText = ""
else:
return "I can't find that user", False, False, False, False
if user == opponent:
return "You can't play against yourself", False, False, False, False
board = [ [ 0 for i in range(columnCount) ] for j in range(rowCount) ] board = [ [ 0 for i in range(columnCount) ] for j in range(rowCount) ]
players = [user,opponent] players = [user,opponent]
random.shuffle(players) random.shuffle(players)
data["4 in a row games"][channel] = {"board": board,"winner":0,"win direction":"", data["4 in a row games"][channel] = {"board": board,"winner":0,"win direction":"",
"win coordinates":[0,0],"players":players,"turn":0,"difficulty":difficulty} "win coordinates":[0,0],"players":players,"turn":0,"difficulty":difficulty}
with open("resources/games/games.json", "w") as f: with open("resources/games/games.json", "w") as f:
json.dump(data,f,indent=4) json.dump(data,f,indent=4)
fourInARowDraw.drawImage(channel) fourInARowDraw.drawImage(channel)
gwendoTurn = False gwendoTurn = False
if players[0] == "Gwendolyn": if players[0] == "Gwendolyn":
gwendoTurn = True gwendoTurn = True
return "Started game against "+opponent+diffText+". It's "+players[0]+"'s turn", True, False, False, gwendoTurn return "Started game against "+getName(opponent)+diffText+". It's "+getName(players[0])+"'s turn", True, False, False, gwendoTurn
else:
return "There's already a 4 in a row game going on in this channel", False, False, False, False
else: else:
return "You can't play against yourself", False, False, False, False return "There's already a 4 in a row game going on in this channel", False, False, False, False
# Places a piece at the lowest available point in a specific column # Places a piece at the lowest available point in a specific column
def placePiece(channel : str,player : int,column : int): def placePiece(channel : str,player : int,column : int):
@ -97,7 +101,7 @@ def placePiece(channel : str,player : int,column : int):
data["4 in a row games"][channel]["win direction"] = winDirection data["4 in a row games"][channel]["win direction"] = winDirection
data["4 in a row games"][channel]["win coordinates"] = winCoordinates data["4 in a row games"][channel]["win coordinates"] = winCoordinates
message = data["4 in a row games"][channel]["players"][won-1]+" won." message = getName(data["4 in a row games"][channel]["players"][won-1])+" won."
winAmount = int(data["4 in a row games"][channel]["difficulty"])^2+5 winAmount = int(data["4 in a row games"][channel]["difficulty"])^2+5
if data["4 in a row games"][channel]["players"][won-1] != "Gwendolyn": if data["4 in a row games"][channel]["players"][won-1] != "Gwendolyn":
message += " Adding "+str(winAmount)+" GwendoBucks to their account." message += " Adding "+str(winAmount)+" GwendoBucks to their account."
@ -106,7 +110,7 @@ def placePiece(channel : str,player : int,column : int):
message = "It's a draw!" message = "It's a draw!"
else: else:
gameWon = False gameWon = False
message = data["4 in a row games"][channel]["players"][player-1]+" placed a piece in column "+str(column+1)+". It's now "+data["4 in a row games"][channel]["players"][turn]+"'s turn." message = getName(data["4 in a row games"][channel]["players"][player-1])+" placed a piece in column "+str(column+1)+". It's now "+getName(data["4 in a row games"][channel]["players"][turn])+"'s turn."
with open("resources/games/games.json", "w") as f: with open("resources/games/games.json", "w") as f:
json.dump(data,f,indent=4) json.dump(data,f,indent=4)

View File

@ -2,7 +2,7 @@ import json
import math import math
from PIL import Image, ImageDraw, ImageFont from PIL import Image, ImageDraw, ImageFont
from funcs import logThis from funcs import logThis, getName
# Draws the whole thing # Draws the whole thing
def drawImage(channel): def drawImage(channel):
@ -32,6 +32,16 @@ def drawImage(channel):
pieceStartx = (border+gridBorder)+math.floor(placeGridSize[0]/2)-math.floor(placeSize/2) pieceStartx = (border+gridBorder)+math.floor(placeGridSize[0]/2)-math.floor(placeSize/2)
pieceStarty = (border+gridBorder)+math.floor(placeGridSize[1]/2)-math.floor(placeSize/2) pieceStarty = (border+gridBorder)+math.floor(placeGridSize[1]/2)-math.floor(placeSize/2)
if data["4 in a row games"][channel]["players"][0] == "Gwendolyn":
player1 = "Gwendolyn"
else:
player1 = getName(data["4 in a row games"][channel]["players"][0])
if data["4 in a row games"][channel]["players"][1] == "Gwendolyn":
player2 = "Gwendolyn"
else:
player2 = getName(data["4 in a row games"][channel]["players"][1])
background = Image.new("RGB", (w,h+bottomBorder),backgroundColor) background = Image.new("RGB", (w,h+bottomBorder),backgroundColor)
d = ImageDraw.Draw(background,"RGBA") d = ImageDraw.Draw(background,"RGBA")
@ -124,11 +134,11 @@ def drawImage(channel):
exampleHeight = h - border + int((bottomBorder+border)/2) - int(exampleCircles/2) exampleHeight = h - border + int((bottomBorder+border)/2) - int(exampleCircles/2)
d.ellipse([(border,exampleHeight),(border+exampleCircles),(exampleHeight+exampleCircles)],fill=(255,255,0),outline=(0,0,0),width=3) d.ellipse([(border,exampleHeight),(border+exampleCircles),(exampleHeight+exampleCircles)],fill=(255,255,0),outline=(0,0,0),width=3)
d.text((border+exampleCircles+textPadding,exampleHeight),data["4 in a row games"][channel]["players"][0],font=fnt,fill=(0,0,0)) d.text((border+exampleCircles+textPadding,exampleHeight),player1,font=fnt,fill=(0,0,0))
textWidth = fnt.getsize(data["4 in a row games"][channel]["players"][1])[0] textWidth = fnt.getsize(player2)[0]
d.ellipse([(w-border-exampleCircles-textWidth-textPadding,exampleHeight),(w-border-textWidth-textPadding),(exampleHeight+exampleCircles)],fill=(255,0,0),outline=(0,0,0),width=3) d.ellipse([(w-border-exampleCircles-textWidth-textPadding,exampleHeight),(w-border-textWidth-textPadding),(exampleHeight+exampleCircles)],fill=(255,0,0),outline=(0,0,0),width=3)
d.text((w-border-textWidth,exampleHeight),data["4 in a row games"][channel]["players"][1],font=fnt,fill=(0,0,0)) d.text((w-border-textWidth,exampleHeight),player2,font=fnt,fill=(0,0,0))
background.save("resources/games/4InARowBoards/board"+channel+".png") background.save("resources/games/4InARowBoards/board"+channel+".png")

View File

@ -1,47 +1,52 @@
import json import json
from funcs import logThis from funcs import logThis, getID
# Returns the account balance for a user # Returns the account balance for a user
def checkBalance(user): def checkBalance(user):
user = user.lower() user = user.lower()
logThis("checking "+user+"'s account balance") logThis("checking "+user+"'s account balance")
with open("resources/games/games.json", "r") as f: with open("resources/users.json", "r") as f:
data = json.load(f) data = json.load(f)
if user in data["users"]: if user in data:
return data["users"][user] return data[user]["money"]
else: return 0 else: return 0
# Adds money to the account of a user # Adds money to the account of a user
def addMoney(user,amount): def addMoney(user,amount):
user = user.lower()
logThis("adding "+str(amount)+" to "+user+"'s account") logThis("adding "+str(amount)+" to "+user+"'s account")
with open("resources/games/games.json", "r") as f: with open("resources/users.json", "r") as f:
data = json.load(f) data = json.load(f)
if user in data["users"]: if user in data:
points = data["users"][user] points = data[user]["money"]
data["users"][user] = points + amount data[user]["money"] = points + amount
else: else:
data["users"][user] = amount logThis("Error adding money")
with open("resources/games/games.json", "w") as f: with open("resources/users.json", "w") as f:
json.dump(data,f,indent=4) json.dump(data,f,indent=4)
# Transfers money from one user to another # Transfers money from one user to another
def giveMoney(user,targetUser,amount): def giveMoney(user,targetUser,amount):
with open("resources/games/games.json", "r") as f: with open("resources/users.json", "r") as f:
data = json.load(f) data = json.load(f)
if user in data["users"]: targetUser == getID(targetUser)
if data["users"][user] >= amount:
addMoney(user,-1 * amount) if targetUser.startswith("#"):
addMoney(targetUser,amount) if user in data:
return "Transferred "+str(amount)+" GwendoBucks to "+targetUser if data[user]["money"] >= amount:
addMoney(user,-1 * amount)
addMoney(targetUser,amount)
return "Transferred "+str(amount)+" GwendoBucks to "+targetUser
else:
logThis("They didn't have enough GwendoBucks (error code 1223b)")
return "You don't have that many GwendoBucks (error code 1223b)"
else: else:
logThis("They didn't have enough GwendoBucks (error code 1223b)") logThis("They didn't have enough GwendoBucks (error code 1223a)")
return "You don't have that many GwendoBucks (error code 1223b)" return "You don't have that many GwendoBucks (error code 1223a)"
else: else:
logThis("They didn't have enough GwendoBucks (error code 1223a)") logThis("They weren't in the system")
return "You don't have that many GwendoBucks (error code 1223a)" return "The target doesn't exist"

View File

@ -180,6 +180,17 @@ def makeFiles():
json.dump(data,f,indent = 4) json.dump(data,f,indent = 4)
finally: finally:
f.close() f.close()
# Creates users.json if it doesn't exist
try:
f = open("resources/users.json","r")
except:
logThis("users.json didn't exist. Making it now.")
data = {}
with open("resources/users.json","w") as f:
json.dump(data,f,indent = 4)
finally:
f.close()
# Creates destinyPoints.txt if it doesn't exist # Creates destinyPoints.txt if it doesn't exist
try: try:
@ -291,11 +302,9 @@ def fiarReactionTest(channel,message,user):
if message.id == oldImage: if message.id == oldImage:
logThis("They reacted to the fourinarow game") logThis("They reacted to the fourinarow game")
turn = data["4 in a row games"][str(channel)]["turn"] turn = data["4 in a row games"][str(channel)]["turn"]
if user.lower() == data["4 in a row games"][str(channel)]["players"][turn].lower(): print(user)
if user != data["4 in a row games"][str(channel)]["players"][turn]: print(data["4 in a row games"][str(channel)]["players"][turn])
data["4 in a row games"][str(channel)]["players"][turn] = user if user == data["4 in a row games"][str(channel)]["players"][turn]:
with open("resources/games/games.json","w") as f:
json.dump(data,f,indent=4)
return True, turn+1 return True, turn+1
else: else:
logThis("It wasn't their turn") logThis("It wasn't their turn")
@ -321,3 +330,61 @@ def deleteGame(gameType,channel):
del data[gameType][channel] del data[gameType][channel]
with open("resources/games/games.json", "w") as f: with open("resources/games/games.json", "w") as f:
json.dump(data,f,indent=4) json.dump(data,f,indent=4)
def addToDict(userID,userName):
with open("resources/users.json", "r") as f:
data = json.load(f)
if userID in data:
if data[userID]["user name"] != userName:
logThis("changing name for "+userName)
data[userID]["user name"] = userName
with open("resources/users.json", "w") as f:
json.dump(data,f,indent=4)
else:
logThis("creating "+userName+" in the system")
with open("resources/games/games.json","r") as f:
games = json.load(f)
if userName.lower() in games["users"]:
money = games["users"][userName.lower()]
del games["users"][userName.lower()]
with open("resources/games/games.json", "w") as f:
json.dump(games,f,indent=4)
else:
money = 0
data[userID] = {"user name" : userName, "money" : money}
with open("resources/users.json", "w") as f:
json.dump(data,f,indent=4)
def getName(userID):
try:
with open("resources/users.json", "r") as f:
data = json.load(f)
if userID in data:
logThis("yeet")
return data[userID]["user name"]
else:
logThis("Couldn't find user")
return userID
except:
logThis("Error getting name")
def getID(userName):
try:
with open("resources/users.json", "r") as f:
data = json.load(f)
userID = None
for key, value in data.items():
if userName.lower() == value["user name"].lower():
userID = key
break
return userID
except:
logThis("Error getting ID")

View File

@ -1,10 +1,10 @@
import json import json
import string import string
from funcs import logThis from funcs import logThis, getName
def getName(user : str): def getCharName(user : str):
logThis("Getting name for "+user+"'s character") logThis("Getting name for "+getName(user)+"'s character")
with open("resources/starWars/swcharacters.json", "r") as f: with open("resources/starWars/swcharacters.json", "r") as f:
data = json.load(f) data = json.load(f)
@ -12,8 +12,8 @@ def getName(user : str):
logThis("Name is "+data[user]["Name"]) logThis("Name is "+data[user]["Name"])
return data[user]["Name"] return data[user]["Name"]
else: else:
logThis("Just using "+user) logThis("Just using "+getName(user))
return user return getName(user)
def setUpDict(cmd : dict): def setUpDict(cmd : dict):
logThis("Setting up a dictionary in a nice way") logThis("Setting up a dictionary in a nice way")
@ -251,7 +251,7 @@ def charData(user : str,cmd : str):
if cmd == "": if cmd == "":
break break
logThis("Looking for "+user+"'s character") logThis("Looking for "+getName(user)+"'s character")
if user in data: if user in data:
logThis("Foundt it! Looking for "+key+" in the data") logThis("Foundt it! Looking for "+key+" in the data")
if key in data[user]: if key in data[user]:
@ -498,27 +498,29 @@ def parseChar(user : str, cmd : str):
if cmd == "": if cmd == "":
break break
if cmd == "": if cmd == "":
if user in data: if user in data:
text1, text2 = characterSheet(data[user]) text1, text2 = characterSheet(data[user])
return text1, replaceWithSpaces(text2) return text1, replaceWithSpaces(text2)
else: else:
logThis("Makin' a character for "+user) logThis("Makin' a character for "+getName(user))
with open("resources/starWars/swtemplates.json", "r") as f: with open("resources/starWars/swtemplates.json", "r") as f:
templates = json.load(f) templates = json.load(f)
newChar = templates["Character"] newChar = templates["Character"]
data[user] = newChar data[user] = newChar
with open("resources/starWars/swcharacters.json", "w") as f: with open("resources/starWars/swcharacters.json", "w") as f:
json.dump(data,f,indent = 4) json.dump(data,f,indent = 4)
return "", "Character for " + user + " created" return "", "Character for " + getName(user) + " created"
else: else:
if cmd == "Purge": if cmd == "Purge":
logThis("Deleting "+user+"'s character") logThis("Deleting "+getName(user)+"'s character")
del data[user] del data[user]
with open("resources/starWars/swcharacters.json", "w") as f: with open("resources/starWars/swcharacters.json", "w") as f:
json.dump(data,f,indent = 4) json.dump(data,f,indent = 4)
return "", "Character for " + user + " deleted" return "", "Character for " + getName(user) + " deleted"
return "", replaceWithSpaces(str(charData(user,cmd))) else:
return "", replaceWithSpaces(str(charData(user,cmd)))
def lightsaberChar(user : str): def lightsaberChar(user : str):
with open("resources/starWars/swcharacters.json", "r") as f: with open("resources/starWars/swcharacters.json", "r") as f:

View File

@ -367,7 +367,7 @@ def parseRoll(user : str,cmd : str = ""):
simplified = simplify(rollResults) simplified = simplify(rollResults)
name = swchar.getName(user) name = swchar.getCharName(user)
logThis("Returns results and simplified results") logThis("Returns results and simplified results")