Is that what God does? He helps? Tell me, why didn't God help my innocent friend who died for no reason while the guilty ran free? Okay. Fine. Forget the one offs. How about the countless wars declared in his name? Okay. Fine. Let's skip the random, meaningless murder for a second, shall we? How about the racist, sexist, phobia soup we've all been drowning in because of him? And I'm not just talking about Jesus. I'm talking about all organized religion. Exclusive groups created to manage control. A dealer getting people hooked on the drug of hope. His followers, nothing but addicts who want their hit of bullshit to keep their dopamine of ignorance. Addicts. Afraid to believe the truth. That there's no order. There's no power. That all religions are just metastasizing mind worms, meant to divide us so it's easier to rule us by the charlatans that wanna run us. All we are to them are paying fanboys of their poorly-written sci-fi franchise. If I don't listen to my imaginary friend, why the fuck should I listen to yours? People think their worship's some key to happiness. That's just how he owns you. Even I'm not crazy enough to believe that distortion of reality. So fuck God. He's not a good enough scapegoat for me. |
||
|---|---|---|
| images | ||
| litecord | ||
| manage | ||
| static | ||
| tests | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| LICENSE | ||
| Pipfile | ||
| Pipfile.lock | ||
| README.md | ||
| __init__.py | ||
| config.ci.py | ||
| config.example.py | ||
| discord_endpoints.txt | ||
| manage.py | ||
| nginx.conf | ||
| requirements.txt | ||
| run.py | ||
| schema.sql | ||
| setup.py | ||
| tox.ini | ||
README.md
Litecord is an open source, clean-room design reimplementation of Discord's HTTP API and Gateway in Python 3.
This project is a rewrite of litecord-reference.
Project Goals
- Being able to unit test bots in an autonomous fashion.
- Doing research and exploration on the Discord API.
Non-goals
- Being used as a "self-hostable Discord alternative".
Caveats
- Unit testing is incomplete.
- Currently, there are no plans to support voice chat.
- You must figure out how to connect to a Litecord instance. Litecord will not distribute official client code from Discord nor provide ways to modify the official client.
Installation
Requirements:
- Python 3.7+
- PostgreSQL (tested using 9.6+)
- gifsicle for GIF emoji and avatar handling
- pipenv
Download the code
$ git clone https://gitlab.com/litecord/litecord.git && cd litecord
Setting up the database
It's recommended to create a separate user for the litecord database.
# Create the PostgreSQL database.
$ createdb litecord
# Apply the base schema to the database.
$ psql -f schema.sql litecord
Then, you should run database migrations:
$ pipenv run ./manage.py migrate
Configuring
Copy the config.example.py file and edit it to configure your instance:
$ cp config.example.py config.py
$ $EDITOR config.py
Install packages
$ pipenv install --dev
Running
Hypercorn is used to run Litecord. By default, it will bind to 0.0.0.0:5000.
This will expose your Litecord instance to the world. You can use the -b
option to change it (e.g. -b 0.0.0.0:45000).
$ pipenv run hypercorn run:app
You can use --access-log - to output access logs to stdout.
It is recommended to run litecord behind NGINX. You can use the
nginx.conf file at the root of the repository as a template.
Does it work?
You can check if your instance is running by performing an HTTP GET request on
the /api/v6/gateway endpoint. For basic websocket testing, a tool such as
ws can be used.
Updating
Update the code and run any new database migrations:
$ git pull
$ pipenv run ./manage.py migrate
Running tests
Running tests involves creating dummy users with known passwords. Because of this, you should never setup a testing environment in production.
# Setup any testing users:
$ pipenv run ./manage.py setup_tests
# Install tox:
$ pip install tox
# Run lints and tests:
$ tox
