Add set-keepers command, update draft cog for new api

This commit is contained in:
Cal Corum 2023-07-17 23:31:40 -05:00
parent 6ed2f43421
commit 3ea1b0cf5e
3 changed files with 292 additions and 113 deletions

View File

@ -1,10 +1,12 @@
import copy
from helpers import *
from db_calls import *
from db_calls import db_get, db_post, patch_player, get_player_by_name
import csv
import math
import pygsheets
from typing import Optional
from discord.ext import commands, tasks
from discord import app_commands
@ -14,9 +16,6 @@ class Admins(commands.Cog):
def __init__(self, bot):
self.bot = bot
# async def cog_command_error(self, ctx, error):
# await ctx.send(f'{error}')
@commands.command(name='current', help='Current db info')
@commands.is_owner()
async def current_command(self, ctx):
@ -74,17 +73,58 @@ class Admins(commands.Cog):
@commands.command(name='test', hidden=True)
@commands.is_owner()
async def test_command(self, ctx):
# week_num = f'Week {current["week"]}'
# stars = f'{"":*<32}'
# freeze_message = f'```\n' \
# f'{stars}\n'\
# f'{week_num: >9} Freeze Period Begins\n' \
# f'{stars}\n```'
#
# await send_to_channel(self.bot, 'general', freeze_message)
# errors = []
# with open('storage/s89-injuries.csv') as csv_file:
# csv_reader = csv.reader(csv_file, delimiter=';')
# for row in csv_reader:
# strat_code = row[0]
# inj_rating = row[1]
# logging.info(f'strat_code: {strat_code} / inj_rating: {inj_rating}')
# p_query = await db_get('players', params=[
# ('season', 8), ('strat_code', strat_code)
# ])
# if p_query['count'] == 0:
# logging.error(f'Could not find strat_code {strat_code}')
# errors.append(f'**{strat_code}** - {inj_rating} not found')
# else:
# player = p_query['players'][0]
# player['injury_rating'] = inj_rating
# logging.info(f'patching {player["name"]} ({player["strat_code"]}) with injury {inj_rating}')
# await patch_player(player)
lost = []
p_query = await db_get('players', params=[('season', 7)])
for player in p_query['players']:
if player['team']['abbrev'] != 'FA':
pl_query = await db_get('players', params=[('season', 8), ('name', player['name'])])
if pl_query['count'] > 0:
old_team = player['team']
if old_team['abbrev'][-3:] == 'MiL':
t_query = await db_get('teams', params=[
('season', 8), ('team_abbrev', old_team['abbrev'][:-3])
])
elif old_team['abbrev'][-2:] == 'IL':
t_query = await db_get('teams', params=[
('season', 8), ('team_abbrev', old_team['abbrev'][:-2])
])
else:
t_query = await db_get('teams', params=[
('season', 8), ('team_abbrev', old_team['abbrev'])
])
new_player = copy.deepcopy(pl_query['players'][0])
new_player['team'] = t_query['teams'][0]
logging.info(f'Placing {new_player["name"]} on {new_player["team"]["sname"]}')
await patch_player(new_player)
else:
logging.info(f'No season 8 version of {player["name"]} was found')
lost.append(f'- {player["name"]} from {player["team"]["abbrev"]}\n')
await ctx.send(f'All done!')
if len(lost) > 0:
l_string = "".join(lost)
await ctx.send(f'Here are the lost players:\n\n{l_string}')
current = await db_get('current')
await ctx.send(f'Current: {current}')
# @commands.command(name='sendmoves', help='Send moves to sheets')
# @commands.is_owner()
@ -180,6 +220,37 @@ class Admins(commands.Cog):
await patch_player(player)
await ctx.send(random_conf_gif())
@app_commands.command(name='set-keepers', description='Post final keepers')
@app_commands.guilds(discord.Object(id=os.environ.get('GUILD_ID')))
@app_commands.checks.has_any_role('Da Commish')
async def keeper_slash(
self, interaction: discord.Interaction, team_abbrev: str, keeper_1_name: str,
keeper_2_name: Optional[str] = None, keeper_3_name: Optional[str] = None,
keeper_4_name: Optional[str] = None, keeper_5_name: Optional[str] = None,
keeper_6_name: Optional[str] = None, keeper_7_name: Optional[str] = None):
await interaction.response.defer()
current = await db_get('current')
this_team = await get_team_by_abbrev(team_abbrev, current['season'])
if this_team is None:
await interaction.edit_original_response(content=f'Team {team_abbrev} not found')
k_list = []
for x in [keeper_1_name, keeper_2_name, keeper_3_name, keeper_4_name, keeper_5_name, keeper_6_name,
keeper_7_name]:
if x is not None:
this_player = await get_player_by_name(current['season'], x)
k_list.append({
'season': current['season'],
'team_id': this_team['id'],
'player_id': this_player['id']
})
resp = await db_post('keepers', payload={
'count': len(k_list),
'keepers': k_list
})
await interaction.edit_original_response(content=resp)
async def setup(bot):
await bot.add_cog(Admins(bot))

