{"id":41743879,"url":"https://github.com/dofusdude/ankama-discord-hooks","last_synced_at":"2026-01-25T00:36:43.163Z","repository":{"id":62175922,"uuid":"556829900","full_name":"dofusdude/ankama-discord-hooks","owner":"dofusdude","description":"API for subscribing Ankama related feed updates to your Discord","archived":false,"fork":false,"pushed_at":"2025-02-12T13:21:10.000Z","size":315,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-12T14:38:10.654Z","etag":null,"topics":["almanax","discord","discord-bot","dofus","webhooks"],"latest_commit_sha":null,"homepage":"https://discord.dofusdude.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dofusdude.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2022-10-24T15:38:32.000Z","updated_at":"2025-02-12T13:21:06.000Z","dependencies_parsed_at":"2023-02-17T21:16:02.151Z","dependency_job_id":"7a3f3311-9f0b-4868-92f9-c76ef7945c7e","html_url":"https://github.com/dofusdude/ankama-discord-hooks","commit_stats":{"total_commits":64,"total_committers":2,"mean_commits":32.0,"dds":0.375,"last_synced_commit":"28dc95da6eddda510a1d0327fa49100e74a975fc"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/dofusdude/ankama-discord-hooks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dofusdude%2Fankama-discord-hooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dofusdude%2Fankama-discord-hooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dofusdude%2Fankama-discord-hooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dofusdude%2Fankama-discord-hooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dofusdude","download_url":"https://codeload.github.com/dofusdude/ankama-discord-hooks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dofusdude%2Fankama-discord-hooks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28740028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T22:12:27.248Z","status":"ssl_error","status_checked_at":"2026-01-24T22:12:10.529Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["almanax","discord","discord-bot","dofus","webhooks"],"created_at":"2026-01-25T00:36:42.645Z","updated_at":"2026-01-25T00:36:43.158Z","avatar_url":"https://github.com/dofusdude.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ankama Discord Webhooks\n[![Report card](https://goreportcard.com/badge/github.com/dofusdude/ankama-discord-hooks)](https://goreportcard.com/report/github.com/dofusdude/ankama-discord-hooks)\n[![integration](https://github.com/dofusdude/ankama-discord-hooks/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/dofusdude/ankama-discord-hooks/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/dofusdude/ankama-discord-hooks/branch/main/graph/badge.svg?token=ADPA003JM7)](https://codecov.io/gh/dofusdude/ankama-discord-hooks)\n\nA polling based listener converting multiple Ankama related feed updates to Discord Webhooks.\n\nThere is also an official [Website](https://discord.dofusdude.com) for very easy and fast Webhook creation using this API.\n\nThe full API documentation can be found integrated in the [Dofusdude Docs](https://docs.dofusdu.de).\n\nWith the integration into the Dofusdude API, there are also SDKs ready to use, so you don't need to write the API function mappings and types yourself. You can find them at the docs.\n\n## How it works\nThe server polls the Twitter API and RSS feeds and checks whether new content is available. If so, it sends a POST request to the configured URLs.\n\nThe Almanax listeners wait until a subscribed Webhook time is set to fire. Then it uses the [Dofusdude API](https://docs.dofusdu.de) to \nget the Almanax data and sends a custom request defined by personal settings to the registered URLs.\n\n## Public CRUD safety\nThe URLs include keys to a channel with write access. This API is meant to be public but leaking the URLs would be a security issue.\nTo replace them, there are random IDs that should be kept secret or only shown to the user. With the IDs, the user can update or delete the Webhook but can't retrieve the URL.\n\n## Adding feeds\nFor the official instance I don't want to spam every imaginable Twitter account or RSS feed. So I only added the ones I think are interesting for everyone. If you want to add a feed, just open an issue or a PR.\n\nI won't allow adding feeds programmatically to the public API. If you read the database code, you'll see the `official` flag. This could be a way to add feeds via the API in the future, but it definitely will be with authentication and authorization. \n\n## Preventing abuse\nThe official instance has an IP based rate limit of 1 request/second with a burst of 5.\n\nIt only allows Discord Webhooks to be used as target. Otherwise, it would basically become a DDoS service. In the future, I want to add custom targets but (again) only with authentication and authorization.\nBecause of this (and I don't want Discord to be the default), the json field `format` must be set to 'discord' on creation. This way, the schema stays flexible for the future. \n\n## Self-hosting\nYou can easily self-host this service, but you should be mindful of the URLs. Always see them as plain-text passwords saved in a database. So never serve unprotected endpoints to the public.\n\n### Tools\n- [golang-migrate](https://github.com/golang-migrate/migrate/tree/master/cmd/migrate)\n- PostgreSQL 14\n- Docker (optional, only used for database in README)\n- Go 1.19 (only for building from source)\n\n### From source\n```bash\ncd $GOPATH/src\nmkdir -p github.com/dofusdude \u0026\u0026 cd github.com/dofusdude\ngit clone git@github.com:dofusdude/ankama-discord-hooks.git \u0026\u0026 cd ankama-discord-hooks\n\n# create a .env file\ncp .env.example .env\n\n# export .env to shell\nset -o allexport\nsource .env\nset +o allexport\n\n# setup database\ndocker run --rm --name webhooks-postgres --env-file .env -p 5432:5432 -d postgres:14-alpine\nmake migrate-up\n\ngo test -cover\ngo run .\n\n# cleanup database\ndocker stop webhooks-postgres\n```\n\n### Binary\nCheck the Releases tab and download the latest version of the binary for your platform.\n\nCreate a PostgreSQL database and run the migrations (like above).\n\nSet the environment variables as described in the `.env.example` file or override `ENV_DIR` to a directory with an .env file (no trailing slash) and run the binary.\n\nFor running the binary in the background as a service, you can use systemd:\n\nCreate a service file, for example `/etc/systemd/system/webhooks.service`.\n```ini\n[Unit]\nDescription=Webhooks Server\n\n[Service]\nExecStart=/bin/ankama-discord-hooks\nUser=dofusdude\n\nEnvironment=ENV_DIR=/home/dofusdude/ankama-discord-hooks\n\n[Install]\nWantedBy=multi-user.target\n```\n\nThen enable and start the service.\n```bash\nsystemctl enable webhooks\nsystemctl start webhooks\n```\n\n### Docker\nThe Docker image is available on [Docker Hub](https://hub.docker.com/r/stelzo/ankama-discord-hooks).\n\n```bash\ndocker-compose up -d db\n\n# wait a few seconds for the database to run migrations and get ready.\n\ndocker-compose up -d webhooks\n```\n\n## License\n[MIT](https://choosealicense.com/licenses/mit/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdofusdude%2Fankama-discord-hooks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdofusdude%2Fankama-discord-hooks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdofusdude%2Fankama-discord-hooks/lists"}