{"id":26706526,"url":"https://github.com/robertjmarlow/fia-swear-bot","last_synced_at":"2026-04-19T14:01:51.306Z","repository":{"id":282980347,"uuid":"950297014","full_name":"robertjmarlow/fia-swear-bot","owner":"robertjmarlow","description":"Fines users in chat according to FIA rules","archived":false,"fork":false,"pushed_at":"2025-07-27T23:04:24.000Z","size":290,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-28T00:26:19.380Z","etag":null,"topics":["discord-bot","docker-compose","javascript","redis","typescript"],"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/robertjmarlow.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,"zenodo":null}},"created_at":"2025-03-18T00:09:41.000Z","updated_at":"2025-07-27T22:58:38.000Z","dependencies_parsed_at":"2025-04-03T04:22:22.239Z","dependency_job_id":"86c1c5a9-8d78-4975-9c11-b27f702e9f4c","html_url":"https://github.com/robertjmarlow/fia-swear-bot","commit_stats":null,"previous_names":["robertjmarlow/fia-swear-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robertjmarlow/fia-swear-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertjmarlow%2Ffia-swear-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertjmarlow%2Ffia-swear-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertjmarlow%2Ffia-swear-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertjmarlow%2Ffia-swear-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertjmarlow","download_url":"https://codeload.github.com/robertjmarlow/fia-swear-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertjmarlow%2Ffia-swear-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":["discord-bot","docker-compose","javascript","redis","typescript"],"created_at":"2025-03-27T06:18:12.947Z","updated_at":"2026-04-19T14:01:51.260Z","avatar_url":"https://github.com/robertjmarlow.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fia-swear-bot\n\nA Discord bot that implements the FIA's new [anti-swearing rules for drivers](https://www.nytimes.com/athletic/6157464/2025/02/25/fia-f1-swearing-penalties-explained/) but for users in Discord channels.\n\n# Prereqs\n\n1. Clone this repo.\n1. Create a file called `.env` at the root of the repo. This needs to be filled in with enviornment variables.\n    ```\n    token=\n    clientId=\n    guildId=\n    badWordList=\n    badWordMultiplier=\n    dbHost=\n    dbPort=\n    ```\n\n:warning: **The versions of Redis in the various install methods could be different. This may make the [AOF](https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/) between the install methods incompatible with one another when switching between different installation methods.**\n\n# Build + Run with Docker\n\nDocker is recommended to build and run this.\n\nOne-time setup steps:\n\n1. Install [Docker](https://www.docker.com/)\n\nBuild and run the image with:\n\n```sh\ndocker compose up --build -d\n```\n\n# Build + Run with Node and Redis\n\nThis also works, but takes more steps.\n\nOne-time setup steps:\n\n1. Install [nvm](https://github.com/nvm-sh/nvm)\n1. Tell nvm to use the correct version of node:\n    ```sh\n    nvm use\n    ```\n1. Install the [TypeScript](https://www.typescriptlang.org/) compiler globally:\n    ```sh\n    npm install -g tsc\n    ```\n1. Install [yarn](https://yarnpkg.com/):\n    ```sh\n    corepack enable\n    yarn install\n    ```\n1. Install [Redis](https://redis.io/), either through [its downloads page](https://redis.io/downloads/#stack) or [via Homebrew](https://formulae.brew.sh/formula/redis):\n    ```sh\n    brew install redis\n    ```\n\nBuild and run:\n\n1. Make some minor modifications to the `redis.conf`:\n    ```diff\n    diff --git a/redis.conf b/redis.conf\n    index 7c3e1cc..2c0dac0 100644\n    --- a/redis.conf\n    +++ b/redis.conf\n    @@ -1,3 +1,3 @@\n    -dir /usr/local/etc/redis/db\n    +dir ./db\n    appendonly yes\n    appendfilename \"db.aof\"\n    ```\n1. Start Redis with the specified `redis.conf`:\n    ```sh\n    redis-server ./redis.conf\n    ```\n1. In another command line, start the bot:\n    ```sh\n    yarn build-and-run\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertjmarlow%2Ffia-swear-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertjmarlow%2Ffia-swear-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertjmarlow%2Ffia-swear-bot/lists"}