Private Parlor XT
A featureful Telegram bot to make an anonymous, private group chat on Telegram.
Inspired by secretlounge-ng
Using the 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!
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
BotFather Setup
- Start a conversation with BotFather
- Make a new bot with
/newbot
and answer the prompts /setprivacy
: enabled/setjoingroups
: disabled
Usage
- Rename
config.yaml.copy
toconfig.yaml
- 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
- Run the
private-parlor-xt
binary
Development
Development instructions are as follows:
- Ensure code conforms to the Crystal API coding style
- 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
- Fork it (https://github.com/Private-Parlor/private-parlor-xt/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Charybdis - creator and maintainer