{"id":28532541,"url":"https://github.com/epse/betty","last_synced_at":"2026-04-02T23:42:48.525Z","repository":{"id":245311291,"uuid":"817654453","full_name":"Epse/betty","owner":"Epse","description":"Betty is a bot","archived":false,"fork":false,"pushed_at":"2025-02-06T18:40:03.000Z","size":313,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-07T16:32:48.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Epse.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":"2024-06-20T07:18:44.000Z","updated_at":"2025-02-06T18:39:52.000Z","dependencies_parsed_at":"2025-02-05T22:20:30.059Z","dependency_job_id":"3f1e3355-d231-4411-b873-c367a7342d8a","html_url":"https://github.com/Epse/betty","commit_stats":null,"previous_names":["epse/betty"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/Epse/betty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epse%2Fbetty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epse%2Fbetty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epse%2Fbetty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epse%2Fbetty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Epse","download_url":"https://codeload.github.com/Epse/betty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epse%2Fbetty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273973466,"owners_count":25200575,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-06-09T15:38:28.339Z","updated_at":"2025-10-15T11:53:18.821Z","avatar_url":"https://github.com/Epse.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Betty\n\nBetty is a Discord bot to unify all the needs of Belux vACC.\n\nBetty is vaguely based on Elizabeth and replicates functionality of Babs,\ntwo previous bots.\nElizabeth was built by Jeroen, Babs by Stef (not the author of this bot).\n\n## What does Betty do?\n\nBetty makes **gorgeous announcements**,\nwhether it's publishing your local events or informing ATC of new LoA's,\nBetty keeps everyone on the same page.\n\nBetty **lets you talk**, automatically creating and deleting voice channels as needed,\nno longer is unrelated ATC talking over each other!\n\nDo you have people asking for backup in a channel? Betty will **clean your messes**,\nremoving old messages as needed.\n\nWith live updating statistics and an overview of online stations,\nBetty **keeps everyone on the same page**.\nPilots and controllers alike can now quickly check if there's traffic or ATC,\nwithout opening yet another app.\n\nHave trouble scheduling ATC for your events?\nBetty **does scheduling bookkeeping**,\nautomatically creating Threads for booking,\nposting rosters and switching to a debrief channel when the event is over.\n\nAnd of course, Betty is **flexible**.\nYou can configure, tweak, or disable any of her features as you need them.\nLet her help you today!\n\n## How to use Betty?\n### Configuration\n\nMost configuration is done via a config.json file.\nYou will find an example in this repo, as well as stricter typings and descriptions in `config.ts`.\nIf you use the Docker image, you will have to mount this,\nor make your own, derived, image that includes it.\nOur provided `docker-compose.yml` includes some example mounting configuration.\n\nA very limited subset of sensitive configuration options are set via environment variable or `.env` file.\nYou will find these documented in `.env.example`.\nThese env files can be mounted in the container and read by Betty herself,\nor read by Docker and kept safely outside the container.\n\n### A few notes on Permissions\n\nMost of the Betty features require the permissions you'd imagine,\nas well as the `Read Message History` permission.\n\nThe autodelete feature, called `backup_request`, requires the following on the channel in question:\n- view channel\n- manage messages\n- read message history\n\nThe events announcement channel requires:\n- view channel\n- send messages\n- Send Messages in Threads\n- Create Public Threads\n- Create Private Threads\n- Embed Links\n- Attach Files\n- Mention @everyone, @here and All Roles\n- Manage Messages\n- Manage Threads\n- Read Message History\n\nThe live stats feature requires:\n- view channel\n- read message history\n- send messages\n- embed links\n\nBetty needs the GUILD_MEMBERS privileged intent in order to get the members of a role.\n\n### Deployment\n\nBetty is available as a Docker image under `stefpletinck/betty`.\nThere are immutable version tags that follow the Releases on GitHub,\nas well as a `latest` tag.\nYou do not need any public IP or callback URL.\n\nOne thing to keep in mind is that Betty does not automatically manage command registration.\nIf you update Betty and the update adds or changes commands,\nyou will need to run the `deploy-commands.ts` script.\n\nYou can use the compiled `.js` version in the Docker container for that,\nor even a local checkout of the same version of code.\n\nWe provide a `docker-compose.yml` file that can be used to quickly spin up Betty,\nprovided you have a `config.json` and `.env` file ready.\n\n### Licensing\n\nSee the LICENSE file for more info.\n\nCopyright (C) 2024 Stef Pletinck\n\nThis program is free software:\nyou can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,\neither version 3 of the License, or (at your option) any later version.\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\nwithout even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\nSee the GNU General Public License for more details.\nYou should have received a copy of the GNU General Public License along with this program.\nIf not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepse%2Fbetty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepse%2Fbetty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepse%2Fbetty/lists"}