Skip to main content

Add a short description here!

Project description

Project generated with PyScaffold

django-discord-py

An easy-to-use, easy-to-start with Discord.py bot with Django built right in.

Discord bots are really cool, and Django provides a lot of functionality for free. For a lot of developers this project may be too heavy weight to make sense. However, if you’re used to Django and want to start writing Discord bots then this should be a great place for you to start.

Important Notes Before We Get Started

If you’re new to developing django or have never installed a django server as a package before you may be used to running python manage.py <command>. For this project you will instead run

python -m django_discord.py <command>

If you don’t want this you can also install this package as normal and import the parts you want to use in your django project.

Prerequisites

By default this project requires Redis. Find installation instructions for you system at their site: https://redis.com

Installation

We recommend installing from PIP

pip install --upgrade django_discord_py

If you want to install from source

git clone <this_repo>
cd <this_repo>
pip install -e "."

Basic Bot Usage

Using the console_scripts entrypoint

python3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
discord_bot

Using the module directly

python3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
python -m django_discord.py.entrypoints.channels_entrypoint

Basic Django Server Usage

Using the console_scripts entrypoint

python3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
django_server

Using the module directly

python3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
python -m django_discord.py.entrypoints.http_entrypoint

More Advanced Usage

export DJANGO_SETTINGS_MODULE='path.to.your.settings'

# path.to.your.settings.py
from from django_discord.py.configuration.common_components.base import INSTALLED_APPS
DISCORD_BOT_PATH = 'path.to.your.discord.bot.definition'
INSTALLED_APPS = [
    *INSTALLED_APPS,
    'your_django_app',
]

Doing this will allow you to fully configure the Django application. You can also set up a django project normally and do:

# path.to.your.settings.py
DISCORD_BOT_PATH = 'path.to.your.discord.bot.definition'
INSTALLED_APPS = [
    ...,
    'django_discord.py.bot',
    ...,
]

But you will be responsible for starting the channels workers yourself.

Sending Your First Discord Bot Message

Add the bot to your discord server. Then launch the bot process using the instructinos above. In a separate shell run

# sh
python -m django_discord.py shell_plus

This will launch an IPython shell with Django initialized.

In your discord server say “Hi!” to the bot:

# discord
?hi

The bot will respond with the channel ID for the current channel. Copy the ID without the # and run the following in your IPython shell:

from channels.layers import get_channel_layer
channel_layer = get_channel_layer()
await channel_layer.send('discord_bot', {'type': 'send.message', 'channel': COPY_FROM_DISCORD, 'content': 'This is cool!'})

Extending The Server For Your Own Needs

Obviously, you will want your bot to do more than just respond to ?hi. To extend this bot you can set DJANGO_SETTINGS_MODULE in your environment to your own settings file. From there you will have all the normal controls over Django that you’re used to.

For ease-of-use you can see .env.example for a list of import environment variables.

Making Changes & Contributing

This project uses pre-commit, please make sure to install it before making any changes:

pip install pre-commit
cd django-discord-py
pre-commit install

It is a good idea to update the hooks to the latest version:

pre-commit autoupdate

Don’t forget to tell your contributors to also install and use pre-commit.

Note

This project has been set up using PyScaffold 4.3.1. For details and usage information on PyScaffold see https://pyscaffold.org/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-discord-py-2023.129.2029.tar.gz (32.8 kB view details)

Uploaded Source

Built Distribution

django_discord_py-2023.129.2029-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file django-discord-py-2023.129.2029.tar.gz.

File metadata

File hashes

Hashes for django-discord-py-2023.129.2029.tar.gz
Algorithm Hash digest
SHA256 d341bd1bea10edbe715cd5ec33aec85b8100cc643068568b68ef6e575bf23fc7
MD5 8e2c2eb273ff2a0f60e8b496facb9e2c
BLAKE2b-256 875debf7ddf5bf26a00c6988bde94a03a49e51f43e0f1e99ceb2cb8373cafddb

See more details on using hashes here.

File details

Details for the file django_discord_py-2023.129.2029-py3-none-any.whl.

File metadata

File hashes

Hashes for django_discord_py-2023.129.2029-py3-none-any.whl
Algorithm Hash digest
SHA256 28b8d21c25a82d9dfc8a76abcf5d509af7776818ff871e5eec4c185614f1651e
MD5 7f3378d496e0637866c61b29bf2a7746
BLAKE2b-256 d8673ef33668c51d0b6672395b3aedd032fc7907db9535f675708f9e185d6c66

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page