discord

package module
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2021 License: MIT Imports: 6 Imported by: 9

README

Discord

Go Report Card Godoc Releases LICENSE

A small go library to post messages to a Discord channel using Webhooks.

Setup

You must first configure a Webhook on a Discord server before you can use this package. Instructions can be found on Discord's support website.

Usage

You must first configure the Webhook URL that will be used

discord.WebhookURL = "https://discord.com/api/webhooks/.../..."

Then you can either send a simple text message or a more complex message

Simple Text Message

discord.Say("Hello, world!")

Complex Message

discord.Post(discord.PostOptions{
	Content: "Hello, world!",
	Embeds: []discord.Embed{
		{
			Author: discord.Author{
				Name: "ecnepsnai",
				URL:  "https://github.com/ecnepsnai",
			},
			Title:       "Amazing!",
			Description: "This is a cool embed",
		},
	},
})

File Attachment

Restrictions with Discords Webhook API only supports 1 file upload at 8MiB or less.

var f *io.Reader // Pretend we've opened a file
content := discord.PostOptions{
	Content: "Hello, world!",
}
fileOptions := discord.FileOptions{
	FileName: "my_hot_mixtape.mp3",
	Reader:   f,
}
discord.UploadFile(content, fileOptions)

Documentation

For more information see the package's documentation.

This package is not endorsed by or affiliated with Discord, inc.

Documentation

Overview

Package discord is a go library to quickly send events to discord channels To get started: Create a Webhook on the server, noting down the webhook URL. Then, in your application set the webhook URL variable and then you can use `Say` for a simple text message, or `Post` for a more complex message.

Index

Examples

Constants

This section is empty.

Variables

View Source
var WebhookURL string

WebhookURL your discord webhook URL

Functions

func Post

func Post(content PostOptions) error

Post will post a message to the channel for which the webhook is configured. Unlike `discord.Say()`, Post gives you full control over the message.

Example
package main

import (
	"github.com/ecnepsnai/discord"
)

func main() {
	discord.WebhookURL = "https://discord.com/api/webhooks/.../..."
	discord.Post(discord.PostOptions{
		Content: "Hello, world!",
		Embeds: []discord.Embed{
			{
				Color: 16777215,
				Author: &discord.Author{
					Name: "ecnepsnai",
					URL:  "https://github.com/ecnepsnai",
				},
				Title:       "Amazing!",
				Description: "This is a cool embed",
			},
		},
	})
}
Output:

func Say

func Say(message string) error

Say sends the provided message to the channel for which the webhook is configured. If WebhookURL is not set, this does nothing.

Example
package main

import (
	"github.com/ecnepsnai/discord"
)

func main() {
	discord.WebhookURL = "https://discord.com/api/webhooks/.../..."
	discord.Say("Hello, world!")
}
Output:

func UploadFile added in v1.2.0

func UploadFile(content PostOptions, file FileOptions) error

UploadFile will post a message to the channel for which the webhook is configured and attach the specified file to your message. Rich embeds are not supported and will be ignored if any are specified.

Example
package main

import (
	"io"

	"github.com/ecnepsnai/discord"
)

func main() {
	discord.WebhookURL = "https://discord.com/api/webhooks/.../..."
	var f io.Reader // Pretend we've opened a file
	content := discord.PostOptions{
		Content: "Hello, world!",
	}
	fileOptions := discord.FileOptions{
		FileName: "my_hot_mixtape.mp3",
		Reader:   f,
	}
	discord.UploadFile(content, fileOptions)
}
Output:

Types

type Author

type Author struct {
	Name    string `json:"name,omitempty"`
	URL     string `json:"url,omitempty"`
	IconURL string `json:"icon_url,omitempty"`
}

Author describes the author for an embed

type Embed

type Embed struct {
	Author      *Author `json:"author,omitempty"`
	Title       string  `json:"title,omitempty"`
	URL         string  `json:"url,omitempty"`
	Description string  `json:"description,omitempty"`
	Color       uint32  `json:"color,omitempty"`
	Fields      []Field `json:"fields,omitempty"`
	Thumbnail   *Image  `json:"thumbnail,omitempty"`
	Image       *Image  `json:"image,omitempty"`
	Footer      *Footer `json:"footer,omitempty"`
}

Embed describes embedded content within a message

type Field

type Field struct {
	Name   string `json:"name,omitempty"`
	Value  string `json:"value,omitempty"`
	Inline bool   `json:"inline,omitempty"`
}

Field describes a field for an embed

type FileOptions added in v1.2.0

type FileOptions struct {
	// The file name must include an extension and not include any directories
	FileName string
	Reader   io.Reader
}

FileOptions describes the options for uploading a file

type Footer struct {
	Text    string `json:"text,omitempty"`
	IconURL string `json:"icon_url,omitempty"`
}

Footer describes the footer for an embed

type Image

type Image struct {
	URL string `json:"url,omitempty"`
}

Image describes an image for an embed. If you need to upload an image you must use the `discord.UploadFile()` method, however that does not support rich embeds.

type PostOptions

type PostOptions struct {
	Username  string  `json:"username,omitempty"`
	AvatarURL string  `json:"avatar_url,omitempty"`
	Content   string  `json:"content,omitempty"`
	Embeds    []Embed `json:"embeds,omitempty"`
}

PostOptions describes all possible options for a post

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL