from dotenv import load_dotenv import os import logging # Load environment variables load_dotenv() BOT_TOKEN = os.getenv("BOT_TOKEN") BOT_NAME = os.getenv("BOT_NAME") ADMIN_IDS = list(map(int, os.getenv("ADMIN_IDS", "1").split(','))) # Comma-separated list of admin IDs CHANNELS_IDS = list(os.getenv("CHANNEL_IDS", "1/test").split(',')) # Comma-separated channel IDs # Create a dictionary { 'channel_alias': 'channel_id' } CHANNELS = {channel.split('/')[1]: channel.split('/')[0] for channel in CHANNELS_IDS} ANNOUNCE_CHANNEL_IDS = list(os.getenv("ANNOUNCE_CHANNEL_IDS", "").split(',')) # Comma-separated announce channel IDs ANNOUNCE_CHANNELS = {channel.split('/')[1]: channel.split('/')[0] for channel in ANNOUNCE_CHANNEL_IDS if '/' in channel} # Create a reverse dictionary { 'channel_id': 'channel_alias' } for display/lookup REVERSE_CHANNELS = {v: k for k, v in CHANNELS.items()} DATABASE_PATH = "/app/data/raffles.db" PAYPAL_EMAIL = os.getenv("PAYPAL_EMAIL") PAYPAL_CLIENT_ID = os.getenv("PAYPAL_CLIENT_ID") PAYPAL_SECRET = os.getenv("PAYPAL_SECRET") PAYPAL_HANDLE = os.getenv("PAYPAL_HANDLE") WEBHOOK_URL = os.getenv("WEBHOOK_URL") WEBHOOK_ID = os.getenv("WEBHOOK_ID") RESERVATION_TIMEOUT_MINUTES = 15 TYC_DOCUMENT_URL = os.getenv("TYC_DOCUMENT_URL") NEWRELIC_API_KEY = os.getenv("NEWRELIC_API_KEY") PAYPAL_PERCENTAGE_FEE = float(os.getenv("PAYPAL_PERCENTAGE_FEE", "1.90")) # Default 1.90% PAYPAL_FIXED_FEE = float(os.getenv("PAYPAL_FIXED_FEE", "0.35")) # Default 0.35 EUR PAYPAL_URL = os.getenv("PAYPAL_URL", "https://api-m.paypal.com") # Default to live URL # Conversation States for Raffle Creation (SELECTING_CHANNEL, TYPING_TITLE, TYPING_DESCRIPTION, TYPING_PRICE_FOR_CHANNEL, INTERNATIONAL_SHIPPING, SENDING_IMAGE, CONFIRMING_CREATION) = range(7) # Conversation States for Editing Raffles (EDIT_SELECT_RAFFLE, EDIT_SELECT_NEW_CHANNELS, EDIT_TYPING_PRICE_FOR_NEW_CHANNELS, EDIT_CONFIRM) = range(6, 10) # Callback Data Prefixes SELECT_CHANNEL_PREFIX = "select_channel_" CONFIRM_CREATION_CALLBACK = "confirm_creation" CANCEL_CREATION_CALLBACK = "cancel_creation" # --- Admin Menu Callback Data --- ADMIN_MENU_CREATE = "admin_create_raffle" ADMIN_MENU_LIST = "admin_list_raffles" ADMIN_MENU_BACK_MAIN = "admin_back_to_main_menu" ADMIN_END_RAFFLE_PROMPT_PREFIX = "admin_end_prompt:" # + raffle_id ADMIN_CANCEL_END_PROCESS = "admin_cancel_end" ADMIN_VIEW_RAFFLE_PREFIX = "admin_view_raffle:" # + raffle_id (NEW) ADMIN_ANNOUNCE_RAFFLE_PREFIX = "admin_announce_raffle:" # + raffle_id (NEW) ADMIN_UPDATE_IMAGE_PREFIX = "admin_update_image:" # + raffle_id (NEW) ADMIN_NO_OP = "admin_no_op" # Placeholder for buttons that do nothing on click # --- End Admin Menu --- DRAW_MAPPING = { 'weekday': 'ORD', # Mon–Thu 'friday': 'VIE', # Fri 'weekend': 'DOM' # Sat–Sun } JUEGOS_ONCE_URL = "https://www.juegosonce.es/resultados-ultimos-sorteos-once" # Homelabs API Configuration HOMELABS_API_TOKEN = os.getenv("HOMELABS_API_TOKEN") HOMELABS_API_URL = os.getenv("HOMELABS_API_URL", "http://user_membership_api:8000") VIP_DISCOUNT_PER_NUMBER = float(os.getenv("VIP_DISCOUNT_PER_NUMBER", "1.0")) # Default 1 EUR discount per number for VIP members