OnReady event will be handled if no callback is set by user. README updated.

This commit is contained in:
Bruce Marriner 2015-12-06 19:05:13 -06:00
parent d9a9a765d8
commit f402265fd7
2 changed files with 68 additions and 42 deletions

View file

@ -3,9 +3,13 @@
This package provides low level bindings for the [Discord](https://discordapp.com/)
REST & Websocket API in the [Go](https://golang.org/) Programming Language (Golang).
Check out [dgVoice](https://github.com/bwmarrin/dgvoice) for **experimental**
* See out [dgVoice](https://github.com/bwmarrin/dgvoice) for **experimental**
Discord voice support.
* See out [dgTest](https://github.com/bwmarrin/dgTest) for more examples and test code.
----
[![GoDoc](https://godoc.org/github.com/bwmarrin/discordgo?status.svg)](https://godoc.org/github.com/bwmarrin/discordgo)
[![Go Walker](http://gowalker.org/api/v1/badge)](https://gowalker.org/github.com/bwmarrin/discordgo)
[![Go report](http://goreportcard.com/badge/bwmarrin/discordgo)](http://goreportcard.com/report/bwmarrin/discordgo)
@ -17,6 +21,7 @@ package main
import (
"fmt"
"os"
"time"
"github.com/bwmarrin/discordgo"
@ -25,20 +30,33 @@ import (
func main() {
var err error
var username, password, token string
// Check for Username and Password arguments
if len(os.Args) < 2 || len(os.Args) > 3 {
fmt.Println("You must provide a username and password as arguments. See below example.")
fmt.Println(os.Args[0], " [username] [password]")
return
}
// Set username and password from command line arguments.
username = os.Args[1]
password = os.Args[2]
// Create a new Discord Session and set a handler for the OnMessageCreate
// event that happens for every new message on any channel
Session := discordgo.Session{
OnMessageCreate: messageCreate,
OnReady: ready,
}
// Login to the Discord server and store the authentication token
// inside the Session
Session.Token, err = Session.Login("coolusername", "cleverpassword")
if err != nil {
fmt.Println(err)
return
// inside the Session, unless the token was already provided.
if token == "" {
Session.Token, err = Session.Login(username, password)
if err != nil {
fmt.Println(err)
return
}
}
// Open websocket connection
@ -58,14 +76,8 @@ func main() {
return
}
func ready(s *discordgo.Session, r discordgo.Ready) {
// start the Heartbeat. This is required
// to keep the websocket connection open
go s.Heartbeat(r.HeartbeatInterval)
}
func messageCreate(s *discordgo.Session, m discordgo.Message) {
fmt.Printf("%25d %s %20s > %s\n", m.ChannelID, time.Now().Format(time.Stamp), m.Author.Username, m.Content)
fmt.Printf("%20s %20s %20s > %s\n", m.ChannelID, time.Now().Format(time.Stamp), m.Author.Username, m.Content)
}
```
@ -75,8 +87,9 @@ func messageCreate(s *discordgo.Session, m discordgo.Message) {
Because of that there may be major changes to library functions, constants,
and structures.
- [GoDoc](https://godoc.org/github.com/bwmarrin/discordgo)
- Hand crafted documentation coming soon.
- [![GoDoc](https://godoc.org/github.com/bwmarrin/discordgo?status.svg)](https://godoc.org/github.com/bwmarrin/discordgo)
- [![Go Walker](http://gowalker.org/api/v1/badge)](https://gowalker.org/github.com/bwmarrin/discordgo)
- Hand crafted documentation coming eventually.
# What Works
@ -99,27 +112,39 @@ REST and Websock API.
* Editing User Profile settings
* Permissions related functions.
* Functions for Maintenance Status
* Voice Channel support.
* Finish Voice support.
* Add a higher level interface with user friendly helper functions.
# Credits
Special thanks goes to both the below projects who helped me get started with
this project. If you're looking for alternative Golang interfaces to Discord
please check both of these out.
* https://github.com/gdraynz/go-discord
* https://github.com/Xackery/discord
# Other Discord APIs
- [go-discord](https://github.com/gdraynz/go-discord)
- [discord](https://github.com/Xackery/discord)
- [discord.py](https://github.com/Rapptz/discord.py)
- [discord.js](https://github.com/discord-js/discord.js)
- [discord.io](https://github.com/izy521/discord.io)
- [Discord.NET](https://github.com/RogueException/Discord.Net)
- [DiscordSharp](https://github.com/Luigifan/DiscordSharp)
- [Discord4J](https://github.com/knobody/Discord4J)
- [discordrb](https://github.com/meew0/discordrb)
**Go**:
[gdraynz/**go-discord**](https://github.com/gdraynz/go-discord),
[Xackery/**discord**](https://github.com/Xackery/discord)
**.NET**:
[RogueException/**Discord.Net**](https://github.com/RogueException/Discord.Net),
[Luigifan/**DiscordSharp**](https://github.com/Luigifan/DiscordSharp)
**Java**:
[nerd/**Discord4J**](https://github.com/nerd/Discord4J)
**Node.js**:
[izy521/**discord.io**](https://github.com/izy521/discord.io),
[hydrabolt/**discord.js**](https://github.com/hydrabolt/discord.js),
[qeled/**discordie**](https://github.com/qeled/discordie),
**PHP**:
[Cleanse/**discord-hypertext**](https://github.com/Cleanse/discord-hypertext),
[teamreflex/**DiscordPHP**](https://github.com/teamreflex/DiscordPHP)
**Python**:
[Rapptz/**discord.py**](https://github.com/Rapptz/discord.py)
**Ruby**:
[meew0/**discordrb**](https://github.com/meew0/discordrb)
**Scala**:
[eaceaser/**discord-akka**](https://github.com/eaceaser/discord-akka)
**Rust**:
[SpaceManiac/**discord-rs**](https://github.com/SpaceManiac/discord-rs)

View file

@ -121,16 +121,17 @@ func (s *Session) event(messageType int, message []byte) (err error) {
switch e.Type {
case "READY":
var st Ready
if err := json.Unmarshal(e.RawData, &st); err != nil {
fmt.Println(e.Type, err)
printJSON(e.RawData) // TODO: Better error logging
return err
}
if s.OnReady != nil {
var st Ready
if err := json.Unmarshal(e.RawData, &st); err != nil {
fmt.Println(e.Type, err)
printJSON(e.RawData) // TODO: Better error logging
return err
}
s.OnReady(s, st)
return
}
go s.Heartbeat(st.HeartbeatInterval)
case "VOICE_SERVER_UPDATE":
// TEMP CODE FOR TESTING VOICE
var st VoiceServerUpdate