Rapptz 7d08a07cb9 Fix issue with roles being passed in being strings.
Client.add_roles and Client.remove_roles would dispatch to the
Client.replace_roles function. However, replace_roles expects Role
objects while the dispatching involved string IDs. So as a result this
needed another layer of dispatch into a _replace_roles function to do
the actual call that all three of them dispatch to.
2015-12-16 00:14:58 -05:00
2015-12-06 03:10:18 -05:00

discord.py

PyPI PyPI PyPI

discord.py is an API wrapper for Discord written in Python.

This was written to allow easier writing of bots or chat logs. Make sure to familiarise yourself with the API using the documentation.

Breaking Changes

The discord API is constantly changing and the wrapper API is as well. There will be no effort to keep backwards compatibility in versions before v1.0.0.

I recommend that you follow the discussion in the unofficial Discord API discord channel and update your installation periodically through pip install --upgrade discord.py. I will attempt to make note of breaking changes in the API channel.

Installing

Installing is pretty easy.

pip install discord.py

Will install the latest 'stable' version of the library.

If you want to install the development version of the library, then do the following:

pip install git+https://github.com/Rapptz/discord.py@develop

Installing the async beta is similar.

pip install git+https://github.com/Rapptz/discord.py@async

Note that this requires git to be installed.

Quick Example

import discord

client = discord.Client()

@client.async_event
def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

@client.async_event
def on_message(message):
    if message.content.startswith('!test'):
        logs = yield from client.logs_from(message.channel, limit=100)
        counter = 0
        tmp = yield from client.send_message(message.channel, 'Calculating messages...')
        for log in logs:
            if log.author == message.author:
                counter += 1

        yield from client.edit_message(tmp, 'You have {} messages.'.format(counter))
    elif message.content.startswith('!sleep'):
        yield from asyncio.sleep(5)
        yield from client.send_message(message.channel, 'Done sleeping')

def main_task():
    yield from client.login('email', 'password')
    yield from client.connect()

loop = asyncio.get_event_loop()
loop.run_until_complete(main_task())
loop.close()

You can find examples in the examples directory.

Requirements

  • Python 3.4.2+
  • aiohttp library
  • websockets library

Usually pip will handle these for you.

Description
No description provided
Readme MIT 70 MiB
Languages
Python 100%