Skip to content

Feature Request: Embed Customization Support (Colors, Markdown, Headers) #9

@aidenjanzen

Description

@aidenjanzen

First off—loving the project so far! I just implemented it and the setup was super smooth. I’ve aggregated all my notifications into Discord, and it integrates perfectly with my lab setup.

Feature Request: Embed Customization

One feature I’d really love to see is full embed customization.

Right now, I’ve created a temporary workaround by editing the physical format_utils.py file and binding my custom version into the container via Docker Compose (see config snippet below). However, this solution breaks after updates, so I’d love to see official support.

It would be awesome to have:

A dedicated config file (similar to how discord_footer.md works)
Or even an override system tied to constants.py, passed in via Compose
Or maybe an entire new system where you pass the variables in (concept below). This is similar to what Jellyfin notifications are like. You send predefined variables like {{LIST OF MOVIE}}, {{CUSTOM_HEADER}}, etc. and we can do the formatting.

{
    "content": "{{MentionType}}",
    "username": "{{BotUsername}}",
    "embeds": [
        {
            "author": {
                "name": "{{CUSTOM_HEADER}}",
                "url": "{{ServerUrl}}"
            },
            "thumbnail":{
                "url": "{{URL_IMAGE_PATHl}}"
            },
            "description": "{{EPISODES}} all-new episodes, {{MOVIES}} movie releases, and {{SEASON_PREMIERE}} season premiere",
            "color": "15158332",
            "footer": {
                "text": "{{{ServerName}}}"
            },
            "fields": [
                {
                    "name": "📅 Monday",
                    "value": "~~ {{EXAMPLE MOVIE}} ~~",
                    "inline": False
                },
                {
                    "name": "📅 Tuesday",
                    "value": "#- Better Call Saul S06E08\n- Ghostbusters: Frozen Empire\n",
                    "inline": False
                },
            ]
        }
    ]
}

Support for:

  • Custom embed colors
  • Markdown formatting (e.g., bold, italics)
  • Optional bold text (not forced by default)
  • Simple way to disable badges
calendarr:
  # other compose config...
  environment:
    CUSTOM_HEADER: "TV Guide - What's Up This Week"
    TZ: "America/Vancouver"
    SCHEDULE_TYPE: "WEEKLY"
    RUN_TIME: "09:00"
    RUN_ON_STARTUP: "true"
    ENABLE_CUSTOM_DISCORD_FOOTER: "true"
  volumes:
    - ./calendarr/logs:/app/logs:rw
    - ./calendarr/config/format_utils.py:/app/src/utils/format_utils.py:ro  # TEMPORARY override which kinda works but annoying
  labels:
    - com.centurylinklabs.watchtower.enable=true
  restart: always

EDIT: Fixed error after last update, my pathing for the custom format_utils.py is correct and should work on container build.
Copy and paste the current format_utils.py
And remove emojis and formatting that you want to change.
Then save and run docker compose up -d to add your new config.
Since there is no logs you might have to docker exec into the container to see if your changes were made.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions