Tidak Ada Deskripsi

Bruce Marriner 1d06c4a3b8 Added helper func New() which greatly simplifies creating a new Discord session. 9 tahun lalu
.travis.yml 2af61ea2c5 First commit of Travis CI file 9 tahun lalu
LICENSE bc323b57a1 Initial commit 9 tahun lalu
README.md d8ef6cec31 Added link to another Discord Go package. 9 tahun lalu
discord.go 1d06c4a3b8 Added helper func New() which greatly simplifies creating a new Discord session. 9 tahun lalu
endpoints.go 35e3966b91 Reworded top comment 9 tahun lalu
restapi.go dd4aef7263 Added AutoMention option to parse MessageSend for any <@ID> tags. 9 tahun lalu
structs.go d9a9a765d8 Removed Cache variable from Session, as it's not used currently. 9 tahun lalu
util.go 35e3966b91 Reworded top comment 9 tahun lalu
voice.go 106c69f28a Added VoiceReady support to voice 9 tahun lalu
wsapi.go f402265fd7 OnReady event will be handled if no callback is set by user. README updated. 9 tahun lalu

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, Nerketur/discordapi

.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