Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Private-Parlor/Private-Parlor-XT
A featureful Telegram bot for making anonymous group chats
https://github.com/Private-Parlor/Private-Parlor-XT
crystal crystal-lang telegram telegram-bot tourmaline
Last synced: 1 day ago
JSON representation
A featureful Telegram bot for making anonymous group chats
- Host: GitHub
- URL: https://github.com/Private-Parlor/Private-Parlor-XT
- Owner: Private-Parlor
- License: lgpl-3.0
- Created: 2023-09-04T01:21:30.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-07-04T00:29:39.000Z (4 months ago)
- Last Synced: 2024-11-02T13:33:57.901Z (5 days ago)
- Topics: crystal, crystal-lang, telegram, telegram-bot, tourmaline
- Language: Crystal
- Homepage: https://private-parlor.github.io/Private-Parlor-XT/
- Size: 1.06 MB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
- awesome-telegram - Private Parlor XT
- awesome-telegram - Private Parlor XT
README
# Private Parlor XT
![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&label=Tests)
![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&label=Linux%20Nightly)
![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&label=Linux%20Release)![GitHub top language](https://img.shields.io/github/languages/top/Private-Parlor/Private-Parlor-XT?style=for-the-badge&logo=crystal&labelColor=%23000000&color=%23000000)
A featureful Telegram bot to make an anonymous, private group chat on Telegram.
Inspired by [secretlounge-ng](https://github.com/secretlounge/secretlounge-ng)
Using the [Tourmaline](https://github.com/protoncr/tourmaline) Telegram bot library.
## Notable Features
- Anonymously relay text, photos, albums, polls, videos and more to other people using the bot.
- Restrict new users from sending media by configuring the media limit period.
- Define new ranks via the configuration file with permissions to use various commands and media.
- Make tripcodes harder to crack by adding a salt to the config file.
- Add a spoiler to media before they're sent; or add a spoiler after the fact using the `/spoiler` command.
- Pin and unpin messages to the chat.
- Privately reveal your username to another user.
- Print log messages to a Telegram channel
- Kick users that have been inactive for a configurable period of time.
- Send forwarded messages as photos, videos, animations, etc. to prevent rate limiting.
- Have users automatically send every message with a tripcode using pseudonymous mode.
- Store message history in the database to reduce RAM usage.
- Localization in English, German, and Klingon.
- Persist message history longer or less than 24 hours.
- Prevent new users from joining by closing registration via the config file.
- Upvote and Downvote messages.
- Register commands with BotFather using the config file.
- Enable or disable commands and relaying of certain types of messages using the config file.
- Give users a level based on how much karma they have; user's can sign messages with their level using the `/ksign` command.
- Reduce noise and enforce original messages using the Robot 9000 auto moderator.
- *[And more!](https://github.com/Private-Parlor/Private-Parlor-XT/wiki/Features)*
## Installation
Compiling PrivateParlor XT requires having both `crystal` and `shards` installed.~~~
git clone https://github.com/Private-Parlor/Private-Parlor-XT.git
cd private-parlor-xt
shards install
shards build --release
~~~
Alternatively, you can download the precompiled binaries from [Releases](https://github.com/Private-Parlor/Private-Parlor-XT/releases)## BotFather Setup
1. Start a conversation with [BotFather](https://t.me/botfather)
2. Make a new bot with `/newbot` and answer the prompts
3. `/setprivacy`: enabled
4. `/setjoingroups`: disabled## Usage
1. Rename `config.yaml.copy` to `config.yaml`
2. Edit config file
- The config file should at least contain the API Token received from Botfather and a path to a SQLite database
- Unless the database already exists, Private Parlor XT will create a new SQLite database at the given path
3. Run the `private-parlor-xt` binary## Development
Development instructions are as follows:
- Ensure code conforms to the [Crystal API coding style](https://crystal-lang.org/reference/1.9/conventions/coding_style.html)
- Explicitly define return types and types for variables and parameters
- Document your code
- Write some specs for your code
- Lint using Ameba; remove as many warnings as possible## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request## Contributors
- [Charybdis](https://github.com/Charibdys) - creator and maintainer