{"id":27044106,"url":"https://github.com/math280h/hushbot","last_synced_at":"2026-04-27T22:31:38.150Z","repository":{"id":43750166,"uuid":"389216594","full_name":"math280h/hushbot","owner":"math280h","description":"Text Moderation bot for Discord.","archived":false,"fork":false,"pushed_at":"2022-02-20T02:16:58.000Z","size":536,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T19:42:44.017Z","etag":null,"topics":["bot","discord","discord-bot","discord-py","link-moderation","moderation","moderation-bot","text-moderation"],"latest_commit_sha":null,"homepage":"","language":"Python","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/math280h.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}},"created_at":"2021-07-24T22:57:28.000Z","updated_at":"2022-03-21T08:12:49.000Z","dependencies_parsed_at":"2022-09-10T04:22:16.922Z","dependency_job_id":null,"html_url":"https://github.com/math280h/hushbot","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/math280h/hushbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/math280h%2Fhushbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/math280h%2Fhushbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/math280h%2Fhushbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/math280h%2Fhushbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/math280h","download_url":"https://codeload.github.com/math280h/hushbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/math280h%2Fhushbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32358509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T20:07:02.737Z","status":"ssl_error","status_checked_at":"2026-04-27T20:07:00.910Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["bot","discord","discord-bot","discord-py","link-moderation","moderation","moderation-bot","text-moderation"],"created_at":"2025-04-05T05:19:04.031Z","updated_at":"2026-04-27T22:31:38.128Z","avatar_url":"https://github.com/math280h.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/assets/logo.png\" width=\"240px\" height=\"240px\" /\u003e\n\u003c/p\u003e\n\n# hushbot\n\nText moderation bot for Discord.\n\nThis bot was initially created for learning purposes and does not currently implement any advanced methods to detect text that should be moderated.\n\nHowever, with that said, it should still catch the most obvious.\n\n## Configuration\n\nHushbot works with two types of configurations.\n\n1. Environment Variables\n    1. This is used for e.g. the bot token. (See .env.example)\n    \n2. config.yaml\n    1. This is used for more general bot configuration such as the staff role, prefix and what channels to use.\n\nTo create a configuration simply make a copy of `config.example.yaml` called `config.yaml` in the root directory of the app.\n\n### Custom Rules\n\nHushbot allows you to specify your own regex and corosponding action for that regex.\n\nTo configure a custom rule simply edit your `config.yaml` to include a custom rule like shown below:\n\n```yaml\n  rules:\n    - block_b.t:\n        pattern: \"b.t\"\n        action: \"alert\"\n```\n\nor multiple rules:\n\n```yaml\n  rules:\n    - block_a.t:\n        pattern: \"a.t\"\n        action: \"alert\"\n    - block_b.t:\n        pattern: \"b.t\"\n        action: \"ban\"\n```\n\n*Accepted actions are \"alert\", \"delete\", \"ban\"*\n\nThis example will detect any three-letter word that starts with b and ends with t. Once detected it will run the alert action.\n\n**Important functionality notice**\n\nHushbot will ALWAYS run your custom rules before running any built-in checks.\n\n## Running\n\nTo run, simply create a `.env` using the `.env.example` file and run the following command.\n\n```shell\ndocker-compose --env-file .env up\n```\n\nThis will create a `redis` container and an `bot` container.\nBy default, this docker-compose exposes the redis default ports. Since this bot should not store any sensitive data this shouldn't be an issue. If you don't want it to expose it's ports simply edit the `docker-compose.yaml` file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmath280h%2Fhushbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmath280h%2Fhushbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmath280h%2Fhushbot/lists"}