89 Commits

Author SHA1 Message Date
Hornwitser
5e671a0d0d Move socket and connection state out of Client
Move the socket message handling and Discord connection state tracking
out of the Client class.  The WebSocket class handles the ws4py based
WebSocket to Discord, maintains the keepalive and dispatches
socket_<events> based on activity.  The ConnectionSTate class maintains
the state associated with the WebSocket connection with Discord.  In a
reconnect and switch gateway scenario this state can be kept for a
faster and less disruptive recovery.
2015-10-06 19:09:09 +02:00
Hornwitser
c47e31c82e Add new event system
Add event system based on a public dispatch method in Client.  The new
event system bases itself on two types of events, internal event
handlers and user defined event handlers.  Internal event handlers begin
with 'handle_', and user defined events begin with 'on_'.  Events are
dispatched with dispatch(event_name, *args).  The Client class should be
subclassed and the on_<event> handlers defined in it for responding to
events.  The handle_<event> handlers can the overridden to override the
behaviour of the Client class, though this is not recommended.

The subclassing method allows separation of the instance of the client
and the code that handles it.  (i.e. you don't need the instance of the
client object to define event handlers for it).  Though, the old method
of using the event decorator from the instance will still be supported.
2015-10-06 17:34:23 +02:00
Rapptz
7b3f31f25c Make reply example a bit more meaningful. 2015-10-05 03:29:04 -04:00
Rapptz
bcee23b707 Fix echo example to not infinitely loop. 2015-10-05 03:28:25 -04:00
Rapptz
8c1aa2ccc5 Fix bug with mentions not working. v0.6.3 2015-10-02 21:35:16 -04:00
Rapptz
ba62bc414e Check for 2xx range instead of specific status codes. 2015-10-02 18:37:10 -04:00
Rapptz
94e6b4a8ef Fix server attribute not being set in GUILD_MEMBER_ADD. v0.6.2 2015-10-02 15:58:23 -04:00
Rapptz
7f252468b3 Fix another logging error 2015-10-02 15:56:51 -04:00
Rapptz
74db314d30 Fix an error with logging in the login method. v0.6.1 2015-09-27 20:22:44 -04:00
Rapptz
a04a526566 Bump to version v0.6.0 v0.6.0 2015-09-25 19:42:13 -04:00
Rapptz
3a58f9517a Refactor websocket creation to its own function. 2015-09-25 17:03:01 -04:00
Rapptz
951dc922b0 Add edit_channel. 2015-09-25 16:43:34 -04:00
Rapptz
120b9cd3b2 Listen to CHANNEL_UPDATE events and add on_channel_update 2015-09-25 16:09:10 -04:00
Rapptz
773fc0ad97 Add support for channel topics. 2015-09-25 15:54:04 -04:00
Rapptz
a9a030cdb2 Move permission overwrite construction to the Channel constructor. 2015-09-25 15:53:45 -04:00
Rapptz
850d024684 PRESENCE_UPDATE now updates the user as well.
This means that it calls on_member_update just like the
GUILD_MEMBER_UPDATE event in an effort to keep some backwards compat.
2015-09-25 14:48:45 -04:00
Rapptz
efc84c8f1f Most functions should now return something more meaningful.
Basically a lot of the request functions now return a booleean
indicating if the request was successful or not.
2015-09-24 23:23:41 -04:00
Rapptz
81a9330f46 Add TTS support for messages. 2015-09-20 02:59:59 -04:00
Rapptz
9559f02f95 accept_invite now works on some invite URLs. 2015-09-19 18:42:19 -04:00
Rapptz
6c54b24a6f Remove duplicated create_channel function. 2015-09-19 18:42:19 -04:00
Hornwitser
a4c152cebc Fix keep_alive running after logout()
_keep_alive_handler would set up another keep alive after the first one
by creating a new threading.Timer object, but Client would only keep
track of the first timer object.  Thus casing the keep alive to continue
running after Client.logout calls cancel() on it's timer object, as it
no longer references the actual timer object waiting for the keep alive.

