Source code for manolo_bot.config

from envmodel import (
    BooleanField,
    EnvModel,
    FloatField,
    IntegerField,
    JsonField,
    StringField,
    StringListField,
)


[docs] class Config(EnvModel): google_api_key = StringField("GOOGLE_API_KEY") google_api_model = StringField("GOOGLE_API_MODEL", default="gemini-2.0-flash") openai_api_key = StringField("OPENAI_API_KEY") openai_api_model = StringField("OPENAI_API_MODEL") openai_api_base_url = StringField("OPENAI_API_BASE_URL") ollama_model = StringField("OLLAMA_MODEL") bot_name = StringField("TELEGRAM_BOT_NAME", required=True) bot_username = StringField("TELEGRAM_BOT_USERNAME", required=True) bot_token = StringField("TELEGRAM_BOT_TOKEN", required=True) bot_uuid = StringField("BOT_UUID", default="default-bot-uuid") user_id = IntegerField("USER_ID", default=0) context_max_tokens = IntegerField("CONTEXT_MAX_TOKENS", default=4096) preferred_language = StringField("PREFERRED_LANGUAGE", default="Spanish") add_no_answer = BooleanField("ADD_NO_ANSWER", default=False) rate_limiter_requests_per_second = FloatField("RATE_LIMITER_REQUESTS_PER_SECOND", default=0.25) rate_limiter_check_every_n_seconds = FloatField("RATE_LIMITER_CHECK_EVERY_N_SECONDS", default=0.1) rate_limiter_max_bucket_size = IntegerField("RATE_LIMITER_MAX_BUCKET_SIZE", default=10) is_image_multimodal = BooleanField("IMAGE_MULTIMODAL", default=False) is_audio_multimodal = BooleanField("AUDIO_MULTIMODAL", default=False) is_group_assistant = BooleanField("ENABLE_GROUP_ASSISTANT", default=False) agent_mode = BooleanField("AGENT_MODE", default=False) agent_instructions = StringField("AGENT_INSTRUCTIONS") allow_private_chats = BooleanField("ALLOW_PRIVATE_CHATS", default=True) # Web content retrieval configuration web_content_request_timeout = IntegerField("WEB_CONTENT_REQUEST_TIMEOUT_SECONDS", default=10) sdapi_url = StringField( "WEBUI_SD_API_URL", warning="WEBUI_SD_API_URL environment variable not set. Image generation disabled." ) default_sdapi_params = { "steps": 1, "cfg_scale": 1, "width": 512, "height": 512, "timestep_spacing": "trailing", } sdapi_params = JsonField( "WEBUI_SD_API_PARAMS", default=default_sdapi_params, warning="Could not load WEBUI_SD_API_PARAMS. Defaults for SDXL Turbo model will be used.", ) sdapi_negative_prompt = StringField("WEBUI_SD_API_NEGATIVE_PROMPT") allowed_chat_ids = StringListField("TELEGRAM_ALLOWED_CHATS") bot_instructions = StringField("TELEGRAM_BOT_INSTRUCTIONS") bot_instructions_character = StringField("TELEGRAM_BOT_INSTRUCTIONS_CHARACTER") bot_instructions_extra = StringField("TELEGRAM_BOT_INSTRUCTIONS_EXTRA") simulate_typing = BooleanField("SIMULATE_TYPING", default=False) simulate_typing_wpm = IntegerField("SIMULATE_TYPING_WPM", default=100) simulate_typing_max_time = IntegerField("SIMULATE_TYPING_MAX_TIME", default=10) use_tools = BooleanField("USE_TOOLS", default=True) # MCP Configuration enable_mcp = BooleanField("ENABLE_MCP", default=False) mcp_servers_config = JsonField( "MCP_SERVERS_CONFIG", default={}, warning="MCP_SERVERS_CONFIG not set. MCP will be disabled.", ) logging_level = StringField( "LOGGING_LEVEL", default="INFO", allowed_values=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] ) use_tavily_search = BooleanField("USE_TAVILY_SEARCH", default=False) storage_type = StringField("STORAGE_TYPE", default="memory", allowed_values=["memory", "redis"]) redis_url = StringField("REDIS_URL", default="redis://localhost:6379/0")