diff --git a/.gitignore b/.gitignore
index 473c2b0..ce115fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -358,3 +358,4 @@ env
/data/leagues
/simmadome/build
/simmadome/.eslintcache
+/matteo_env/Lib/site-packages
diff --git a/real_players.py b/real_players.py
new file mode 100644
index 0000000..c118231
--- /dev/null
+++ b/real_players.py
@@ -0,0 +1,24 @@
+from lxml import html
+import requests, json
+import onomancer as ono
+
+
+def random_real_player():
+ name = []
+ while name == []:
+ page = requests.get("http://www.baseball-reference.com/rand.fcgi")
+ tree = html.fromstring(page.content)
+ name = tree.xpath("//h1[@itemprop='name']/span/text()")
+ if len(name) > 0 and len(name[0]) == 4:
+ name = [] #gets rid of years
+ name = name[0]
+ return name
+
+def get_real_players(num):
+ names = []
+ for i in range(0, num):
+ names.append(random_real_player())
+ players = {}
+ for name in names:
+ players[name] = json.loads(ono.get_stats(name))
+ return players
\ No newline at end of file
diff --git a/the-prestige.pyproj b/the-prestige.pyproj
index e9f0b7a..ce3561e 100644
--- a/the-prestige.pyproj
+++ b/the-prestige.pyproj
@@ -46,6 +46,9 @@
Code
+
+ Code
+
diff --git a/the_draft.py b/the_draft.py
index 15504c9..13771d2 100644
--- a/the_draft.py
+++ b/the_draft.py
@@ -2,7 +2,7 @@ from collections import namedtuple
import games
import json
import uuid
-
+import real_players
import onomancer
Participant = namedtuple('Participant', ['handle', 'team'])
@@ -16,19 +16,22 @@ class Draft:
"""
@classmethod
- def make_draft(cls, teamsize, draftsize, minsize, pitchers):
- draft = cls(teamsize, draftsize, minsize, pitchers)
+ def make_draft(cls, teamsize, draftsize, minsize, pitchers, ono_ratio):
+ draft = cls(teamsize, draftsize, minsize, pitchers, ono_ratio)
return draft
- def __init__(self, teamsize, draftsize, minsize, pitchers):
- self.DRAFT_SIZE = draftsize
+ def __init__(self, teamsize, draftsize, minsize, pitchers, ono_ratio):
+ self.DRAFT_SIZE = int(draftsize * ono_ratio)
+ self.REAL_SIZE = draftsize - self.DRAFT_SIZE
self.REFRESH_DRAFT_SIZE = minsize # fewer players remaining than this and the list refreshes
self.DRAFT_ROUNDS = teamsize
self.pitchers = pitchers
self._id = str(uuid.uuid4())[:6]
self._participants = []
self._active_participant = BOOKMARK # draft mutex
- self._players = onomancer.get_names(limit=self.DRAFT_SIZE)
+ nameslist = onomancer.get_names(limit=self.DRAFT_SIZE)
+ nameslist.update(real_players.get_real_players(self.REAL_SIZE))
+ self._players = nameslist
self._round = 0
@property
@@ -68,7 +71,9 @@ class Draft:
self.advance_draft()
def refresh_players(self):
- self._players = onomancer.get_names(limit=self.DRAFT_SIZE)
+ nameslist = onomancer.get_names(limit=self.DRAFT_SIZE)
+ nameslist.update(real_players.get_real_players(self.REAL_SIZE))
+ self._players = nameslist
def advance_draft(self):
"""
diff --git a/the_prestige.py b/the_prestige.py
index 9728df8..1db0192 100644
--- a/the_prestige.py
+++ b/the_prestige.py
@@ -1,4 +1,4 @@
-import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime, gametext
+import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime, gametext, real_players
import database as db
import onomancer as ono
from league_storage import league_exists, season_save, season_restart
@@ -646,10 +646,12 @@ class StartDraftCommand(Command):
draftsize = 20
minsize = 4
pitchers = 3
+ ono_ratio = 0.5
+ timeout = 120
for flag in flags:
try:
- if flag[0] == "t":
+ if flag[0] == "t":
teamsize = int(flag[1])
elif flag[0] == "d":
draftsize = int(flag[1])
@@ -657,10 +659,16 @@ class StartDraftCommand(Command):
minsize = int(flag[1])
elif flag[0] == "p":
pitchers = int(flag[1])
+ elif flag[0] == "c":
+ ono_ratio = float(flag[1])
+ if ono_ratio > 1 or ono_ratio < 0:
+ raise CommandError("The Chaos value needs to be between 0 and 1, chief. Probability has rules.")
+ elif flag[0] == "w": #wait
+ timeout = int(flag[1])
else:
raise CommandError(f"We don't recognize that {flag[0]} flag.")
except ValueError:
- raise CommandError(f"Your {flag[0]} flag isn't a valid integer, boss.")
+ raise CommandError(f"Your {flag[0]} flag isn't a valid nummber, boss.")
if teamsize-pitchers > 20 or pitchers > 8:
raise CommandError("You can't fit that many players on a team, chief. Slow your roll.")
@@ -669,7 +677,13 @@ class StartDraftCommand(Command):
if draftsize > 40:
raise CommandError("40 players is the max. We're not too confident about pushing for more.")
- draft = Draft.make_draft(teamsize, draftsize, minsize, pitchers)
+ await msg.channel.send("Got it, boss. Give me a sec to find all the paperwork.")
+
+ try:
+ draft = Draft.make_draft(teamsize, draftsize, minsize, pitchers, ono_ratio)
+ except ConnectionError:
+ await msg.channel.send("Baseball Reference isn't playing nice. Could you try again for us in a minute or so?")
+
mentions = {f'<@!{m.id}>' for m in msg.mentions}
content = msg.content.split('\n')[1:] # drop command out of message
if not content or len(content) % 3:
@@ -683,7 +697,7 @@ class StartDraftCommand(Command):
handle = mention
break
else:
- await msg.channel.send(f"I don't recognize {handle_token}")
+ await msg.channel.send(f"I don't recognize {handle_token}.")
return
team_name = content[i + 1].strip()
if games.get_team(team_name):
@@ -727,7 +741,7 @@ class StartDraftCommand(Command):
embed=build_draft_embed(draft.get_draftees(), footer=footer),
)
try:
- draft_message = await self.wait_draft(msg.channel, draft)
+ draft_message = await self.wait_draft(msg.channel, draft, timeout)
draft.draft_player(f'<@!{draft_message.author.id}>', draft_message.content.split(' ', 1)[1])
except SlowDraftError:
player = random.choice(draft.get_draftees())
@@ -777,7 +791,7 @@ class StartDraftCommand(Command):
return False
return False
- async def wait_draft(self, channel, draft):
+ async def wait_draft(self, channel, draft, timeout):
def check(m):
if m.channel != channel:
@@ -790,9 +804,9 @@ class StartDraftCommand(Command):
return False
try:
- draft_message = await client.wait_for('message', timeout=120.0, check=check)
+ draft_message = await client.wait_for('message', timeout=timeout, check=check)
except asyncio.TimeoutError:
- raise SlowDraftError('Too slow')
+ raise SlowDraftError('Too slow, boss.')
return draft_message