Fix by replacing _keep_alive_handler with a threading.Thread subclass
that sends keep_alives of the given interval and exits when its stop
event is set.
2015-09-19 18:32:39 +02:00
Rapptz
bbf1c5418b Add support for logging. 2015-09-16 17:27:52 -04:00
Rapptz
a2b981d19e Document discord.utils.find function 2015-09-14 00:08:43 -04:00
Rapptz
a5cf6d275d Add ability to edit or delete roles from a sever. 2015-09-13 22:28:37 -04:00
Rapptz
f59ab28741 Add utils.find helper function. 2015-09-13 22:28:02 -04:00
Rapptz
d93c18b28e Add get_default_role for servers to get the 'everyone' role. 2015-09-07 18:40:23 -04:00
Rapptz
9119f61caa Fix KeyError with events. v0.5.1 2015-09-05 15:52:48 -04:00
Rapptz
73919fe152 Documentation fixes and version bump. v0.5.0 2015-09-05 01:05:08 -04:00
Rapptz
eed4b428aa Add the ability to accept invites. 2015-09-05 00:57:52 -04:00
Rapptz
4aecd5f7b5 Add on_error event for doing something about uncaught exceptions. 2015-09-05 00:46:18 -04:00
Rapptz
568c2a773b Remove owner_id from Server and use owner instead.
owner will be the actual Member who owns the server.
2015-09-04 23:56:00 -04:00
Rapptz
e11aaa0566 Add on_member_update event. 2015-09-04 23:50:32 -04:00
Rapptz
80eb567520 Add support for creating invites. 2015-09-04 23:23:47 -04:00
Rapptz
b4e6591c9d Refactor parse_time into its own utils file. 2015-09-04 22:00:22 -04:00
Rapptz
b00ad4ad79 Use kwargs if the number of arguments needed is too many. 2015-09-04 21:16:27 -04:00
Rapptz
5f69fe9b07 Add ability to delete channels. 2015-09-04 08:30:59 -04:00
Rapptz
0e29d5a136 Add the ability to create channels. 2015-09-04 08:02:31 -04:00
Rapptz
7ab73bdf45 Add support for editing your profile. 2015-09-04 06:46:19 -04:00
Rapptz
9deb743df3 Store email in the client as an attribute. 2015-09-03 19:49:51 -04:00
Rapptz
81aa76021a Update README. 2015-09-03 07:17:13 -04:00
Rapptz
54fa8dea69 Add the ability to kick, ban and unban users from a server. 2015-09-03 06:41:35 -04:00
Rapptz
c98a723f06 Add on_server_create and on_server_delete events. 2015-09-03 04:22:46 -04:00
Rapptz
4124b097c7 WebSocket gateway now properly uses the auth headers. 2015-09-03 03:59:26 -04:00
Rapptz
afdada133f Permissions are now properties rather than functions.
This allows you to set or retrieve specific bits through a
higher level API to facilitate editing in the future.
2015-09-03 03:40:56 -04:00
Rapptz
b6ab4d54d3 Sandbox some events that didn't get sandboxed. 2015-09-03 03:40:55 -04:00
megamit
6a40a5da2e Fix issue with author changing type
When cycling through the attributes of the data json 'author' within 'message' which was previously a user object is overwritten with a dictionary. This causes an AttributeError to be thrown ( and silently swallowed... thanks except: pass) whenever any of its attributes are referenced in the form message.author.x. User data should change in this step and the user object should not be modified for any reason so its safe to skip updating it.
2015-09-02 23:07:36 +01:00
Rapptz
e60777e68b Document exceptions and change conf.py version detection. v0.4.1 2015-08-28 17:24:35 -04:00
Rapptz
abc32f5b5d Remove unnecessary comment. 2015-08-28 16:58:03 -04:00
Rapptz
b7fc383013 Python3 import fixes. 2015-08-28 16:55:40 -04:00
Rapptz
faa7b726cd Quick documentation fixes 2015-08-27 22:17:49 -04:00