File size: 3,287 Bytes
0dca8ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c300b5a
0dca8ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# config.py
import os
import logging
from dotenv import load_dotenv

# Load .env file if exists (for local testing)
load_dotenv()

logger = logging.getLogger(__name__)

class Config:
    # --- Essential Secrets (Read from Environment/HF Secrets) ---
    BOT_TOKEN = os.getenv('BOT_TOKEN')
    API_ID = os.getenv('API_ID')
    API_HASH = os.getenv('API_HASH')

    # --- Admin Configuration ---
    # !!! REPLACE 123456789 WITH YOUR ACTUAL ADMIN TELEGRAM USER ID(S) !!!
    ADMIN_IDS = [1559968105, 1131003976] # Example: [123456789, 987654321]

    # --- Validate Secrets ---
    if not BOT_TOKEN:
        logger.critical("BOT_TOKEN missing!")
        raise ValueError("BOT_TOKEN environment variable not set! Add it to Hugging Face Secrets.")
    if not API_ID:
        logger.critical("API_ID missing!")
        raise ValueError("API_ID environment variable not set! Add it to Hugging Face Secrets.")
    if not API_HASH:
        logger.critical("API_HASH missing!")
        raise ValueError("API_HASH environment variable not set! Add it to Hugging Face Secrets.")
    try:
        API_ID = int(API_ID)
    except ValueError:
        logger.critical("API_ID is not an integer!")
        raise ValueError("API_ID environment variable must be an integer.")
    if not ADMIN_IDS or not all(isinstance(admin_id, int) for admin_id in ADMIN_IDS):
        logger.warning("ADMIN_IDS list is empty or contains non-integer values. Defaulting to empty. Check configuration.")
        ADMIN_IDS = []
    else:
         logger.info(f"Admin IDs loaded: {ADMIN_IDS}")


    # --- File Paths & Directories ---
    PREDEFINED_TEMPLATES_DIR = "templates" # Relative to /app in Docker
    OUTPUT_DIR = "generated_images"     # Relative to /app in Docker
    FONT_PATH = "Arial"                 # Relies on system font installed via Dockerfile
    SESSION_NAME = "bot_hydro_session"  # Hydrogram session file name (will be in /app)

    # --- Image Processing Settings (YOU NEED TO SET THESE ACCURATELY FOR YOUR TEMPLATE) ---
    TEMPLATE_SIZE = (1200, 900)       # The EXACT width and height of your template PNG files.
    PLACEHOLDER_SIZE = (1200, 600)    # The EXACT width and height of the transparent "window"
                                      # in your template where the user's image will go. (Example)
    PLACEHOLDER_POSITION = (0, 0)     # The EXACT top-left (x, y) coordinates where the
                                      # transparent "window" starts on your template. (Example)

    # Auto Template Settings (if you use them, otherwise can be ignored)
    AUTO_TEMPLATES_COUNT = 3 # Reduced for quicker testing; was 5
    AUTO_TEMPLATE_SIZE = (1200, 900)
    AUTO_USER_IMAGE_SIZE = (600, 450)

    # Text and General Image Settings
    MIN_FONT_SIZE = 30
    MAX_FONT_SIZE = 60
    TEXT_STROKE_WIDTH = 2
    NOISE_INTENSITY = 0.03
    MAX_CAPTION_WIDTH = 35
    JPEG_QUALITY = 85

    # Example: Text placement for the caption (YOU MUST ADJUST THESE)
    # These coordinates are relative to the top-left (0,0) of your TEMPLATE_SIZE canvas.
    TEXT_AREA_Y_START = 700 # Example: Y-coordinate where your text background bar begins
    TEXT_AREA_HEIGHT = 150  # Example: Height of your text background bar
    # Horizontal centering for text is often done dynamically in processing.py