104 lines
2.9 KiB
Python
104 lines
2.9 KiB
Python
"""
|
|
General Utilities
|
|
|
|
This module contains standalone utility functions with minimal dependencies,
|
|
including timestamp conversion, position abbreviations, and simple helpers.
|
|
"""
|
|
import datetime
|
|
import discord
|
|
|
|
|
|
def int_timestamp():
|
|
"""Convert current datetime to integer timestamp."""
|
|
return int(datetime.datetime.now().timestamp())
|
|
|
|
|
|
def get_pos_abbrev(field_pos: str) -> str:
|
|
"""Convert position name to standard abbreviation."""
|
|
if field_pos.lower() == 'catcher':
|
|
return 'C'
|
|
elif field_pos.lower() == 'first baseman':
|
|
return '1B'
|
|
elif field_pos.lower() == 'second baseman':
|
|
return '2B'
|
|
elif field_pos.lower() == 'third baseman':
|
|
return '3B'
|
|
elif field_pos.lower() == 'shortstop':
|
|
return 'SS'
|
|
elif field_pos.lower() == 'left fielder':
|
|
return 'LF'
|
|
elif field_pos.lower() == 'center fielder':
|
|
return 'CF'
|
|
elif field_pos.lower() == 'right fielder':
|
|
return 'RF'
|
|
else:
|
|
return 'P'
|
|
|
|
|
|
def position_name_to_abbrev(position_name):
|
|
"""Convert position name to abbreviation (alternate format)."""
|
|
if position_name == 'Catcher':
|
|
return 'C'
|
|
elif position_name == 'First Base':
|
|
return '1B'
|
|
elif position_name == 'Second Base':
|
|
return '2B'
|
|
elif position_name == 'Third Base':
|
|
return '3B'
|
|
elif position_name == 'Shortstop':
|
|
return 'SS'
|
|
elif position_name == 'Left Field':
|
|
return 'LF'
|
|
elif position_name == 'Center Field':
|
|
return 'CF'
|
|
elif position_name == 'Right Field':
|
|
return 'RF'
|
|
elif position_name == 'Pitcher':
|
|
return 'P'
|
|
else:
|
|
return position_name
|
|
|
|
|
|
def user_has_role(user: discord.User | discord.Member, role_name: str) -> bool:
|
|
"""Check if a Discord user has a specific role."""
|
|
for x in user.roles:
|
|
if x.name == role_name:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def get_roster_sheet_legacy(team):
|
|
"""Get legacy roster sheet URL for a team."""
|
|
return f'https://docs.google.com/spreadsheets/d/{team.gsheet}/edit'
|
|
|
|
|
|
def get_roster_sheet(team):
|
|
"""Get roster sheet URL for a team."""
|
|
return f'https://docs.google.com/spreadsheets/d/{team["gsheet"]}/edit'
|
|
|
|
|
|
def get_player_url(team, player) -> str:
|
|
"""Generate player URL for SBA or Baseball Reference."""
|
|
if team.get('league') == 'SBA':
|
|
return f'https://statsplus.net/super-baseball-association/player/{player["player_id"]}'
|
|
else:
|
|
return f'https://www.baseball-reference.com/players/{player["bbref_id"][0]}/{player["bbref_id"]}.shtml'
|
|
|
|
|
|
def owner_only(ctx) -> bool:
|
|
"""Check if user is the bot owner."""
|
|
# ID for discord User Cal
|
|
owners = [287463767924137994, 1087936030899347516]
|
|
|
|
if ctx.author.id in owners:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def get_cal_user(ctx):
|
|
"""Get the Cal user from context."""
|
|
for user in ctx.bot.get_all_members():
|
|
if user.id == 287463767924137994:
|
|
return user |