Django Channels Discord is a bridge between Discord (specifically, the discord.py Python library) and Django's channels). It contains both a new interface server for connecting to Discord and Channels consumers -- everything you need to turn your Django app into an Discord chatbot, chat monitoring/moderating service, or whatever else you might use a real-time Discord client to do.
This project is more of a stub right now, and will be more further fleshed out as new features are wired up from discord.py.
Most of the requirements can be found in setup.py, but the most important note is that this requires library requires Django Channels 3+ -- Channels 1.x and 2.x are not supported.
Install the package from github:
pip install channels-discord
-
Add the library to
INSTALLED_APPS
:INSTALLED_APPS = ( ... 'channels_discord', )
-
Create a Consumer
Create a new consumer by inheriting from
DiscordConsumer
:from channels_discord import DiscordConsumer class MyDiscordConsumer(DiscordConsumer): def ready(self): """ Optional hook for actions on connection to Discord """ print('You are now connected to discord!') def my_custom_message(self): """ Use built-in functions to send basic discord actions """ self.send_action('dm', user_id='SOME_DISCORD_USER_ID', text='your message') self.send_action( 'send_to_channel', channel_id='SOME_DISCORD_CHANNEL_ID', text='your message' )
-
Add your consumer(s) to your router
You can use the
discord
type in channelsProtocolTypeRouter
to connect your new consumer to the interface server, and ensure yourdiscord
messages are delivered to the right place:from channels.routing import ProtocolTypeRouter from myapp.consumers import MyDiscordConsumer application = ProtocolTypeRouter({ 'discord': MyDiscordConsumer, })
-
Start the interface server
The interface server can be started by simply running this in the command line:
channels-discord
The server requires that the
token
andapplication
properties be set:-
token
: Either a bot auth token or a user access token from user OAuth access. For information on how to acquire these tokens, please see Discord's developer documentation. -
application
: An import string pointing to the location of your app's ASGI application. Hence, if your app was namedmyapp
, contained an ASGI filed calledasgi.py
, and your ASGI application is namedmy_application
, you could start the server by running:
channels-discord -t 'MY_LONG_BOT_TOKEN' -a 'myapp.asgi:my_application'
You can also set these values using the env variables
CHANNELS_DISCORD_APPLICATION
andDISCORD_BOT_TOKEN
. -