{"id":18418066,"url":"https://github.com/Private-Parlor/Private-Parlor-XT","last_synced_at":"2025-04-07T13:31:07.221Z","repository":{"id":192487309,"uuid":"686806315","full_name":"Private-Parlor/Private-Parlor-XT","owner":"Private-Parlor","description":"A featureful Telegram bot for making anonymous group chats","archived":false,"fork":false,"pushed_at":"2025-01-05T01:59:51.000Z","size":1127,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-01T04:29:11.383Z","etag":null,"topics":["crystal","crystal-lang","telegram","telegram-bot","tourmaline"],"latest_commit_sha":null,"homepage":"https://private-parlor.github.io/Private-Parlor-XT/","language":"Crystal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Private-Parlor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2023-09-04T01:21:30.000Z","updated_at":"2025-02-22T05:34:06.000Z","dependencies_parsed_at":"2024-06-03T01:09:52.065Z","dependency_job_id":"6cdadd5b-82b9-4715-a2a9-0c49fbc6ada5","html_url":"https://github.com/Private-Parlor/Private-Parlor-XT","commit_stats":null,"previous_names":["private-parlor/private-parlor-xt"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Private-Parlor%2FPrivate-Parlor-XT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Private-Parlor%2FPrivate-Parlor-XT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Private-Parlor%2FPrivate-Parlor-XT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Private-Parlor%2FPrivate-Parlor-XT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Private-Parlor","download_url":"https://codeload.github.com/Private-Parlor/Private-Parlor-XT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247661596,"owners_count":20975082,"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":["crystal","crystal-lang","telegram","telegram-bot","tourmaline"],"created_at":"2024-11-06T04:12:31.328Z","updated_at":"2025-04-07T13:31:06.630Z","avatar_url":"https://github.com/Private-Parlor.png","language":"Crystal","funding_links":[],"categories":["OpenSource"],"sub_categories":["OpenSource Bots"],"readme":"# Private Parlor XT\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/Private-Parlor/Private-Parlor-XT/deploy-nightly.yml?style=for-the-badge\u0026label=Tests)\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/Private-Parlor/Private-Parlor-XT/deploy-nightly.yml?style=for-the-badge\u0026label=Linux%20Nightly)\n![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/Private-Parlor/Private-Parlor-XT/deploy-tag.yml?style=for-the-badge\u0026label=Linux%20Release)\n\n![GitHub top language](https://img.shields.io/github/languages/top/Private-Parlor/Private-Parlor-XT?style=for-the-badge\u0026logo=crystal\u0026labelColor=%23000000\u0026color=%23000000)\n\nA featureful Telegram bot to make an anonymous, private group chat on Telegram. \n\nInspired by [secretlounge-ng](https://github.com/secretlounge/secretlounge-ng)\n\nUsing the [Tourmaline](https://github.com/protoncr/tourmaline) Telegram bot library.\n\n## Notable Features\n- Anonymously relay text, photos, albums, polls, videos and more to other people using the bot.\n- Restrict new users from sending media by configuring the media limit period.\n- Define new ranks via the configuration file with permissions to use various commands and media.\n- Make tripcodes harder to crack by adding a salt to the config file.\n- Add a spoiler to media before they're sent; or add a spoiler after the fact using the `/spoiler` command.\n- Pin and unpin messages to the chat.\n- Privately reveal your username to another user.\n- Print log messages to a Telegram channel\n- Kick users that have been inactive for a configurable period of time.\n- Send forwarded messages as photos, videos, animations, etc. to prevent rate limiting.\n- Have users automatically send every message with a tripcode using pseudonymous mode.\n- Store message history in the database to reduce RAM usage.\n- Localization in English, German, and Klingon.\n- Persist message history longer or less than 24 hours.\n- Prevent new users from joining by closing registration via the config file.\n- Upvote and Downvote messages.\n- Register commands with BotFather using the config file.\n- Enable or disable commands and relaying of certain types of messages using the config file.\n- Give users a level based on how much karma they have; user's can sign messages with their level using the `/ksign` command.\n- Reduce noise and enforce original messages using the Robot 9000 auto moderator.\n- *[And more!](https://github.com/Private-Parlor/Private-Parlor-XT/wiki/Features)*\n## Installation\nCompiling PrivateParlor XT requires having both `crystal` and `shards` installed.\n\n~~~\ngit clone https://github.com/Private-Parlor/Private-Parlor-XT.git\ncd private-parlor-xt\nshards install\nshards build --release\n~~~\nAlternatively, you can download the precompiled binaries from [Releases](https://github.com/Private-Parlor/Private-Parlor-XT/releases)\n\n## BotFather Setup\n1. Start a conversation with [BotFather](https://t.me/botfather)\n2. Make a new bot with `/newbot` and answer the prompts\n3. `/setprivacy`: enabled\n4. `/setjoingroups`: disabled\n\n## Usage\n\n1. Rename `config.yaml.copy` to `config.yaml`\n2. Edit config file\n  - The config file should at least contain the API Token received from Botfather and a path to a SQLite database\n  - Unless the database already exists, Private Parlor XT will create a new SQLite database at the given path\n3. Run the `private-parlor-xt` binary\n\n## Development\n\nDevelopment instructions are as follows:\n- Ensure code conforms to the [Crystal API coding style](https://crystal-lang.org/reference/1.9/conventions/coding_style.html)\n- Explicitly define return types and types for variables and parameters\n- Document your code\n- Write some specs for your code\n- Lint using Ameba; remove as many warnings as possible\n\n## Contributing\n\n1. Fork it (\u003chttps://github.com/Private-Parlor/private-parlor-xt/fork\u003e)\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create a new Pull Request\n\n## Contributors\n\n- [Charybdis](https://github.com/Charibdys) - creator and maintainer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPrivate-Parlor%2FPrivate-Parlor-XT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPrivate-Parlor%2FPrivate-Parlor-XT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPrivate-Parlor%2FPrivate-Parlor-XT/lists"}