Merge pull request #39 from robbyblum/master

issue #35 fix hopefully ("can't display 0 star player" bug)
This commit is contained in:
Sakimori 2020-12-26 20:27:27 -05:00 committed by GitHub
commit 6e8a54cead
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -137,6 +137,7 @@ async def on_message(msg):
if innings < 2:
await msg.channel.send("Anything less than 2 innings isn't even an outing. Try again.")
return
elif innings > 30 and msg.author.id not in config()["owners"]:
await msg.channel.send("Y'all can't behave, so we've limited games to 30 innings. Ask xvi to start it with more if you really want to.")
@ -147,7 +148,7 @@ async def on_message(msg):
elif command.startswith("setupgame"):
if len(gamesarray) > 45:
await msg.channel.send("We're running 45 games and we doubt Discord will be happy with any more. These edit requests don't come cheap.")
await msg.channel.send("We're running 45 games and we doubt Discord will be happy with any more. These edit requests don't come cheap."
return
elif config()["game_freeze"]:
await msg.channel.send("Patch incoming. We're not allowing new games right now.")
@ -165,7 +166,7 @@ async def on_message(msg):
await game_task
elif command.startswith("saveteam\n"):
if db.get_team(command.split("\n",1)[1].split("\n")[0]) == None:
if db.get_team(command.split("\n",1)[1].split("\n")[0]) == None:
save_task = asyncio.create_task(save_team_batch(msg, command))
await save_task
else:
@ -173,7 +174,7 @@ async def on_message(msg):
await msg.channel.send(f"{name} already exists. Try a new name, maybe?")
elif command.startswith("showteam "):
team = games.get_team(command.split(" ",1)[1])
team = games.get_team(command.split(" ",1)[1])
if team is not None:
await msg.channel.send(embed=build_team_embed(team))
else:
@ -203,9 +204,9 @@ async def on_message(msg):
"saveteam":("m;saveteam", """To save an entire team, send this command at the top of a list, with lines seperated by newlines (shift+enter in discord, or copy+paste from notepad)
- the first line of the list is your team's name (cannot contain emoji)
- the second is your team's slogan
- the rest of the lines are your players' names
- the rest of the lines are your players' names
- the last player is designated your pitcher
if you did it correctly, you'll get a team embed with a prompt to confirm. Hit the 👍 and it'll be saved."""),
if you did it correctly, you'll get a team embed with a prompt to confirm. Hit the 👍 and it'll be saved."""),
"showteam":("m;showteam [name]", "You can view any saved team with this command"),
"showallteams":("m;showallteams", "This displays a paginated list of all teams available for `startgame`"),
"searchteams":("m;searchteams [searchterm]", "Displays paginated list of all teams whose names contain `searchterm`"),
@ -271,7 +272,7 @@ async def setup_game(channel, owner, newgame):
def nameinput(msg):
return msg.content.startswith(newgame.name) and msg.channel == channel #if author or willing participant and in correct channel
while newgame.teams["away"].pitcher == None:
try:
@ -385,7 +386,7 @@ async def watch_game(channel, game):
occupied_base = discord.utils.get(client.emojis, id = 790899850320543745)
out_emoji = discord.utils.get(client.emojis, id = 791578957241778226)
in_emoji = discord.utils.get(client.emojis, id = 791578957244792832)
newgame = game
embed = await channel.send("Starting...")
await asyncio.sleep(1)
@ -417,7 +418,7 @@ async def watch_game(channel, game):
if state == "Game not started.":
new_embed.add_field(name="🍿", value="Play blall!", inline=False)
elif newgame.top_of_inning != top_of_inning:
pause = 2
new_embed.set_field_at(4, name="Pitcher:", value="-", inline=False)
@ -433,11 +434,11 @@ async def watch_game(channel, game):
if newgame.teams["home"].score > newgame.teams["away"].score: #if home team is winning at the bottom of the last inning
victory_lap = True
new_embed.add_field(name="🍿", value=f"Bottom of {newgame.inning}. {newgame.teams['home'].name} batting!", inline=False)
if pause != 1 and state != "Game not started.":
punc = ""
if newgame.last_update[0]["defender"] != "":
punc = ". "
punc = ". "
updatestring = f"{newgame.last_update[0]['batter']} {newgame.last_update[0]['text'].value} {newgame.last_update[0]['defender']}{punc}"
if newgame.last_update[1] > 0:
@ -450,7 +451,7 @@ async def watch_game(channel, game):
basemessage += str(occupied_base) + "\n"
else:
basemessage += str(empty_base) + "\n"
basemessage_b = ""
if newgame.bases[3] is not None:
basemessage += str(occupied_base)
@ -465,11 +466,11 @@ async def watch_game(channel, game):
new_embed.add_field(name="Bases:", value=basemessage, inline = False)
await embed.edit(content=None, embed=new_embed)
await embed.edit(content=None, embed=new_embed)
top_of_inning = newgame.top_of_inning
if pause <= 1:
newgame.gamestate_update_full()
pause -= 1
await asyncio.sleep(6)
@ -495,12 +496,12 @@ async def watch_game(channel, game):
final_embed.add_field(name="Final score:", value=scorestring)
await embed.edit(content=None, embed=final_embed)
await embed.unpin()
gamesarray.pop(gamesarray.index((newgame,use_emoji_names))) #cleanup is important!
newgame.add_stats()
del newgame
def build_team_embed(team):
embed = discord.Embed(color=discord.Color.purple(), title=team.name)
lineup_string = ""
@ -518,15 +519,13 @@ def build_star_embed(player_json):
for key in starkeys.keys():
embedstring = ""
starstring = str(player_json[key])
if ".5" in starstring:
starnum = int(starstring[0])
addhalf = True
else:
starnum = int(player_json[key])
addhalf = False
starnum = int(starstring[0])
addhalf = ".5" in starstring
embedstring += "" * starnum
if addhalf:
embedstring += ""
elif starnum == 0: # why check addhalf twice, amirite
embedstring += "⚪️"
embed.add_field(name=starkeys[key], value=embedstring, inline=False)
return embed