""" 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