View File

@ -2,7 +2,7 @@ import math
import re
from helpers import *
from db_calls import *
from db_calls import db_get, db_patch, patch_draftpick, patch_player, db_post, get_player_by_name
from discord.ext import commands, tasks
from discord import TextChannel, app_commands
@ -15,12 +15,6 @@ class Draft(commands.Cog):
self.draft_loop.start()
async def cog_command_error(self, ctx, error):
await ctx.send(f'{error}\n\nRun !help <command_name> to see the command requirements')
async def slash_error(self, ctx, error):
await ctx.send(f'{error}')
@tasks.loop(seconds=10)
async def draft_loop(self):
# guild = self.bot.get_guild(int(os.environ.get('GUILD_ID')))
@ -28,7 +22,7 @@ class Draft(commands.Cog):
# logging.error('Bot not logged in - delaying draft loop')
# return
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
now = datetime.datetime.now()
# logging.info('Entering draft loop')
try:
@ -42,14 +36,24 @@ class Draft(commands.Cog):
# Timer is active and pick is due
if draft_data['timer'] and deadline:
current = await db_get('current')
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
draft_pick = p_query['picks'][0]
team_role = get_team_role(None, draft_pick['owner'], self.bot)
if deadline <= now:
# Auto-draft
team_list = await get_draft_list(draft_pick['owner'])
if len(team_list) > 0:
for x in team_list.values():
# team_list = await get_draft_list(draft_pick['owner'])
l_query = await db_get('draftlist', params=[
('season', current['season']), ('team_id', draft_pick['owner']['id'])
])
if l_query['count'] > 0:
for x in l_query['picks']:
this_pick = await self.draft_player(current, draft_data, draft_pick, x['player'])
if this_pick['success']:
break
@ -134,15 +138,22 @@ class Draft(commands.Cog):
async def update_timer(self, draft_data):
deadline = datetime.datetime.now() + datetime.timedelta(minutes=draft_data['pick_minutes'])
await patch_draftdata(pick_deadline=deadline)
# await patch_draftdata(pick_deadline=deadline)
await db_patch('draftdata', object_id=draft_data['id'], params=[('pick_deadline', deadline)])
async def send_draft_ping(self, ping=True):
current = await db_get('current')
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
logging.info(f'current: {current}\nd_data: {draft_data}')
this_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
# this_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
this_pick = p_query['picks'][0]
logging.info(f'pick: {this_pick}')
this_team = await get_one_team(this_pick['owner']['id'])
this_team = await db_get('teams', object_id=this_pick['owner']['id'])
logging.info(f'team: {this_team}')
team_role = get_team_role(None, this_team, self.bot)
logging.info(f'role: {team_role}')
@ -159,20 +170,27 @@ class Draft(commands.Cog):
embed = get_team_embed(f'{this_team["lname"]} On The Clock', team=this_team)
embed.description = f'Round {this_pick["round"]} / Pick {pick_num} / Overall {this_pick["overall"]}'
players = await get_players(current['season'], team_abbrev=this_team['abbrev'], sort='wara-desc')
if players:
# players = await get_players(current['season'], team_abbrev=this_team['abbrev'], sort='wara-desc')
p_query = await db_get('players', params=[
('season', current['season']), ('team_abbrev', this_team['abbrev']), ('sort', 'cost-desc')
])
if p_query['count'] > 0:
count = 0
core_players_string = ''
for x in players:
for x in p_query['players']:
if count < 5:
core_players_string += f'{players[x]["pos_1"]} {players[x]["name"]} ({players[x]["wara"]})\n'
core_players_string += f'{x["pos_1"]} {x["name"]} ({x["wara"]})\n'
else:
break
count += 1
embed.add_field(name='Core Players', value=core_players_string)
roster = await get_team_roster(this_team, 'current')
embed.add_field(name=f'{this_team["sname"]} sWAR', value=f'{roster["active"]["WARa"]:.2f}')
# roster = await get_team_roster(this_team, 'current')
r_query = await db_get(f'teams/{this_team["id"]}/roster/current')
if 'active' in r_query:
embed.add_field(name=f'{this_team["sname"]} sWAR', value=f'{r_query["active"]["WARa"]:.2f}')
embed.add_field(
name=f'{this_team["abbrev"]} Roster Page',
@ -188,15 +206,18 @@ class Draft(commands.Cog):
)
# Last 5 Loop
all_picks = await get_draftpicks(
current['season'], overall_start=this_pick['overall'] - 15, overall_end=this_pick['overall'] - 1
)
last_five = dict(sorted(all_picks.items(), key=lambda item: item[1]["overall"], reverse=True))
# all_picks = await get_draftpicks(
# current['season'], overall_start=this_pick['overall'] - 15, overall_end=this_pick['overall'] - 1
# )
# last_five = dict(sorted(all_picks.items(), key=lambda item: item[1]["overall"], reverse=True))
l_query = await db_get('draftpicks', params=[
('season', current['season']), ('sort', 'order-desc'), ('limit', 5)
])
last_string = ''
count = 0
for x in last_five:
if last_five[x]['player']:
last_string += f'Pick #{last_five[x]["overall"]}: {last_five[x]["player"]["name"]}\n'
for x in l_query['picks']:
if x['player'] is not None:
last_string += f'Pick #{x["overall"]}: {x["player"]["name"]}\n'
count += 1
if count >= 5:
break
@ -205,15 +226,18 @@ class Draft(commands.Cog):
embed.add_field(name='Last 5', value=last_string)
# Next 5 Loop
all_picks = await get_draftpicks(
current['season'], overall_start=this_pick['overall'] + 1, overall_end=this_pick['overall'] + 15
)
next_five = dict(sorted(all_picks.items(), key=lambda item: item[1]["overall"]))
# all_picks = await get_draftpicks(
# current['season'], overall_start=this_pick['overall'] + 1, overall_end=this_pick['overall'] + 15
# )
# next_five = dict(sorted(all_picks.items(), key=lambda item: item[1]["overall"]))
n_query = await db_get('draftpicks', params=[
('season', current['season']), ('sort', 'order-asc'), ('limit', 5)
])
next_string = ''
count = 0
for x in next_five:
if not next_five[x]['player']:
next_string += f'Pick #{next_five[x]["overall"]}: {next_five[x]["owner"]["sname"]}\n'
for x in n_query['picks']:
if x['player'] is not None:
next_string += f'Pick #{x["overall"]}: {x["owner"]["sname"]}\n'
count += 1
if count >= 5:
break
@ -234,8 +258,14 @@ class Draft(commands.Cog):
async def advance_pick(self):
current = await db_get('current')
draft_data = await get_draftdata()
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
draft_data = await db_get('draftdata')
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
draft_pick = p_query['picks'][0]
if not draft_pick['player']:
await send_to_channel(
@ -244,30 +274,42 @@ class Draft(commands.Cog):
f'It\'s time to to ***SKIP***. Can I get an F in chat?'
)
self.warnings = 0
await patch_draftdata(currentpick=draft_data['currentpick'] + 1)
# await patch_draftdata(currentpick=draft_data['currentpick'] + 1)
await db_patch('draftdata', object_id=draft_data['id'], params=[('currentpick', draft_data['currentpick'] + 1)])
# Advance the current pick until a selection is possible
while True:
draft_data = await get_draftdata()
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
draft_data = await db_get('draftdata')
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
draft_pick = p_query['picks'][0]
# Check that selection has been made for current pick, advance if so
if not draft_pick:
await send_to_channel(self.bot, draft_data['ping_channel'], 'Looks like that is the end of the draft!')
await patch_draftdata(timer=False)
# await patch_draftdata(timer=False)
await db_patch('draftdata', object_id=draft_data['id'], params=[('timer', False)])
return
elif draft_pick['player']:
await patch_draftdata(currentpick=draft_data['currentpick'] + 1)
# await patch_draftdata(currentpick=draft_data['currentpick'] + 1)
await db_patch('draftdata', object_id=draft_data['id'], params=[
('currentpick', draft_data['currentpick'] + 1)
])
else:
break
# If timer is true, set new deadline
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
if draft_data['timer']:
await self.update_timer(draft_data)
else:
deadline = datetime.datetime.now() + datetime.timedelta(days=690)
await patch_draftdata(pick_deadline=deadline)
# await patch_draftdata(pick_deadline=deadline)
await db_patch('draftdata', object_id=draft_data['id'], params=[('pick_deadline', deadline)])
# Post splash screen to ping_channel
await self.send_draft_ping()
@ -300,7 +342,8 @@ class Draft(commands.Cog):
f'{player["name"]} for free? No? Sorry, I tried.'
}
team_roster = await get_team_roster(draft_pick['owner'], 'current')
# team_roster = await get_team_roster(draft_pick['owner'], 'current')
team_roster = await db_get(f'teams/{draft_pick["owner"]["id"]}/roster/current')
# Does this team have the cap space to afford this player?
max_zeroes = 32 - len(team_roster['active']['players'])
@ -334,20 +377,35 @@ class Draft(commands.Cog):
logging.info(
f'{draft_pick["owner"]["lname"]} selects {player["name"]} with the #{draft_pick["overall"]} overall pick'
)
await patch_draftpick(draft_pick['id'], player_id=player['id'])
await patch_player(player['id'], team_id=draft_pick['owner']['id'], demotion_week=2)
await post_transactions([{
'week': -1,
# await patch_draftpick(draft_pick['id'], player_id=player['id'])
draft_pick['player'] = player
await patch_draftpick(draft_pick)
player['team'] = draft_pick['owner']
player['demotion_week'] = 2
# await patch_player(player['id'], team_id=draft_pick['owner']['id'], demotion_week=2)
await patch_player(player)
# await post_transactions([{
# 'week': -1,
# 'player_id': player['id'],
# 'oldteam_id': 201, # FA team ID
# 'newteam_id': draft_pick['owner']['id'],
# 'season': current['season'],
# 'moveid': f'draft-overall-{draft_pick["overall"]}'
# }])
await db_post('transactions', payload={'count': 1, 'moves': [{
'week': 0,
'player_id': player['id'],
'oldteam_id': 201, # FA team ID
'newteam_id': draft_pick['owner']['id'],
'season': current['season'],
'moveid': f'draft-overall-{draft_pick["overall"]}'
}])
}]})
await send_to_channel(
self.bot,
draft_data['ping_channel'],
embed=await get_player_embed(await get_one_player(player['id']), current)
embed=await get_player_embed(player, current)
)
if player['image2']:
embed = get_team_embed(f'{player["name"]}', player["team"], thumbnail=False)
@ -374,7 +432,13 @@ class Draft(commands.Cog):
async def draftdata_to_string(self, current, draft_data):
try:
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
draft_pick = p_query['picks'][0]
except Exception as e:
logging.error(f'draft cog - Could not get current draft pick: {e}')
draft_pick = None
@ -402,7 +466,7 @@ class Draft(commands.Cog):
# @commands.is_owner()
# async def advance_draft_command(self, ctx):
# current = await db_get('current')
# draft_data = await get_draftdata()
# draft_data = await db_get('draftdata')
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
#
# if draft_pick['player']:
@ -428,29 +492,46 @@ class Draft(commands.Cog):
await ctx.send('I don\'t know youuuuuuuuu')
return
draft_data = await get_draftdata()
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
draft_data = await db_get('draftdata')
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', draft_data['currentpick'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{draft_data["currentpick"]}')
draft_pick = p_query['picks'][0]
alt_pick_flag = False
# Does the current pick belong to this team?
if draft_pick['owner'] != team:
alt_pick_flag = True
# Does this team have any skipped picks?
raw_picks = await get_draftpicks(
current['season'], owner_team=team, round_end=math.ceil(draft_pick['overall'] / 16), round_start=1
)
team_picks = dict(sorted(raw_picks.items(), key=lambda item: item[1]["overall"]))
new_pick = None
# raw_picks = await get_draftpicks(
# current['season'], owner_team=team, round_end=math.ceil(draft_pick['overall'] / 16), round_start=1
# )
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('owner_team_id', team['id']), ('round_start', 1),
('round_end', math.ceil(draft_pick['overall'] / 16)), ('sort', 'overall-asc')
]) # TODO: finish updating this query for raw_picks
if p_query['count'] == 0:
raise ValueError(f'Draft picks for {team["abbrev"]} not found')
for x in team_picks:
if not team_picks[x]["player"] and team_picks[x]['overall'] < draft_pick['overall']:
new_pick = await get_one_draftpick_byoverall(current['season'], team_picks[x]['overall'])
new_pick = None
for x in p_query['picks']:
if not x["player"] and x['overall'] < draft_pick['overall']:
# new_pick = await get_one_draftpick_byoverall(current['season'], team_picks[x]['overall'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', x['overall'])
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{x["overall"]}')
new_pick = p_query['picks'][0]
break
if new_pick:
draft_pick = new_pick
else:
mil_team = await get_one_team(f'{team["abbrev"]}MiL')
mil_team = await get_team_by_abbrev(f'{team["abbrev"]}MiL', current['season'])
if mil_team == draft_pick['owner']:
team = mil_team
elif ctx.author.id == self.bot.owner_id and cal_can_pick_for_all:
@ -463,7 +544,7 @@ class Draft(commands.Cog):
player_cog = self.bot.get_cog('Players')
player_name = await fuzzy_player_search(ctx, ctx.channel, self.bot, name, player_cog.player_list.keys())
player = await get_one_player(player_name)
player = await get_player_by_name(current['season'], player_name)
the_pick = await self.draft_player(current, draft_data, draft_pick, player)
if the_pick['success']:
@ -483,10 +564,13 @@ class Draft(commands.Cog):
return
if not player_list:
team_list = await get_draft_list(team)
if len(team_list) > 0:
# team_list = await get_draft_list(team)
l_query = await db_get('draftlist', params=[
('season', current['season']), ('team_id', team['id'])
])
if l_query['count'] > 0:
list_string = 'Current list:\n'
for x in team_list.values():
for x in l_query['picks']:
list_string += f'{x["rank"]}. {x["player"]["name"]}\n'
await ctx.send(list_string)
else:
@ -506,7 +590,7 @@ class Draft(commands.Cog):
player_cog = self.bot.get_cog('Players')
try:
player_name = await fuzzy_player_search(ctx, ctx.channel, self.bot, x, player_cog.player_list.keys())
player = await get_one_player(player_name)
player = await get_player_by_name(current['season'], player_name)
except Exception as e:
logging.error(f'Could not draft {x} for {team["abbrev"]}: {e}')
errors.append(x)
@ -533,13 +617,14 @@ class Draft(commands.Cog):
error_string += ', '.join(spelling)
await react_and_reply(ctx, '', error_string)
await post_draft_list(draft_list)
# await post_draft_list(draft_list)
await db_post('draftlist', payload={'count': len(draft_list), 'draft_list': draft_list})
await ctx.message.add_reaction('')
@commands.command(name='whomst', aliases=['draftstatus'], help='Get draft status')
async def draft_status_command(self, ctx):
current = await db_get('current')
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
await ctx.send(await self.draftdata_to_string(current, draft_data))
if draft_data["ping_channel"]:
@ -565,27 +650,32 @@ class Draft(commands.Cog):
timer_this_pick: int = None, timer_active: bool = None, wipe_pick: int = None):
await interaction.response.defer()
current = await db_get('current')
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
pick_deadline = None
res_channel_id = None
ping_channel_id = None
if wipe_pick is not None:
this_pick = await get_one_draftpick_byoverall(current['season'], overall=wipe_pick)
# this_pick = await get_one_draftpick_byoverall(current['season'], overall=wipe_pick)
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', wipe_pick)
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{wipe_pick}')
this_pick = p_query['picks'][0]
if not this_pick['player']:
await interaction.edit_original_response(content=f'I don\'t see a player taken {wipe_pick} overall.')
else:
fa_team = await get_one_team('FA')
await patch_draftpick(
pick_id=this_pick['id'],
player_id=False
)
await patch_player(
pid=this_pick['player']['id'],
team_id=fa_team['id']
)
this_player = await get_one_player(this_pick['player']['id'])
fa_team = await get_team_by_abbrev('FA', current['season'])
this_pick['player'] = None
await patch_draftpick(this_pick)
this_pick['player']['team'] = fa_team
this_player = await patch_player(this_pick['player'])
# this_player = await get_player_by_name(current['season'], this_pick['player']['id'])
# this_player = await db_get('players', object_id=this_pick['player']['id'])
await interaction.edit_original_response(
content='Don\'t forget to delete the transaction from the database.',
embed=await get_player_embed(this_player, current)
@ -609,21 +699,32 @@ class Draft(commands.Cog):
if current_overall is not None and draft_data['timer'] and timer_active is None:
pick_deadline = datetime.datetime.now() + datetime.timedelta(minutes=draft_data['pick_minutes'])
await patch_draftdata(
currentpick=current_overall,
timer=timer_active,
pick_deadline=pick_deadline,
result_channel=res_channel_id,
ping_channel=ping_channel_id,
pick_minutes=timer_master
)
# await patch_draftdata(
# currentpick=current_overall,
# timer=timer_active,
# pick_deadline=pick_deadline,
# result_channel=res_channel_id,
# ping_channel=ping_channel_id,
# pick_minutes=timer_master
# )
await db_patch('draftdata', object_id=draft_data['id'], params=[
('currentpick', current_overall), ('timer', timer_active), ('pick_deadline', pick_deadline),
('result_channel', res_channel_id), ('ping_channel', ping_channel_id), ('pick_minutes', timer_master)
])
draft_data = await get_draftdata()
draft_data = await db_get('draftdata')
await interaction.edit_original_response(content=await self.draftdata_to_string(current, draft_data))
if timer_active is True or draft_data['timer']:
self.warnings = 0
draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
# draft_pick = await get_one_draftpick_byoverall(current['season'], draft_data['currentpick'])
p_query = await db_get('draftpicks', params=[
('season', current['season']), ('overall', wipe_pick)
])
if p_query['count'] == 0:
raise ValueError(f'No pick found for overall #{wipe_pick}')
draft_pick = p_query['picks'][0]
if draft_pick['player']:
await self.advance_pick()
else:
@ -646,7 +747,7 @@ class Draft(commands.Cog):
# await ctx.send(f'I cannot find **{channel_mention[0]}** - is that spelled correctly?')
# return
#
# draft_data = await get_draftdata()
# draft_data = await db_get('draftdata')
# current_channel = discord.utils.get(ctx.guild.text_channels, id=draft_data["result_channel"])
# prompt = f'The result channel is currently **{current_channel}** - would you like to set it to ' \
# f'**{this_channel.mention}**?'
@ -672,7 +773,7 @@ class Draft(commands.Cog):
# await ctx.send(f'I cannot find **{channel_mention[0]}** - is that spelled correctly?')
# return
#
# draft_data = await get_draftdata()
# draft_data = await db_get('draftdata')
# current_channel = discord.utils.get(ctx.guild.text_channels, id=draft_data["ping_channel"])
# prompt = f'The result channel is currently **{current_channel}** - would you like to set it to ' \
# f'**{this_channel.mention}**?'
@ -690,7 +791,7 @@ class Draft(commands.Cog):
# @draft_set_group.command(name='overall', help='Set current pick')
# @commands.is_owner()
# async def draft_set_overall_command(self, ctx, overall_num: int):
# draft_data = await get_draftdata()
# draft_data = await db_get('draftdata')
# prompt = f'The current pick is #**{draft_data["currentpick"]}** - would you like to set it to ' \
# f'#**{overall_num}**?'
#
@ -707,7 +808,7 @@ class Draft(commands.Cog):
# @draft_set_group.command(name='minutes', help='Set minutes per pick')
# @commands.is_owner()
# async def draft_set_minutes_command(self, ctx, minutes: int):
# draft_data = await get_draftdata()
# draft_data = await db_get('draftdata')
# prompt = f'The current pick time is **{draft_data["pick_minutes"]}** minutes - would you like to set it to ' \
# f'**{minutes}**?'
#

View File

@ -43,7 +43,7 @@ async def db_get(endpoint: str, api_ver: int = 3, object_id: int = None, params:
retries = 0
while True:
try:
resp = requests.get(req_url, timeout=timeout)
resp = requests.get(req_url, headers=AUTH_TOKEN, timeout=timeout)
break
except requests.ReadTimeout as e:
logging.error(f'Get Timeout: {req_url} / retries: {retries} / timeout: {timeout}')
@ -197,6 +197,13 @@ async def patch_player(this_player: dict):
return await db_patch('players', object_id=this_player['id'], params=[], payload=this_player)
async def patch_draftpick(this_pick: dict):
this_pick['player_id'] = None if this_pick['player'] is None else this_pick['player']['id']
this_pick['origowner_id'] = None if this_pick['origowner'] is None else this_pick['origowner']['id']
this_pick['owner_id'] = None if this_pick['owner'] is None else this_pick['owner']['id']
return await db_patch('draftpicks', object_id=this_pick['id'], params=[], payload=this_pick)
async def get_player_photo(player_name):
req_url = f'https://www.thesportsdb.com/api/v1/json/1/searchplayers.php?p={player_name}'