{"id":22881489,"url":"https://github.com/luludotdev/discord-welcome-action","last_synced_at":"2026-02-12T23:04:53.834Z","repository":{"id":65160693,"uuid":"480947436","full_name":"luludotdev/discord-welcome-action","owner":"luludotdev","description":"Action to keep channel content in-sync with Markdown based templates","archived":false,"fork":false,"pushed_at":"2023-11-20T21:43:13.000Z","size":10597,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T12:55:05.148Z","etag":null,"topics":["action","channel","discord","send","typescript","welcome"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luludotdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["luludotdev"],"ko_fi":"luludev","custom":["https://paypal.me/jackbarondev","https://monzo.me/jackbaron"]}},"created_at":"2022-04-12T19:33:14.000Z","updated_at":"2025-02-20T03:13:26.000Z","dependencies_parsed_at":"2024-12-13T17:37:32.391Z","dependency_job_id":"b2b9eeeb-761e-406a-85e8-6fbe37570782","html_url":"https://github.com/luludotdev/discord-welcome-action","commit_stats":{"total_commits":57,"total_committers":1,"mean_commits":57.0,"dds":0.0,"last_synced_commit":"dacf6c0a5b524b9cdb96bc136f03c81187737dab"},"previous_names":["luludotdev/discord-welcome-action","lolpants/discord-welcome-action"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luludotdev%2Fdiscord-welcome-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luludotdev%2Fdiscord-welcome-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luludotdev%2Fdiscord-welcome-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luludotdev%2Fdiscord-welcome-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luludotdev","download_url":"https://codeload.github.com/luludotdev/discord-welcome-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252804740,"owners_count":21806868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["action","channel","discord","send","typescript","welcome"],"created_at":"2024-12-13T17:37:27.199Z","updated_at":"2026-02-12T23:04:48.806Z","avatar_url":"https://github.com/luludotdev.png","language":"TypeScript","funding_links":["https://github.com/sponsors/luludotdev","https://ko-fi.com/luludev","https://paypal.me/jackbarondev","https://monzo.me/jackbaron"],"categories":[],"sub_categories":[],"readme":"# Discord Welcome Action [![Node.js CI](https://github.com/luludotdev/discord-welcome-action/actions/workflows/ci.yml/badge.svg)](https://github.com/luludotdev/discord-welcome-action/actions/workflows/ci.yml) [![Action Test](https://github.com/luludotdev/discord-welcome-action/actions/workflows/test.yml/badge.svg)](https://github.com/luludotdev/discord-welcome-action/actions/workflows/test.yml)\n\n\u003e Action to keep channel content in-sync with Markdown based templates\n\n## Stability\n\nThis action is tested on every push with a [Test Workflow](https://github.com/luludotdev/discord-welcome-action/actions/workflows/test.yml) to ensure things function as expected.\nHowever it has not been extensively battle-tested with many different inputs and configurations so please report any issues you may find.\n\n## Prerequisites\n\n- A Discord Bot with `Manage Webhooks` and `Manage Messages` permissions in the target server(s)\n- One or more Markdown template documents using the extended syntax (see below)\n\n## Usage\n\n### Action Inputs\n\n| Name            | Type   | Required | Default     | Description                                       |\n| --------------- | ------ | -------- | ----------- | ------------------------------------------------- |\n| `discord-token` | String | `true`   | n/a         | Discord Bot Login Token                           |\n| `content`       | String | `true`   | `./content` | Path to a directory containing template documents |\n\n### Markdown Syntax\n\nTemplate documents can make use of any Markdown syntax that Discord directly supports, as templates are sent almost verbatim to the target channels. You can also use `---` (horizontal rules) to break up the document into multiple messages, otherwise messages will be split automatically.\n\nIf you want to insert a blank line between messages, you can use the `::break` special syntax in a dedicated block. The [test data](./test-content/welcome.md) has an example of how to use this syntax.\n\nImages will also be embedded correctly, however **images must be in a message of their own to be parsed correctly.**\n\nFinally, bulleted lists will be transformed to use the Unicode bullet character.\n\n_You can see an example of the syntax [here](https://raw.githubusercontent.com/luludotdev/discord-welcome-action/master/test-content/welcome.md)._\n\n#### Frontmatter\n\nAll Markdown templates must have YAML frontmatter to denote the channel target and allow you to pass additional per-template configuration.\n\n| Name          | Type   | Required | Default     | Description                              |\n| ------------- | ------ | -------- | ----------- | ---------------------------------------- |\n| `channel`     | String | `true`   | n/a         | Snowflake ID of the target channel       |\n| `senderName`  | String | `false`  | Server Name | Name of the user sending the message(s)  |\n| `senderImage` | String | `false`  | Server Icon | Icon for the user sending the message(s) |\n\n### Example Workflow\n\n```yml\nname: Update Welcome\non: [push]\n\njobs:\n  execute:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Update Welcome\n        uses: luludotdev/discord-welcome-action@v1\n        with:\n          content: ./content\n          discord-token: ${{ secrets.DISCORD_TOKEN }}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluludotdev%2Fdiscord-welcome-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluludotdev%2Fdiscord-welcome-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluludotdev%2Fdiscord-welcome-action/lists"}