Package: django-discord-py
django-discord-pyAn 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 StartedIf you’re new to developing django or have never installed a django server as a package before
you may be used to runningpython manage.py <command>. For this project you will instead rundjango-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.PrerequisitesBy default this project requires Redis. Find installation instructions for you system at their site:https://redis.comInstallationWe recommend installing from PIPpip install --upgrade django_discord_pyIf you want to install from sourcegit clone <this_repo>
cd <this_repo>
pip install -e "."Basic Bot UsageUsing the console_scripts entrypointpython3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
discord-botUsing the module directlypython3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
python -m django_discord.py.entrypoints.channels_entrypointBasic Django Server UsageUsing the console_scripts entrypointpython3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
django-serverUsing the module directlypython3 -m venv your_venv
source your_venv/bin/activate
pip install --upgrade django_discord_py
python -m django_discord.py.entrypoints.http_entrypointMore Advanced Usageexport 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 thechannelsworkers yourself.Sending Your First Discord Bot MessageAdd 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_plusThis will launch anIPythonshell with Django initialized.In your discord server say “Hi!” to the bot:# discord
?hiThe bot will respond with the channel ID for the current channel. Copy the ID without the#and
run the following in yourIPythonshell: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 NeedsObviously, you will want your bot to do more than just respond to?hi. To extend this bot
you can setDJANGO_SETTINGS_MODULEin 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.examplefor a list of import environment variables.Using the plugin systemYou can add your commands to the discord bot via plugins! To do this set:# settings.py

DISCORD_BOT_PLUGINS = [
   'django_discord.py.example_bot.bot_plugins',
]Plugin files are loaded _after_ django settings so it is safe to access the database at the module
level. A basic plugin might look like this:from discord.ext.commands import Context
from django_discord.py.plugins.datatypes import DjangoDiscordPlugin

plugin = DjangoDiscordPlugin()

@plugin.bot.command(description="Say 'Hello, world!'")
async def howdy(ctx: Context):
    await ctx.send(
        f"Howdy, channel #{ctx.channel.id}! 🤠"
    )See the example plugin for more hooks and tips:django_discord.py.example_bot.bot_pluginsMaking Changes & ContributingThis project usespre-commit, please make sure to install it before making any
changes:pip install pre-commit
cd django-discord-py
pre-commit installIt is a good idea to update the hooks to the latest version:pre-commit autoupdateDon’t forget to tell your contributors to also install and use pre-commit.NoteThis project has been set up using PyScaffold 4.3.1. For details and usage
information on PyScaffold seehttps://pyscaffold.org/.