Commit graph

231 commits

Author SHA1 Message Date
Bruce Marriner
d557bb24a5 Extra logging for non OP0 events, for now. 2016-04-28 21:50:57 -05:00
Bruce Marriner
f6de2b2c98 gateway, voice, & logging improvements
We now store teh sessionID of the gateway connection for later use. We
are now caching the gateway url and will use it until unable to connect
to that gateway.  We're not longer smashing the VoiceConnections map
during reconnects which was causing Voice problems. Slight change to
log output format.
2016-04-28 21:15:32 -05:00
Bruce Marriner
94770635a9 Event handing improvements.
Corrected the Event struct to match it's new state based on Discord docs
and started tracking sequence number and sending it with heatbeats.
Also, move cleanup and comment improvements.
2016-04-28 16:59:45 -05:00
Bruce Marriner
2ac4665a4e Clean up Gateway API Event handling. 2016-04-28 14:22:43 -05:00
Bruce Marriner
dd69a7e27f Added logging statements 2016-04-28 09:27:57 -05:00
Bruce Marriner
250579eb3a Fix incorrect handling of VOICE_SERVER_UPDATE
With this change, discordgo now properly supports
VOICE_SERVER_UPDATE events and will upon request
close existing connections and then re-open the
connection to the new voice endpoint.  This allows
voice gateway redirects and voice region changes
to work even while a client is sending audio.
2016-04-28 07:43:31 -05:00
Bruce
5398a481cc Merge pull request #167 from b1naryth1ef/feature/gateway-v4
Support Gateway v4
2016-04-26 20:15:02 -05:00
Bruce Marriner
4cac19c3f9 Do not start udp listener if deaf.
If you call VoiceChannelJoin and set deaf to true
then the library will not start a udp listener
2016-04-25 22:00:30 -05:00
Bruce Marriner
a258ec3011 Slight change to error message. 2016-04-25 15:33:40 -05:00
Bruce
cb6b3b956e Revert "Add sharding support" 2016-04-25 13:24:00 -05:00
Bruce
b14a2ce8da Merge pull request #171 from iopred/develop
Fix unmarshall error with Invite, improve error logging.
2016-04-23 22:35:51 -05:00
Chris Rhodes
bf9dda8404 Use json.Unmarshal in event handling so errors are better. 2016-04-23 11:58:19 -07:00
Chris Rhodes
8be21fb539 Fix unmarshall error with Invite, improve error logging. 2016-04-23 11:03:07 -07:00
andrei
92caf31b7f Implement Guild Sharding
This implements the upcoming change (see hammerandchisel/discord-api-docs#17)
to add guild-sharding support directly in the Discord Gateways.
2016-04-19 18:09:38 -07:00
andrei
ecc6e884c4 Support Gateway v4
This adds support for gateway v4 (which we're technically already
running; whoops). Really it just moves the version to the URL,
and explicitly uses JSON as the encoding. Everything should be supported
from previous commits.
2016-04-13 01:38:30 -07:00
Bruce Marriner
836e78d3d9 Pass struct along with OnEvent event. 2016-04-11 16:56:43 -05:00
Chris Rhodes
4d4f8f7741 Always handle the raw event. 2016-03-21 10:50:56 -07:00
jonas747
d1f25d8561 Changed fmt.Print to log.Print 2016-03-21 17:13:39 +01:00
Bruce Marriner
b1ac010731 Unexported WaitUntilConnected
This isn't needed now that the ChannelVoiceJoin waits
for the connection before returning, or returns an error.
2016-03-17 15:57:40 -05:00
Bruce Marriner
513facf391 More cleanup, moving things around.. 2016-03-17 15:54:07 -05:00
Bruce Marriner
3ffbbdcc56 Unexport UDPConn as it is no longer needed externally. 2016-03-17 14:39:55 -05:00
Bruce Marriner
397d04b1ff Fix a couple bugs I just created. 2016-03-17 14:02:19 -05:00
Bruce Marriner
c359bf8395 Cleanup 2016-03-17 13:33:57 -05:00
Bruce Marriner
383a3cf1e0 Delete voice connection from map on error 2016-03-16 22:48:48 -05:00
Bruce Marriner
ee07ed8afe Only return valid existing voice connections 2016-03-16 22:47:53 -05:00
Bruce Marriner
7ec5304bc9 ChannelVoiceJoin now waits for the connection.
You can return to the previous behaviour just by calling
the function as a goroutine.  However I feel most uses of it
require the connection to be ready before the next step.
2016-03-15 08:30:05 -05:00
Bruce Marriner
50cc4df965 Some, slightly messy, fixes to get voice -working-. 2016-03-11 23:19:35 -06:00
andrei
5dc0b9f2a1 Add connect timeout, fix ChannelVoiceJoin "leaking" connections 2016-03-08 02:36:00 -08:00
andrei
b48e8c992e Track voice state changes, expose stuff, add channel changing 2016-03-07 15:41:02 -08:00
andrei
1fc0e2053b Add support for multiple voice connections
With the upcoming API changes, Discord will be allowing bot users to be
onnected to more than one voice channel at a time. This commit is a
first stab at implementing that functionality in discordgo.

Voice works pretty good right now, ideally the next step is to cleanup
some of the channel-spam and weird blocking-spots.
2016-03-05 01:05:18 -08:00
Chris Rhodes
abc0e5b095 Work around a Discord server issue. 2016-02-22 00:11:39 -08:00
Bruce Marriner
94f0aacc0a websocket heartbeat is now simplier. Closes #121 2016-02-20 15:19:55 -06:00
Chris Rhodes
457b03f66e Fix deadlock because I'm dumb. 2016-02-19 23:00:41 -08:00
Chris Rhodes
79247272ff Handler updates, no backwards incompatible API changes.
AddHandler now returns a func that can remove the handler.
The handlers map is now guarded by its own mutex.
Moved eventMap to events.go for readability.
Improved documentation.
2016-02-19 22:28:21 -08:00
Bruce Marriner
a5130cff51 Added large_threshold to connection and set to 250, closes #41 2016-02-18 22:18:03 -06:00
Bruce
296a118712 Merge pull request #113 from iopred/develop
Clean up mutexes around s.handlers so they exist only in discord.go
2016-02-18 21:48:31 -06:00
Bruce Marriner
eec0faa7b3 Handle VOICE_SERVER_UPDATE better, closes #115 2016-02-18 21:42:23 -06:00
Bruce Marriner
b38745945b Added support for leaving voice channel, closes #118 2016-02-18 21:24:14 -06:00
Bruce Marriner
60149f70bb Allow calling ChannelVoiceJoin even after connected to voice, closes 2016-02-18 02:24:29 -06:00
Chris Rhodes
d22b7ffc90 Clean up mutexes around s.handlers so they exist only in discord.go 2016-02-17 23:17:31 -08:00
Chris Rhodes
b083ce00c7 Un-expose handlers. Clean up Session struct. 2016-02-14 21:58:29 -08:00
Chris Rhodes
6fa99712ef Finish converting large switch statement into a map of functions. 2016-02-14 18:48:37 -08:00
Chris Rhodes
8ffaa85b0b Thread safety and more events. 2016-02-14 13:41:56 -08:00
Chris Rhodes
fb6ae92555 Add basic support for mapped event handlers. 2016-02-14 13:17:20 -08:00
Chris Rhodes
7d112b562e Mirror the Voice guard. 2016-02-08 10:08:24 -08:00
Chris Rhodes
b2c76de22e Merge remote-tracking branch 'bwmarrin/develop' into voice 2016-02-08 10:06:17 -08:00
Chris Rhodes
7858f999b1 Handle nil errors and default handler properly. 2016-02-08 10:03:32 -08:00
Bruce Marriner
348d9482d0 Removed unneeded blank line :) 2016-02-08 10:26:44 -06:00
Bruce Marriner
1a0e4c05fa Call user callback for VOICE_STATE_UPDATE events, closes #101 2016-02-08 10:18:08 -06:00
Chris Rhodes
40b969d7c3 VoiceServerUpdate and VoiceStateUpdate 2016-02-08 08:05:08 -08:00
Bruce Marriner
edc09778a7 Linting. 2016-01-28 08:36:09 -06:00
Bruce Marriner
546cd85303 error strings should not end with punctuation. 2016-01-27 23:38:38 -06:00
Bruce Marriner
6bb417af7a Removed unreachable (and unneeded) code x3! 2016-01-27 23:37:46 -06:00
Bruce Marriner
5ae93327e3 Removed unreachable (and unneeded) code. 2016-01-27 23:36:34 -06:00
Bruce Marriner
457d27b35e Removed unreachable (and unneeded) code. 2016-01-27 23:35:42 -06:00
Chris Rhodes
fd32614a63 Make compression optional, clean up some comments and unused fields. 2016-01-24 09:49:41 -08:00
Chris Rhodes
5a3740df0c 💩 2016-01-23 21:12:57 -08:00
Chris Rhodes
a08dde4262 Support zlib compression. 2016-01-23 21:09:30 -08:00
Chris Rhodes
25a1b2ea48 Close. 2016-01-23 20:24:52 -08:00
Chris Rhodes
e94e14e9d2 Support ShouldReconnectOnError with exponential backoff up to 10 minutes. 2016-01-21 14:15:24 -08:00
Chris Rhodes
ddddfa3644 Prevent heartbeat from sending on nil websocket. 2016-01-21 11:15:44 -08:00
Chris Rhodes
d6d6c749ea Prevent listen from reading from nulled out web socket. 2016-01-21 11:11:18 -08:00
Chris Rhodes
8b39278c3e Get rid of Listen. 2016-01-21 10:58:13 -08:00
Chris Rhodes
e8d8f03214 Clean up ready timing, fix potential race with starting heartbeats. 2016-01-21 09:33:05 -08:00
Chris Rhodes
c4869d7a43 Remove handshake. 2016-01-21 09:19:20 -08:00
Chris Rhodes
2a9538e9f1 I must stop doing last minute changes. 2016-01-20 23:01:20 -08:00
Chris Rhodes
7a9b9428ee Re-add old todo. 2016-01-20 22:52:42 -08:00
Chris Rhodes
cd55a59ff9 Refactor open/close logic. Support OnConnect and OnDisconnect. 2016-01-20 22:47:34 -08:00
Chris Rhodes
6b73b588ba Message tracking. 2016-01-16 01:13:40 -08:00
Chris Rhodes
0f38b22ca1 Message state tracking. 2016-01-16 00:20:41 -08:00
Chris Rhodes
fce9a7dedc Make unmarshal methods not on the struct, that was stupid. 2016-01-11 17:39:25 -08:00
Chris Rhodes
3acc68d3ef Fix wsapi 2016-01-11 17:22:37 -08:00
Chris Rhodes
f15b389ac8 Return a consistent JSON Unmarshal error. 2016-01-11 16:37:17 -08:00
Bruce Marriner
6274ab9053 Hackish fix so we don't try to close nil or closed channels. 2016-01-11 14:05:22 -06:00
Bruce Marriner
093d3be770 More improvements to voice support 2016-01-10 18:01:05 -06:00
Bruce Marriner
9583ef4e19 Return immediately if err getting gateway. 2016-01-10 14:46:44 -06:00
Bruce Marriner
1b3817c7e1 First re-write of voice support. BREAKING CHANGE. 2016-01-09 20:56:30 -06:00
Chris Rhodes
5544372242 I think I got it right this time ;) 2016-01-08 11:28:44 -08:00
Chris Rhodes
f05f79e24d Fix subtle difference between events with state tracking and not, when the handler is null. 2016-01-08 10:39:24 -08:00
Chris Rhodes
764371c9ad 👌 2016-01-08 10:31:34 -08:00
Chris Rhodes
be8e0de5c6 Merge remote-tracking branch 'bwmarrin/develop' into stateperf 2016-01-08 10:26:19 -08:00
Chris Rhodes
c842676deb Don't unmarshall if it won't be used. 2016-01-08 10:24:29 -08:00
Chris Rhodes
0d7b6f7e76 Convert structs and api to use pointers. 2016-01-08 09:37:34 -08:00
Bruce Marriner
d998b1fac2 Normalize name capitalization 2016-01-07 14:15:03 -06:00
Bruce Marriner
301fb980d3 Updated copyright year, cleaned up some comments. 2016-01-07 13:50:44 -06:00
Bruce Marriner
a3ac679d76 Merge branch 'develop' of https://github.com/bwmarrin/Discordgo into develop 2016-01-04 13:14:33 -06:00
Bruce Marriner
1a5c4b7b0d Moved session close func to discord.go 2016-01-04 13:14:17 -06:00
Bruce Marriner
b329c935ac Added check to prevent data websocket Listen func from running more than one instance. 2016-01-04 13:06:09 -06:00
Bruce Marriner
666cbeb6a6 Data websocket Heartbeat now uses a chan instead of bool to track state 2016-01-04 12:49:46 -06:00
Chris Rhodes
cd01a34cdb Handle GUILD_EMOJI_UPDATE and track Emoji in state. 2016-01-03 11:56:46 -08:00
Bruce Marriner
ed1076361e Changed the order of the heartbeat lock to be a little better. 2016-01-02 22:34:54 -06:00
Bruce Marriner
825144012d Prevent data websocket heartbeat from running more than once, closes #43 2016-01-02 22:32:02 -06:00
Chris Rhodes
66052d0a9c Rename methods. 2016-01-02 13:09:20 -08:00
Chris Rhodes
9ba6d5b7c1 Make state tracking optional. 2016-01-02 12:01:03 -08:00
Chris Rhodes
b2ef55ae9c Cleanup before mailing. 2016-01-01 22:56:32 -08:00
Chris Rhodes
4e23e5fc35 Implement state tracking.
Currently maintains a list of Guilds (Members/Channels) and PrivateChannels.
2016-01-01 22:47:19 -08:00
Chris Rhodes
3aaa95d4f9 Tiny cleanup 👌 2015-12-31 12:46:35 -08:00
Chris Rhodes
0e9b8b8714 Small cleanup for initial error handling. 2015-12-31 12:44:02 -08:00
Chris Rhodes
03379f7128 Fix OnReady. 2015-12-31 12:40:36 -08:00
Chris Rhodes
f1fc2f0996 Add GuildBan handling in wsapi. Closes #24.
Also refactor event handling so error logging is unified.
2015-12-31 12:33:46 -08:00
Bruce
5c64020544 Merge pull request #37 from iopred/updatestatus
Make update status a little more idiomatic.
2015-12-29 12:58:48 -06:00
Bruce Marriner
6991af8500 Added support for USER_SETTINGS_UPDATE websocket event, closes #11 2015-12-29 12:45:30 -06:00
Chris Rhodes
b5bfa454d0 Do not send game if one is not provided (instead of not sending game.name) 2015-12-29 10:35:00 -08:00
Chris Rhodes
974d5862a4 Make update status a little more idiomatic.
This also reduces the line count a smidge.
2015-12-28 19:05:42 -08:00
Bruce Marriner
bb4f63775e Updated to support new Discord method of sending game playing data, closes #34 2015-12-23 23:51:20 -06:00
Bruce Marriner
0360acbaa0 Added support for USER_UPDATE websocket event, closes #28 2015-12-21 11:24:48 -06:00
Bruce Marriner
a878a5d306 Added comments 2015-12-20 00:12:40 -06:00
Bruce Marriner
332141b083 Updated VoiceChannelJoin func to use struct for data sent over websocket. Also returns an error now. 2015-12-18 20:51:48 -06:00
Bruce Marriner
d59d47967c Converted to using structs for data websocket handshake. Also using VERSION variable in $browser setting 2015-12-18 15:09:34 -06:00
Bruce Marriner
383b4645da Finished support for sending presense/game status updates. Closes #18 2015-12-18 13:44:56 -06:00
Bruce Marriner
f402265fd7 OnReady event will be handled if no callback is set by user. README updated. 2015-12-06 19:05:13 -06:00
Bruce Marriner
5c2e3c6866 Added DataReady to data websocket 2015-11-25 19:30:58 -06:00
Bruce Marriner
e384d2d66f Few notes, also, send 1st data websocket heartbeat immediately. 2015-11-25 08:47:15 -06:00
Bruce Marriner
87f433e2d8 VOICE_STATE_UPDATE should not fall though to Default right now. 2015-11-24 13:42:03 -06:00
Bruce Marriner
35e3966b91 Reworded top comment 2015-11-23 10:16:23 -06:00
Bruce Marriner
abe55ecca7 Some improvements to comments. 2015-11-23 09:45:40 -06:00
Bruce Marriner
3e605c64a6 Moving all structs to structs.go for now. 2015-11-22 14:21:41 -06:00
Bruce Marriner
d9aeb4926d Experimental voice code added :) 2015-11-18 08:18:46 -06:00
Bruce Marriner
f655167761 Several updates to make library more idiomatic Go 2015-11-16 21:39:39 -06:00
Bruce Marriner
91207ece15 Large additions to REST API and Websocket API. 2015-11-16 13:05:56 -06:00
Bruce Marriner
a3903aaa50 Fixes to GuildRole events 2015-11-14 21:23:01 -06:00
Bruce Marriner
05ff822438 Stop trying to fight Discord's Int's as Strings and just use strings. 2015-11-14 21:02:35 -06:00
Bruce Marriner
3794c1a31e Added Guild Role Update handler 2015-11-13 19:38:35 -06:00
Bruce Marriner
f885ce38d2 Added support for GUILD_UPDATE event 2015-11-13 09:48:56 -06:00
Bruce Marriner
3d9e980619 Several bug fixes causing json unmarshal errors. 2015-11-13 09:36:11 -06:00
Bruce Marriner
074d1bcdae Huge update to Websocket support.
Changed "Server" to "Guild" to remain consistant with Discords
API naming.
2015-11-12 23:25:48 -06:00
Bruce Marriner
e8b77083df Inital implementation for callback funcs handling Websocket events 2015-11-12 09:59:37 -06:00
Bruce Marriner
2c3ca777f9 Clean up, notes 2015-11-09 14:22:36 -06:00
Bruce Marriner
fff4fa20e9 Clean up 2015-11-08 21:57:49 -06:00
Bruce Marriner
e6789fde74 Inital add of Websockets 2015-11-08 21:42:16 -06:00
Bruce Marriner
adac11495a Inital addition of Websocket handling. Lots of moving things around. 2015-11-08 19:26:46 -06:00