Sem descrição

Bruce Marriner f402265fd7 OnReady event will be handled if no callback is set by user. README updated. há 9 anos atrás
.travis.yml 2af61ea2c5 First commit of Travis CI file há 10 anos atrás
LICENSE bc323b57a1 Initial commit há 10 anos atrás
README.md f402265fd7 OnReady event will be handled if no callback is set by user. README updated. há 9 anos atrás
discord.go 552abf8818 Reworded package comment há 10 anos atrás
endpoints.go 35e3966b91 Reworded top comment há 10 anos atrás
restapi.go dd4aef7263 Added AutoMention option to parse MessageSend for any <@ID> tags. há 9 anos atrás
structs.go d9a9a765d8 Removed Cache variable from Session, as it's not used currently. há 9 anos atrás
util.go 35e3966b91 Reworded top comment há 10 anos atrás
voice.go 106c69f28a Added VoiceReady support to voice há 10 anos atrás
wsapi.go f402265fd7 OnReady event will be handled if no callback is set by user. README updated. há 9 anos atrás

README.md

Discordgo

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

  • See out dgVoice for experimental Discord voice support.

  • See out dgTest for more examples and test code.


GoDoc Go Walker Go report Build Status

Usage Example

package main

import (
	"fmt"
	"os"
	"time"

	"github.com/bwmarrin/discordgo"
)

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

	// Login to the Discord server and store the authentication token
	// 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
	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 messageCreate(s *discordgo.Session, m discordgo.Message) {
	fmt.Printf("%20s %20s %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
  • Go Walker
  • Hand crafted documentation coming eventually.

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
  • Finish Voice support.
  • Add a higher level interface with user friendly helper functions.

Other Discord APIs

Go: gdraynz/go-discord, Xackery/discord

.NET: RogueException/Discord.Net, Luigifan/DiscordSharp

Java: nerd/Discord4J

Node.js: izy521/discord.io, hydrabolt/discord.js, qeled/discordie,

PHP: Cleanse/discord-hypertext, teamreflex/DiscordPHP

Python: Rapptz/discord.py

Ruby: meew0/discordrb

Scala: eaceaser/discord-akka

Rust: SpaceManiac/discord-rs