{"id":18994590,"url":"https://github.com/timelessnesses/countable","last_synced_at":"2026-05-04T01:31:41.384Z","repository":{"id":39649950,"uuid":"490866089","full_name":"timelessnesses/countable","owner":"timelessnesses","description":"A alphabet count bot inspired by Counting","archived":false,"fork":false,"pushed_at":"2024-03-15T18:03:13.000Z","size":428,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-03-15T19:27:08.930Z","etag":null,"topics":["alphabet","discord-py","discordpy","docker","english","fun","poetry","postgres","python","replit","sql"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timelessnesses.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-05-10T21:30:18.000Z","updated_at":"2024-03-15T19:27:12.188Z","dependencies_parsed_at":"2023-11-29T00:41:15.273Z","dependency_job_id":"6af95d8b-c6ad-4592-9c13-7a2853c42355","html_url":"https://github.com/timelessnesses/countable","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timelessnesses%2Fcountable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timelessnesses%2Fcountable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timelessnesses%2Fcountable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timelessnesses%2Fcountable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timelessnesses","download_url":"https://codeload.github.com/timelessnesses/countable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240009787,"owners_count":19733503,"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":["alphabet","discord-py","discordpy","docker","english","fun","poetry","postgres","python","replit","sql"],"created_at":"2024-11-08T17:26:08.663Z","updated_at":"2026-04-15T18:30:22.999Z","avatar_url":"https://github.com/timelessnesses.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# countable\n\nA alphabet count bot inspired by Counting\n\n## How this works\n\nYou continue saying alphabet in order like this\n\n```text\na\nb\n... \nz\n```\n\nBut when it reached ended sequel, you add a character to it like you counting a number like this\n\n```text\naa\nab\n...\naz\nba\nbb\nbc\n...\nbz\n```\n\netc.  \nIf you ruined the chain you will be logged and people can look at who ruined the chain.  \nThis entire came from snaky's idea and inspired by counting bot\n\n## How to setup\n\nThere's 2 types you can host this bot.\n\n- Replit (likely the easiest)\n- Docker (easier than replit and can be scaled)\n- Others (applies to others that they don't show the files publicly)\n\n## Replit\n\nClone my [repl](https://replit.com/@Mooping/alphabet-count-bot) is the easiest way but you can follow stuff below.  \nClone my repository and tell replit to run the following command everytime repl starts up\n\n```bash\npython bot.py\n```\n\nYou also likely need to install packages using poetry (I think it is install for it automatically)\n\n```bash\npoetry install\n```\n\nYou need to also need to add env var via `Secrets` like:\n\n```dotenv\nALPHABET_DB_HOST=\u003cpostgresql server hostname\u003e\nALPHABET_DB_PORT=\u003cpostgresql server port\u003e\nALPHABET_DB_USER=\u003cpostgresql server username\u003e\nALPHABET_DB_PASSWORD=\u003cpostgresql server password\u003e\nALPHABET_DB_NAME=\u003cpostgresql database name\u003e\nALPHABET_URI=\u003cpostgresql uri if you don't want to type stuff up there\u003e\nALPHABET_TOKEN=\u003cbot token\u003e\nIS_REPLIT=any value (this is for replit)\n```\n\nStart repl up and you should be good to go(?)\n\n## Docker\n\n### Compose (Easiest)\n\nCreate new file called `compose.yaml` with these contents inside:\n\n```yaml\nservices:\n    countable:\n        image: ghcr.io/timelessnesses/countable\n        environment:\n            - ALPHABET_DB_HOST=db\n            - ALPHABET_DB_PORT=5432\n            - ALPHABET_DB_USER=countable\n            - ALPHABET_DB_PASSWORD=countable\n            - ALPHABET_DB_NAME=countables\n            - ALPHABET_TOKEN=\u003cTOKEN\u003e\n    db:\n        image: postgres:14\n        environment:\n            - POSTGRES_USER=countable\n            - POSTGRES_PASSWORD=countable\n            - POSTGRES_DB=countables\n        volumes:\n            - data:/var/lib/postgresql/data\nvolumes:\n    data:\n```\n\nThen start it up with `docker compose up` (add `-d` for running it in the background)\n\n### Running directly from an image\n\nClone the image with `docker pull ghcr.io/timelessnesses/countable:latest` and run it by\n\n```sh\ndocker run ghcr.io/timelessnesses/countable -e ALPHABET_DB_HOST=\u003cDatabase's hostname\u003e -e ALPHABET_DB_PORT=\u003cDatabase's server port\u003e -e ALPHABET_DB_USER=\u003cUser account for accessing database's server\u003e -e ALPHABET_DB_PASSWORD=\u003cA password for user account\u003e -e ALPHABET_DB_NAME=\u003cDatabase name\u003e -e ALPHABET_TOKEN=\u003cDiscord bot token\u003e\n```\n\n### Cloned from GitHub Repository (Compose)\n\nCreate `.env` with these contents inside:\n\n```sh\nALPHABET_TOKEN=\u003cTOKEN\u003e\n```\n\nThen run `make compose_run`\n\n### Cloned from GitHub Repository (Image)\n\nYou need `make` for this to work.  \n\nRun `make build_image` then run\n\n```sh\ndocker run countable_dev:latest -e ALPHABET_DB_HOST=\u003cDatabase's hostname\u003e -e ALPHABET_DB_PORT=\u003cDatabase's server port\u003e -e ALPHABET_DB_USER=\u003cUser account for accessing database's server\u003e -e ALPHABET_DB_PASSWORD=\u003cA password for user account\u003e -e ALPHABET_DB_NAME=\u003cDatabase name\u003e -e ALPHABET_TOKEN=\u003cDiscord bot token\u003e\n```\n\n## Others\n\nRename .env.example to .env and add your env vars.\n\n```dotenv\nALPHABET_DB_HOST=\u003cpostgresql server hostname\u003e\nALPHABET_DB_PORT=\u003cpostgresql server port\u003e\nALPHABET_DB_USER=\u003cpostgresql server username\u003e\nALPHABET_DB_PASSWORD=\u003cpostgresql server password\u003e\nALPHABET_DB_NAME=\u003cpostgresql database name\u003e\nALPHABET_URI=\u003cpostgresql uri if you don't want to type stuff up there\u003e\nALPHABET_TOKEN=\u003cbot token\u003e\n```\n\nand run `python -m pip install poetry` then `python -m poetry install` then `python -m poetry shell` and run `python bot.py`\n\n# Current State\n\n- [x] Stable\n- [ ] Broken\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimelessnesses%2Fcountable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimelessnesses%2Fcountable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimelessnesses%2Fcountable/lists"}