You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andrei ecdc7f3073 Start working on cleaning up docs 9 years ago
disco Start working on cleaning up docs 9 years ago
docs Start working on cleaning up docs 9 years ago
examples Improve HashMap.select, rebuild BasicPlugin 10 years ago
.gitignore Fixes, Cleanup, Plugin Storage 10 years ago
MANIFEST.in Add manifest file 10 years ago
README.md Fixed minor typo in README for running example. (#10) 10 years ago
requirements.txt Bump holster, fix SimpleLimiter race error, fix to_dict recursion 10 years ago
setup.py Temporarily rename to disco-py on pypi 10 years ago

README.md

disco

Disco is a simple and extendable library for the Discord API. Join the Official channel and chat here.

  • Expressive, functional interface that gets out of the way
  • Built for high-performance and efficiency
  • Configurable and modular, take the bits you need
  • Full support for Python 2.x/3.x
  • Evented networking and IO using Gevent

WARNING

Disco is currently in an early-alpha phase. What you see today may change a lot tomorrow. If you are looking to build a serious bot with this, wait for a stable release.

Installation

Disco was built to run both as a generic-use library, and a standalone bot toolkit. Installing disco is as easy as running pip install disco-py, however some extra packages are recommended for power-users, namely:

Name Reason
requests[security] adds packages for a proper SSL implementation
ujson faster json parser, improves performance
erlpack ETF parser, only Python 2.x, run with the --encoder=etf flag
gipc Gevent IPC, required for autosharding

Examples

Simple bot using the builtin bot authoring tools:

from disco.bot import Bot, Plugin


class SimplePlugin(Plugin):
    # Plugins provide an easy interface for listening to Discord events
    @Plugin.listen('ChannelCreate')
    def on_channel_create(self, event):
        event.channel.send_message('Woah, a new channel huh!')

    # They also provide an easy-to-use command component
    @Plugin.command('ping')
    def on_ping_command(self, event):
        event.msg.reply('Pong!')

    # Which includes command argument parsing
    @Plugin.command('echo', '<content:str...>')
    def on_echo_command(self, event, content):
        event.msg.reply(content)

Using the default bot configuration, we can now run this script like so:

python -m disco.cli --token="MY_DISCORD_TOKEN" --run-bot --plugin simpleplugin

And commands can be triggered by mentioning the bot (configued by the BotConfig.command_require_mention flag):