Aucune description

Bruce Marriner dd4aef7263 Added AutoMention option to parse MessageSend for any <@ID> tags. il y a 9 ans
.travis.yml 2af61ea2c5 First commit of Travis CI file il y a 9 ans
LICENSE bc323b57a1 Initial commit il y a 9 ans
README.md c50848e6a9 Fixed example to actually stay connected :) Thanks Rivalo il y a 9 ans
discord.go 552abf8818 Reworded package comment il y a 9 ans
endpoints.go 35e3966b91 Reworded top comment il y a 9 ans
restapi.go dd4aef7263 Added AutoMention option to parse MessageSend for any <@ID> tags. il y a 9 ans
structs.go dd4aef7263 Added AutoMention option to parse MessageSend for any <@ID> tags. il y a 9 ans
util.go 35e3966b91 Reworded top comment il y a 9 ans
voice.go 106c69f28a Added VoiceReady support to voice il y a 9 ans
wsapi.go 5c2e3c6866 Added DataReady to data websocket il y a 9 ans

README.md

Discordgo

This package provides low level bindings for the Discord REST & Websocket API in the Go Programming Language (Golang).

Check out dgVoice for experimental Discord voice support.

GoDoc Go Walker Go report Build Status

Usage Example

package main

import (
	"fmt"
	"time"

	"github.com/bwmarrin/discordgo"
)

func main() {

	var err error

	// 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
	}

	// Open websocket connection
	err = Session.Open()
	if err != nil {
		fmt.Println(err)
	}

	// Do websocket handshake.
	err = Session.Handshake()
	if err != nil {
		fmt.Println(err)
	}

	// Listen for events.
	Session.Listen()
	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)
}

Documentation

NOTICE : This library and the Discord API are unfinished. Because of that there may be major changes to library functions, constants, and structures.

  • GoDoc
  • Hand crafted documentation coming soon.

What Works

Current package provides a low level direct mapping to the majority of Discord REST and Websock API.

  • Login/Logout
  • Open/Close Websocket and listen for events.
  • Accept/Create/Delete Invites
  • Get User details (Name, ID, Settings, etc)
  • List/Create User Channels (Private Message Channels)
  • List/Create Guilds
  • List/Create Guild Channels
  • List Guild Members
  • Receive/Send Messages to Channels

What's Unfinished

  • Make changes as needed to pass GoLint, GoVet, GoCyclo, etc. (goreportcard.com)
  • Editing User Profile settings
  • Permissions related functions.
  • Functions for Maintenance Status
  • Voice Channel 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.

Other Discord APIs