(Golang) Go bindings for Discord

Overview

DiscordGo

GoDoc Go report Build Status Discord Gophers Discord API

DiscordGo is a Go package that provides low level bindings to the Discord chat client API. DiscordGo has nearly complete support for all of the Discord API endpoints, websocket interface, and voice interface.

If you would like to help the DiscordGo package please use this link to add the official DiscordGo test bot dgo to your server. This provides indispensable help to this project.

  • See dgVoice package for an example of additional voice helper functions and features for DiscordGo.

  • See dca for an experimental stand alone tool that wraps ffmpeg to create opus encoded audio appropriate for use with Discord (and DiscordGo).

For help with this package or general Go discussion, please join the Discord Gophers chat server.

Getting Started

Installing

This assumes you already have a working Go environment, if not please see this page first.

go get will always pull the latest tagged release from the master branch.

go get github.com/bwmarrin/discordgo

Usage

Import the package into your project.

import "github.com/bwmarrin/discordgo"

Construct a new Discord client which can be used to access the variety of Discord API functions and to set callback functions for Discord events.

discord, err := discordgo.New("Bot " + "authentication token")

See Documentation and Examples below for more detailed information.

Documentation

NOTICE: This library and the Discord API are unfinished. Because of that there may be major changes to library in the future.

The DiscordGo code is fairly well documented at this point and is currently the only documentation available. Both GoDoc and GoWalker (below) present that information in a nice format.

  • GoDoc
  • Go Walker
  • Hand crafted documentation coming eventually.

Examples

Below is a list of examples and other projects using DiscordGo. Please submit an issue if you would like your project added or removed from this list.

Troubleshooting

For help with common problems please reference the Troubleshooting section of the project wiki.

Contributing

Contributions are very welcomed, however please follow the below guidelines.

  • First open an issue describing the bug or enhancement so it can be discussed.
  • Try to match current naming conventions as closely as possible.
  • This package is intended to be a low level direct mapping of the Discord API, so please avoid adding enhancements outside of that scope without first discussing it.
  • Create a Pull Request with your changes against the master branch.

List of Discord APIs

See this chart for a feature comparison and list of other Discord API libraries.

Special Thanks

Chris Rhodes - For the DiscordGo logo and tons of PRs.

Comments
  • Slash commands

    Slash commands

    Here we go! Slash commands are ready to use (almost). So... I saw that everyone wants it, so I'm opening it now, not when I will complete it. Now it includes some example in examples/ folder of using this new feature and basic API of slash commands (CRUD).

    Well, enjoy!

    feature breaking changes 
    opened by FedorLap2006 44
  • Rewrite of the library

    Rewrite of the library

    When I first time reading and trying to understand how DiscordGo works... I was a bit confused and went into many tutorials, but DiscordGophers mostly helped me. So... now I'm here, to propose rewrite this library with the newest best practices, and also caching, logging and many more features. I have a fork of this project, the main work on rewriting will be there. Here will be showed the progress of rewriting. And... one more thing: any contributors to this rewrite will be really welcomed.

    In continuation, I want to discuss and make structure of discordgo better and easier, especially for beginners, but for advanced users too.

    Down here will be shown my vision and some already made examples of how DiscordGo might look at the end of the work.

    So, thanks everyone for attention.

    opened by FedorLap2006 23
  • Go path returns error

    Go path returns error

    go get github.com/bwmarrin/discordgo

    golang.org/x/crypto/poly1305

    /usr/local/go/src/golang.org/x/crypto/poly1305/sum_amd64.s:8 6a: No such file or directory: textflag.h

    github.com/gorilla/websocket

    /usr/local/go/src/github.com/gorilla/websocket/compression.go:95: undefined: sync.Pool

    How do I fix this? Did I do something wrong?

    opened by ren-kun 23
  • Add Guild Scheduled Event Support

    Add Guild Scheduled Event Support

    Discord just released a new feature: Guild Scheduled Event

    Today I will start to add all endpoints listed in the API Reference (https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event)

    Following this issue : https://github.com/bwmarrin/discordgo/issues/1031

    feature high priority 
    opened by 42Atomys 22
  • i can't receive sound from discord

    i can't receive sound from discord

    problem commits c8554477e44900990a8fbad29ca17ecb3412e832 73f6772a2b7cc95e29c462e4f15bf07cbe0d3854

    problem: hello i can't receive sound from discord because data from channel don't arrive. my code for test https://gist.github.com/kinoher/fb9da8545a5db2ab342ebd524163c849 it's very dirty code i cuted from another my service

    opened by kinoher 22
  • Add rate limit buffering support

    Add rate limit buffering support

    My anti-spam bot needs to be able to detect when it is about to get rate limited, and then in response to this start aggregating small messages together into a single larger message. This is intended to deal with bot raids, which can trigger 300+ "user has joined" notifications at the same time.

    Doing this in a thread-safe manner requires several modifications to discordgo, and the core "buffered message" function must also be implemented in the Session object because it must access the ratelimiter object. While this pull request tries to make the absolute minimum amount of changes necessary to support this feature, it could be shrunk even more by exposing the rate limiter object and internal requestInner function outside of discordgo, which would then allow the bot to implement the buffered Post function.

    However, if that involves exposing too much of the internal library, the following is the minimum number of changes required to make this work:

    • Break request into requestInner
    • Break LockBucket into LockBucketObject
    • Change getBucket to GetBucket so it can be externally accessed
    • Add RequestBuffer interface
    • Add RequestBuffer pointer to Bucket struct
    • Add RequestPostWithBuffer() function to Session

    If you believe RequestPostWithBuffer should, in fact, be added to Session, tests will need to be made to ensure it works properly, which are not currently included - suggestions for how to implement those tests or where similar tests can be found are appreciated.

    feature 
    opened by ErikMcClure 18
  • [Question ]Do we implement the auto guild sharding ?

    [Question ]Do we implement the auto guild sharding ?

    https://github.com/hammerandchisel/discord-api-docs/issues/17 Do we let user deal with that or do we automatically do that ? (I personally it's better that the users deal with that because they can put the programs on multiple computers for big bots like airhorn)

    opened by Hinara 18
  • Update handlers to receive an interface for the Session

    Update handlers to receive an interface for the Session

    Please be aware, this is a breaking API change.

    This change adds a new discordgo type, Sessioner, which is an interface that describes the full method set for the *Session type. In addition to the new type, this change updates the package to no longer send a concrete *Session value in to handlers it invokes as the first argument but a Sessioner instead. This is to make testing of handlers much easier, as mock implementations of the Sessioner interface can be passed right in.

    This also renames the internal state field from State to state, and adds a new method to *Session, State(), to expose that internal state to consumers. A test was added to ensure this method works as expected.

    The example projects were updated where necessary to work with the new API

    Fixes #662.

    Signed-off-by: Tim Heckman [email protected]

    feedback 
    opened by theckman 16
  • Threads reloaded

    Threads reloaded

    So, seeing still ongoing problem with lack of threads implementation, I decided to make my own PR on them. This PR should include everything that's on threads currently.

    This PR also includes some code from #982 and #922 (it is meant to be continuation of those two, but written from scratch). So credits to the authors.

    The roadmap

    • [x] Gateway
    • [x] REST
    • [x] State
      • [x] CRUD
      • [x] Membership
    feature 
    opened by FedorLap2006 15
  • Selects component

    Selects component

    Well, during the development of the #933 I was also busy working on Selects component implementation. Now, since all API is experimental this request will be marked as draft one. Also this PR includes some fixes and improvements: like adding WebhookMessage endpoint and files support to webhooks API ( #951). Anyways, here it is: selects component. Feel free to give a feedback on this PR.

    feature 
    opened by FedorLap2006 15
  • Ratelimits

    Ratelimits

    Handles the new ratelimit headers

    • X-RateLimit-Remaining
    • X-RateLimit-Reset
    • X-RateLimit-Global

    I stuck it in an internal package, hope that's okay. This is probably not the best way to do the removal of minor url variables, the alternative is to redo the whole endpoint system.

    As for the reliability of this, after sending around 1k requests non-stop i didn't encounter a single 429.

    I pad the reset time with 1 second, because if i don't it will still occasionally run into 429's of the size 1ms - 50ms (yeah, i got ratelimited for 1 ms a lot...), padding with anything less than 1 second would still give those tiny ratelimits sometimes.

    opened by jonas747 15
  • Can't install (go get error)

    Can't install (go get error)

    When i tried to install this library with this command i have got an error

    go get github.com/bwmarrin/discordgo
    

    The error:

    'go get' is no longer supported outside a module.                                                           To build and install a command, use 'go install' with a version,                                            like 'go install example.com/cmd@latest'              For more information, see https://golang.org/doc/go-get-install-deprecation                                 or run 'go help get' or 'go help install'.
    

    I've tried with go install but i have another error:

    go: downloading github.com/bwmarrin/discordgo v0.26.1 go: downloading github.com/gorilla/websocket v1.4.2   go: downloading golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b                                      package github.com/bwmarrin/discordgo is not a main package
    
    opened by aleperuz 1
  • Options

    Options

    Since the beginning, DiscordGo did not have ability for adding per-call customization:

    • What if you want to disable automatic rate limit handling when you call ChannelMessageDelete, instead handling the error by yourself?
    • Or what if you want to set additional headers on GuildBanCreate, like X-Audit-Log-Reason, to comment your action in audit log?

    We’ve been thinking on how to combat this problem, and came up with the following solutions:

    • Builders pattern

      s.WithAuditLogReason("my reason").GuildBanCreate(...)
      s.WithRetryOnRateLimit(false).ChannelMessageDelete(...)
      
    • Functional options

      s.GuildBanCreate(..., discordgo.WithAuditLogReason("reason"))
      s.ChannelMessageDelete(..., discordgo.WithRetryOnRateLimit(false))
      

    This PR implements the latter. It provides a few pre-built options. However, you can always supply your custom option.

    Options have access to a RequestConfig struct, which is internally used by RequestX functions. This config allows you to modify a few global settings, like Client, ShouldRetryOnRateLimit and MaxRestRetries, but it also allows you to modify the request directly.

    A typical functional option would look like this:

    func WithQuery(key string, value string) discordgo.RequestOption {
    	return func(cfg *discordgo.RequestConfig) {
    		q := cfg.Request.Query()
    		q.Add(key, value)
    		cfg.Request.RawQuery = q.Encode()
    	}
    }
    

    These are built-in options discordgo will provide:

    • [x] WithClient - Control http.Client used for the request (defaults to s.Client)
    • [x] WithHeader - Change a certain header in the request
      • [x] WithAuditLogReason - Set X-Audit-Log-Reason header
      • [x] WithLocale - Set X-Discord-Locale header
    • [x] WithRetryOnRateLimit - Control Session.ShouldRetryOnRateLimit field for the request
    • [x] WithMaxRestRetries - Control Session.MaxRestRetries field for the request
    • [x] WithContext - Provide a context.Context to the http.Request

    This change will be affecting all of the REST endpoints. However it should be non-breaking.

    If you have used any function signatures though, you would need to change them accordingly:

    - func (s *Session) XXX(...) (...) {}
    + func (s *Session) XXX(..., options ...RequestOption) (...) {}
    
    feature feedback high priority rest 
    opened by FedorLap2006 0
  • Slash-commands: Attachment option can't be used

    Slash-commands: Attachment option can't be used

    When I try to get the attachment of a slash command I can't use the available option. Can you please fix that? Because when I try to use i.Interaction.ApplicationCommand.Data().Options[0].Value I can't get the file.

    opened by Minecodes 1
  • Unable to get the Guild members

    Unable to get the Guild members

    func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
    	g, err := s.State.Guild(m.guildID)
    	if err != nil {
    		fmt.Println(err.Error())
    
    	}
    	fmt.Println(g.Members)
    }
    

    Not at all getting guildmembers as when I am trying to get guild member count then it shows 0 as output , May I know how do I use guildMembers

    Thank you

    opened by Sandeep-Narahari 1
  • How to send Opus data correctly

    How to send Opus data correctly

    I do see that there's dgVoice and dca, but they have been a mess to get working on Windows.

    I have now downloaded Opus tools, which include opusenc, which allows me to convert a .wav to .opus. However, I'm not sure how to send the data correctly... here's what I'm currently doing:

    package main
    
    import (
    	"os"
    	"flag"
    	"fmt"
    	// "time"
    	"bufio"
    	"github.com/bwmarrin/discordgo"
    )
    
    // Variables used for command line parameters
    var (
    	Token     string
    	ChannelID string
    	GuildID   string
    )
    
    const (
    	channels = 2 // --raw-chan 2
    	frameRate = 48000 // --raw-rate 48000
    	frameSize = 60 // --framesize 60 (this can't be set to 960 according to opusenc)
    	maxBytes = frameSize * 2 * 2
    )
    
    func init() {
    	flag.StringVar(&Token, "t", "", "Bot Token")
    	flag.StringVar(&GuildID, "g", "", "Guild in which voice channel exists")
    	flag.StringVar(&ChannelID, "c", "", "Voice channel to connect to")
    	flag.Parse()
    }
    
    // Read chunks of the .opus file and send
    func play(v *discordgo.VoiceConnection) {
    	file, err := os.Open("Audiorezout - Anpiel.opus")
    	if err != nil {
    		return
    	}
    	defer file.Close()
    
    	reader := bufio.NewReader(file)
    	buffer := make([]byte, maxBytes)
    
    	v.Speaking(true)
    	defer v.Speaking(false)
    
    	for {
    		read, err := reader.Read(buffer)
    		if err != nil {
    			break
    		}
    
    		if !v.Ready || v.OpusSend == nil {
    			fmt.Println("Ain't ready")
    			return
    		}
    		
    		// time.Sleep(2000)
    		v.OpusSend <- buffer[:read]
    	}
    }
    
    func main() {
    	s, err := discordgo.New("Bot " + Token)
    	if err != nil {
    		fmt.Println("error creating Discord session:", err)
    		return
    	}
    	defer s.Close()
    
    	s.Identify.Intents = discordgo.MakeIntent(discordgo.IntentsGuildVoiceStates)
    
    	err = s.Open()
    	if err != nil {
    		fmt.Println("error opening connection:", err)
    		return
    	}
    
    	v, err := s.ChannelVoiceJoin(GuildID, ChannelID, true, false)
    	if err != nil {
    		fmt.Println("failed to join voice channel:", err)
    		return
    	}
    
    	play(v)
    }
    

    So basically I have frameSize * 2 * 2, which is the amount of bytes I read from "Audiorezout - Anpiel.opus" and send to the Discord voice channel, without any time out because I'm not sure what it should be.

    It does send audio, but not pleasantly at all.

    I have attached the music I'm trying to use (from Free Music Archive) Audiorezout - Anpiel.zip

    ffmpeg -i "Audiorezout - Anpiel.mp3" "Audiorezout - Anpiel.wav"
    opusenc --raw-rate 48000 --raw-chan 2 --framesize 60 "Audiorezout - Anpiel.wav" "Audiorezout - Anpiel.opus"
    
    question voice 
    opened by BenStigsen 0
Releases(v0.26.1)
  • v0.26.1(Aug 29, 2022)

    Hi all! This release only bumps semantic version of the library and does not contain any new fixes nor features. This is due to our semantic version previously not matching the actual library version.

    Source code(tar.gz)
    Source code(zip)
  • v0.26.0(Aug 17, 2022)

    Get ready! This release is not so big, but is packed with refactoring changes and fixes.

    What's Changed

    Notices / Breaking changes

    • DefaultPermission has been deprecated in favor of DefaultMemberPermissions and DMPermission in ApplicationCommand #1075
    • ApplicationCommandPermissionsBatchEdit has been deprecated #1075
    • Content, Components and Embeds were made pointers in WebhookEdit #1174
    • GuildTemplate.Description was made a pointer #1191
    • Type of GuildTemplate.UsageCount was changed to int #1191
    • GuildChannel and PrivateChannel were removed due to deprecation #1203
    • InviteTargetEmbeddedAppliction was renamed to InviteTargetEmbeddedApplication #1211
    • NSFW, Archived, Locked and Invitable were made pointers in ChannelEdit #1199
    • Type of Features was changed to []GuildFeature in UserGuild #1223
    • Remaining undocumented structs, events and fields were removed. #1225
    • ChannelEdit now shares same functional and parameters as ChannelEditComplex #1217
    • GuildMemberEdit now shares same functional and parameters as GuildMemberEditComplex #1217
    • ChannelEditComplex was deprecated in favor of ChannelEdit #1217
    • GuildMemberEditComplex was deprecated in favor of GuildMemberEdit #1217
    • name and roles parameters of GuildEmojiEdit and GuildEmojiCreate were placed into a EmojiParams struct #1217
    • accessToken, nick, roles, mute and deaf parameters of GuildMemberAdd were placed in a GuildMemberAddParams struct #1217
    • name, color, hoist, perms and mention parameters of GuildRoleEdit were placed into a GuildRoleParams struct #1217
    • name and description parameters of GuildTemplateCreate and GuildTemplateEdit were placed into a GuildTemplateParams struct #1217
    • GuildEmbedEdit now accepts parameters through GuildEmbed struct #1217
    • GuildEmbed.Enabled was made a pointer #1217
    • GuildRoleCreate now accepts initial role parameters through GuildRoleParams struct #1217
    • g parameter of GuildEdit was made a pointer, to match other REST methods #1228

    New features

    • Application commands: Permissions v2 #1075
    • Auto moderation #1201
    • Application command options: min and max length #1208

    Other changes

    • Use with_localizations flag in ApplicationCommands #1196
    • Add Dialer property to Session #1179 and #1220
    • Add AppPermissions field to Interaction #1206
    • Add ExpiresAt field to Invite #1198
    • Add Features field to UserGuild #1223
    • Name and Description are omitted when unset in GuildTemplate #1191
    • Add replied_user to MessageAllowedMentions #1175
    • fix: check if opus created #1166
    • Add ability to reply with embeds #1160
    • Add missing fields to VoiceState #1190
    • Add GET prefix for ApplicationCommands bucketID #1193
    • Add GuildID field to ApplicationCommand #1207
    • Add omitempty to channel_id in MessageReference #1002
    • Add UserGuildMember #1210
    • Add missing fields to GuildMemberParams #1226

    Special thanks

    • @Aderlx
    • @Alfonsohh99
    • @andrecego
    • @andresperezl
    • @ChristianGaertner
    • @corbmr
    • @drlau
    • @EliasStar
    • @FedorLap2006
    • @iokill
    • @khodand
    • @ozraru
    • @plally
    • @QPixel
    • @Tri0L
    • @uWynell
    • @wass88
    • @Zachinquarantine

    Full Changelog: https://github.com/bwmarrin/discordgo/compare/v0.25.0...v0.26.0

    Source code(tar.gz)
    Source code(zip)
  • v0.25.0(Apr 17, 2022)

    Hi all! This one is not so feature-rich, but is filled with lots of fixes and missing features.

    What's Changed

    Breaking changes

    • Removed omitempty from Embeds in InteractionResponseData, MessageSend and MessageEdit https://github.com/bwmarrin/discordgo/pull/1106
    • RateLimitPerUser in ChannelEdit was made a pointer https://github.com/bwmarrin/discordgo/pull/1152
    • appID was removed from the parameters of InteractionResponseXXX and FollowupMessageXXX https://github.com/bwmarrin/discordgo/pull/1125
    • GuildEmojiEdit now resets whitelisted roles of an emoji when provided with nil or empty role slice https://github.com/bwmarrin/discordgo/pull/1022

    New features

    • Stage Instances https://github.com/bwmarrin/discordgo/pull/1158
    • IconURL for GuildPreview https://github.com/bwmarrin/discordgo/pull/885
    • GuildWithCounts https://github.com/bwmarrin/discordgo/pull/885
    • Added GuildMembersSearch https://github.com/bwmarrin/discordgo/pull/1150
    • Added GuildEmoji https://github.com/bwmarrin/discordgo/pull/1153
    • Added GuildScheduledEventUserAdd and GuildScheduledEventUserDelete events https://github.com/bwmarrin/discordgo/pull/1155
    • Custom JSON marshal/unmarshal functions https://github.com/bwmarrin/discordgo/pull/1162
    • Added GuildMemberEditComplex https://github.com/bwmarrin/discordgo/pull/1122
    • Application commands localization https://github.com/bwmarrin/discordgo/pull/1143

    Other changes

    • Removed appID comment from InteractionRespond method https://github.com/bwmarrin/discordgo/pull/1123
    • Moved RESTError to restapi.go https://github.com/bwmarrin/discordgo/pull/1130
    • Removed GuildSubscriptions field from Identify struct https://github.com/bwmarrin/discordgo/pull/992
    • Add missing permission constants (UseActivities, ManageEvents, UseExternalStickers) https://github.com/bwmarrin/discordgo/pull/1144
    • Fix debug message printing when Session.Debug is disabled https://github.com/bwmarrin/discordgo/pull/1043
    • Update Go version in CI by @Jleagle in https://github.com/bwmarrin/discordgo/pull/1147
    • Showcase of parsing options into a map in slash commands example https://github.com/bwmarrin/discordgo/pull/1129
    • Removed omitempty from non-optional MessageEmbed* fields https://github.com/bwmarrin/discordgo/pull/1001
    • Added example of emojiID to MessageReactionAdd https://github.com/bwmarrin/discordgo/pull/798
    • Added NSFWLevel to Guild https://github.com/bwmarrin/discordgo/pull/1029
    • Fixed shadowed error variables https://github.com/bwmarrin/discordgo/pull/1030
    • Added option to disable rate-limited requests retry https://github.com/bwmarrin/discordgo/pull/1151
    • Added Flags to MessageEdit https://github.com/bwmarrin/discordgo/pull/973
    • Added RequestGuildMembersList method https://github.com/bwmarrin/discordgo/pull/1156
    • Added InviteComplex https://github.com/bwmarrin/discordgo/pull/1163

    Special thanks

    • @42Atomys
    • @awildboop
    • @ben-mckernan
    • @ceriath
    • @cheesycod
    • @danbrakeley
    • @evieDelta
    • @FedorLap2006
    • @fiatjaf
    • @ghost
    • @Jarvvski
    • @Jleagle
    • @nixxquality
    • @njhanley
    • @Pancake-e
    • @racerxdl
    • @shawntoffel
    • @switchupcb
    • @TopiSenpai

    Full Changelog: https://github.com/bwmarrin/discordgo/compare/v0.24.0...v0.25.0

    Source code(tar.gz)
    Source code(zip)
  • v0.24.0(Mar 2, 2022)

    Hang tight, this one is the biggest yet

    Important notice

    From this release forward, DiscordGo will require Go 1.13+ to run.

    Breaking changes of master

    Since v.0.23.0 we've been recommending everyone to use @master version for slash commands, context menus and other new stuff.

    This led to a big problem with versioning and breaking changes, because some of the features weren't implemented fully, had some problems didn't properly function or didn't fully reflect the API, and so there was a number of breaking changes since the base feature PRs:

    • Some of InteractionResponseTypes were removed. https://github.com/bwmarrin/discordgo/pull/930
    • InteractionResponseACKWithSource was renamed to InteractionResponseDeferredChannelMessageWithSource. https://github.com/bwmarrin/discordgo/pull/930
    • Type of MinValues in SelectMenu was changed to *float64, to allow for the default values when field isn't set. https://github.com/bwmarrin/discordgo/pull/1026
    • InteractionApplicationCommandResponseData has been renamed to InteractionResponseData. https://github.com/bwmarrin/discordgo/pull/933
    • ButtonEmoji was renamed to ComponentEmoji. https://github.com/bwmarrin/discordgo/pull/954
    • ApplicationCommandInteractionData has been removed, use Interaction.ApplicationCommandData() instead. https://github.com/bwmarrin/discordgo/pull/954
    • MessageTypeApplicationCommand was replaced by MessageTypeChatInputCommand. https://github.com/bwmarrin/discordgo/pull/978

    API version v9

    Now DiscordGo uses API v9! Due to this fact this release includes a couple of breaking changes regarding the API:

    Breaking changes

    • User account login, endpoints and methods were dropped. https://github.com/bwmarrin/discordgo/pull/1087
    • Embed now is replaced with Embeds in MessageSend and MessageEdit. https://github.com/bwmarrin/discordgo/pull/1000
    • EndpointApplications no longer points to OAuth2 applications. Use EndpointOAuth2Applications for that instead. https://github.com/bwmarrin/discordgo/pull/856
    • TargetUserType field in Invite and TargetUserType type are renamed to TargetType. Additionally all the constants named InviteTargetUserType<Name> were renamed to InviteTarget<Name>. See https://github.com/bwmarrin/discordgo/pull/1105 for more info
    • RedirectURIs were removed from Application
    • All user flags now use UserFlag type instead of int. https://github.com/bwmarrin/discordgo/pull/937
    • REST API functions now will now return wrapped version of ErrJSONUnmarshal. For error check errors.Is or errors.Unwrap should be used. https://github.com/bwmarrin/discordgo/pull/924
    • ErrCodeMaximumFriendsReached and ErrCodeNoteTooLong error codes were removed. https://github.com/bwmarrin/discordgo/pull/1096

    New features

    • Guild preview by https://github.com/bwmarrin/discordgo/pull/818
    • Slash commands https://github.com/bwmarrin/discordgo/pull/856
    • Constraints for slash command number options https://github.com/bwmarrin/discordgo/pull/1026
    • Button component https://github.com/bwmarrin/discordgo/pull/933
    • Selects component https://github.com/bwmarrin/discordgo/pull/954
    • Context menus https://github.com/bwmarrin/discordgo/pull/978
    • Ephemeral attachments https://github.com/bwmarrin/discordgo/pull/1008
    • Slash commands options auto completion https://github.com/bwmarrin/discordgo/pull/1014
    • Guild member timeouts https://github.com/bwmarrin/discordgo/pull/1061
    • Interaction locale https://github.com/bwmarrin/discordgo/pull/1073
    • Stickers https://github.com/bwmarrin/discordgo/pull/1057
    • Modals https://github.com/bwmarrin/discordgo/pull/1049
    • Application commands: attachment option https://github.com/bwmarrin/discordgo/pull/1088
    • Threads https://github.com/bwmarrin/discordgo/pull/1058
    • Guild stickers https://github.com/bwmarrin/discordgo/pull/1095
    • Guild Templates https://github.com/bwmarrin/discordgo/pull/1091
    • Guild Member avatars https://github.com/bwmarrin/discordgo/pull/1077
    • Guild Scheduled Events https://github.com/bwmarrin/discordgo/pull/1032
    • InviteCreate and InviteDelete events https://github.com/bwmarrin/discordgo/pull/1105
    • User banners and accent colors https://github.com/bwmarrin/discordgo/pull/1117

    Bug fixes

    • EndpointInvite now points to correct API endpoint https://github.com/bwmarrin/discordgo/pull/892
    • RTP extended header is now parsed correctly https://github.com/bwmarrin/discordgo/pull/880

    Other changes

    • Addition of Required flag for resp-type option of /responses command in slash commands example https://github.com/bwmarrin/discordgo/pull/886
    • Missing permission constants https://github.com/bwmarrin/discordgo/pull/906
    • Addition of missing fields to Activity and GetCustomEmojis to Message https://github.com/bwmarrin/discordgo/pull/895
    • Addition of Permissions field to Member https://github.com/bwmarrin/discordgo/pull/902
    • github.com/gorilla/websocket was bumped to 1.4.2 https://github.com/bwmarrin/discordgo/pull/896
    • Correction of slash commands example spelling & grammar https://github.com/bwmarrin/discordgo/pull/905
    • Fix of some typos detected by goreportcard https://github.com/bwmarrin/discordgo/pull/925
    • Addition of ApplicationCommandOptionMentionable https://github.com/bwmarrin/discordgo/pull/918
    • Bulk application command overwrite endpoint https://github.com/bwmarrin/discordgo/pull/926
    • Wrapping of ErrJSONUnmarshal to include error message https://github.com/bwmarrin/discordgo/pull/924
    • Addition of ping pong example for direct messages https://github.com/bwmarrin/discordgo/pull/882
    • Addition of ApplicationCommandInteractionDataResolved https://github.com/bwmarrin/discordgo/pull/919
    • Fix of UserFlags constants types https://github.com/bwmarrin/discordgo/pull/937
    • Webhook message endpoint https://github.com/bwmarrin/discordgo/pull/948
    • Support of attachments in webhooks and interaction responses https://github.com/bwmarrin/discordgo/pull/931
    • Addition of SessionStartLimit field to GatewayBotResponse https://github.com/bwmarrin/discordgo/pull/949
    • Addition of BeforeDelete field to GuildDelete https://github.com/bwmarrin/discordgo/pull/962
    • Addition of ActivityTypeCompeting https://github.com/bwmarrin/discordgo/pull/990
    • Addition of ActivityTypeWatching https://github.com/bwmarrin/discordgo/pull/983
    • Channel type restrictions for ApplicationCommandOption https://github.com/bwmarrin/discordgo/pull/1015
    • Fix of some links and wording in the docs https://github.com/bwmarrin/discordgo/pull/1010
    • Addition of Guild.BannerURL method https://github.com/bwmarrin/discordgo/pull/1023
    • Addition of Member to MessageReactionAdd https://github.com/bwmarrin/discordgo/pull/1042
    • Missing MessageFlags values https://github.com/bwmarrin/discordgo/pull/1089
    • Missing audit log keys and actions https://github.com/bwmarrin/discordgo/pull/1098
    • Missing JSON error codes https://github.com/bwmarrin/discordgo/pull/1096
    • Missing intents https://github.com/bwmarrin/discordgo/pull/1097
    • Addition of DefaultPermission field to ApplicationCommand https://github.com/bwmarrin/discordgo/pull/1071
    • Addition of Disabled field to SelectMenu https://github.com/bwmarrin/discordgo/pull/1102
    • Implementation of removal procedure for slash commands example https://github.com/bwmarrin/discordgo/pull/1103
    • Addition of Interaction field to Message https://github.com/bwmarrin/discordgo/pull/1112

    Special thanks

    • @42Atomys
    • @andresperezl
    • @arHSM
    • @chanbakjsd2
    • @cnpryer
    • @codemicro
    • @constantoine
    • @courtier
    • @Dev-Bjorn
    • @elliotwms
    • @evieDelta
    • @ewohltman
    • @Fahim-Ferdous
    • @FedorLap2006
    • @galberti
    • @ghost
    • @Heanthor
    • @Jleagle
    • @Jordan-Cartwright
    • @mutemule
    • @Nv7-GitHub
    • @Pedro-Pessoa
    • @pixelrazor
    • @plally
    • @post04
    • @QPixel
    • @SmoothieNoIce
    • @TopiSenpai
    • @vertex-admin
    • @xIceArcher
    • @Xpl0itR
    • @zephyrtronium

    Full Changelog: https://github.com/bwmarrin/discordgo/compare/v0.23.2...v0.24.0

    Source code(tar.gz)
    Source code(zip)
  • v0.23.1(Jan 26, 2021)

    Hi all! v0.23.1 contains a bug fix relating to updating statuses, correcting the casing used in the JSON sent to the gateway, meaning that you can actually update your status now! I envision that there might be more minor fixes in the near future as a continuation of the switch to API v8, but in the meantime make sure to update if you're running into issues with updating your bot's status.

    Source code(tar.gz)
    Source code(zip)
  • v0.23.0(Jan 24, 2021)

    Hi all! This is a big one.

    API Version 8

    The largest change for this version: the library now uses API version 8! Given the breaking changes in the API, there will be some breaking changes in this version:

    • Intents are now mandatory. The library continues to default to enabling all non-privileged intents, but it is no longer possible to disable intents entirely like it was in v6. Consequently, the Intents field in the Identify struct is no longer a pointer, and the use of MakeIntent is no longer required.
    • The Game struct is no more, and UpdateStatus was changed to UpdateGameStatus to better reflect the API structures. The previous uses of Game can now be encompassed in Activity.
    • Presences and presence updates no longer contain information about nicknames and roles; these are now sent exclusively by guild member updates.
    • Permissions are now represented by int64 rather than int throughout the library, as although there are no permissions currently above 32 bits, Discord explicitly notes that they expect to add additional permissions in the future.
    • Permission overwrite types now have constants in the library, rather than requiring a string value.

    There will probably be issues that are discovered with the API version change. As always, please feel free to file an issue if any come up!

    Additional Changes

    • Support for news channels #800
    • Support for user public flags #801
    • Support for guild member muting and deafening #804
    • Support for querying old voice state information in updates #833
    • Add application ID to webhooks #838
    • Support for replies #842
    • Support for fetching guild bans #848
    • Webhook interaction request verification #855
    • Add pending field for members #863

    Special Thanks To

    • https://github.com/adityaxdiwakar
    • https://github.com/zekroTJA
    • https://github.com/jonathroth
    • https://github.com/nickmcski
    • https://github.com/Zabqer
    • https://github.com/LagSwitchedVirginity
    • https://github.com/qaisjp
    • https://github.com/FedorLap2006
    • https://github.com/bsdlp
    • https://github.com/denverquane
    • https://github.com/CinePlays
    Source code(tar.gz)
    Source code(zip)
  • v0.22.0(Jul 26, 2020)

    Hi all! This version is a bit of a smaller one, but with one big change to long-time users of the library: the develop branch is no more! We found that the divide was confusing for first-time contributors, and while it was necessary is the old days of Go, modules make the two-branch workflow unnecessary. We will now keep all changes in a single branch for simplicity. Still, we do have a few new features, and I'd be remiss if I didn't mention them:

    Special Thanks To

    • https://github.com/PrincessRavy
    • https://github.com/DylanMeador
    • https://github.com/TroyDota
    • https://github.com/redbluescreen

    for all the help and contributions to this project—leading to this release! You are all very appreciated!

    New Features

    • General field updates to reflect API changes #785
    • Fetching of guild emojis from API #786
    • Support removal of user from voice channel #789
    • Allowed mentions functionality for webhooks #794

    As a plus, this one-branch workflow should allow us to release...well...releases more often, as instead of a merge all that will be required is a new tag. Move fast and break things, as they say (or said).

    Source code(tar.gz)
    Source code(zip)
  • v0.21.1(Jun 21, 2020)

    (note: this release has been directly superseded by v0.21.1 due to a mixup in the merge and the immutability of the Go module proxy; please refer to that version if you're pinning against a version!)

    This one was a bit of a long time coming. Say hello to DiscordGo v0.21.0!

    Special Thanks To

    • https://github.com/AndyTempel
    • https://github.com/lukasz-horonziak
    • https://github.com/b-o-r-k
    • https://github.com/RoJamieson
    • https://github.com/Strum355
    • https://github.com/ZusorCode
    • https://github.com/ewohltman
    • https://github.com/camsw
    • https://github.com/Toyz
    • https://github.com/mistahj67
    • https://github.com/42Atomys
    • https://github.com/recapitalverb

    for all the help and contributions to this project—leading to this release! You are all very appreciated!

    Breaking Changes

    • The "Gateway Intents" system is now supported and enabled by default. See the wiki for information on disabling it.
    • Session.MessageReactions now takes additional parameters supporting pagination; set both to "" to retain current functionality. #626
    • Session.RequestGuildMembers now takes an additional parameter indicating whether to request member presences.
    • Session.Guild no longer attempts to fetch the guild from the state, bringing it in line with other Session methods. Use Session.State.Guild to do so. #683

    Bug Fixes

    • Missing fields in GuildChannelCreateData added #782
    • Resumes are now functioning after a long-standing bug preventing them on reconnects #761
    • Internal API URL changed from discordapp.com to discord.com #772

    New Features

    • "Allowed mentions" functionality, allowing mentions in a message to be allowed or blocked on an allowlist basis (did I say allow?) #761
    • Fetch message details after its deletion if messages are being tracked in the state #743
    • Request guild members for multiple guilds #709

    Want more infomation?

    Read the PRs, Issues, Commits associated with this release.

    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Oct 18, 2019)

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/Bios-Marcel
    • https://github.com/yuko1225
    • https://github.com/neuronpool
    • https://github.com/Hinara
    • https://github.com/shawntoffel
    • https://github.com/Soumil07
    • https://github.com/lexfrei
    • https://github.com/siku2
    • https://github.com/asminozhka
    • https://github.com/jyap808
    • https://github.com/JurrijnP
    • https://github.com/Lukaesebrot
    • https://github.com/ikkerens
    • https://github.com/bsdlp
    • https://github.com/foxbot
    • https://github.com/Krognol
    • https://github.com/tsudoko
    • https://github.com/nylen
    • https://github.com/Necroforger
    • https://github.com/AmIJesse
    • https://github.com/datutbrus
    • https://github.com/Seklfreak
    • https://github.com/qaisjp
    • https://github.com/lexfrei
    • https://github.com/siku2
    • https://github.com/recapitalverb
    • https://github.com/jyap808
    • https://github.com/eest
    • https://github.com/Lukaesebrot
    • https://github.com/haze
    • https://github.com/dondish

    for all the help and contributions to this project - leading to this release! You are all very appreciated!

    BREAKING CHANGES

    • Added Support for WebhookExecute msg response https://github.com/bwmarrin/discordgo/pull/663
    • Fix typo in ErrorEmbedDisabled https://github.com/bwmarrin/discordgo/pull/697

    Bugs Fixed

    • Escape # in emoji IDs passed to reaction endpoints
    • Removed _trace from helloOp https://github.com/bwmarrin/discordgo/pull/654
    • Helped to make Dark Theme folks a bit less sad. https://github.com/bwmarrin/discordgo/issues/664 https://github.com/bwmarrin/discordgo/pull/665
    • Fixed broken IP Discovery in voice UDP connection https://github.com/bwmarrin/discordgo/pull/669
    • Use the Voice UDP Endpoint IP from the Ready payload instead of the WebSocket endpoint https://github.com/bwmarrin/discordgo/pull/704

    Other Changes

    • Added copy of previous Message state to MessageUpdate https://github.com/bwmarrin/discordgo/pull/545
    • Added last_pin_timestamp to Channel struct https://github.com/bwmarrin/discordgo/pull/596
    • Removed code duplication in ChannelVoiceJoin https://github.com/bwmarrin/discordgo/pull/611
    • Added "Priority Speaker" permission as constant https://github.com/bwmarrin/discordgo/pull/628
    • Added Pinned to Message struct https://github.com/bwmarrin/discordgo/pull/633
    • Added SnowflakeTimestamp utility function https://github.com/bwmarrin/discordgo/pull/641
    • Added User-Agent setting to Session struct https://github.com/bwmarrin/discordgo/pull/653
    • Added premium fields to Guild and Member https://github.com/bwmarrin/discordgo/pull/656
    • Added EndpointGuildIconAnimated https://github.com/bwmarrin/discordgo/pull/658
    • Added Guild.IconURL() helper https://github.com/bwmarrin/discordgo/pull/658
    • Added Asset type and ApplicationAssets method. https://github.com/bwmarrin/discordgo/pull/666
    • Handle empty channel id in ChannelVoiceJoinManual https://github.com/bwmarrin/discordgo/pull/672
    • Added Available field to Emoji struct https://github.com/bwmarrin/discordgo/pull/676
    • Added Premium Guild Subscription message types & Added Channel Types https://github.com/bwmarrin/discordgo/pull/679
    • Added new VerificationLevel VerificationLevelVeryHigh https://github.com/bwmarrin/discordgo/pull/680 https://github.com/bwmarrin/discordgo/pull/681
    • Added RateLimitPerUser to Channel struct
    • Added several newer fields to the Message object https://github.com/bwmarrin/discordgo/pull/699

    Want more infomation?

    Read the PRs, Issues, Commits associated with this release.

    Source code(tar.gz)
    Source code(zip)
  • v0.19.0(Nov 2, 2018)

    Alright, DiscordGo v0.19.0 :) I know this should have happened 6 months or more ago. I've become more and more busy with work, life, and a new baby :) DiscordGo still has my heart though and thanks to all the amazing contributors, it has continued to grow and keep up with Discord's API changes!

    For future reference, DiscordGo now has 706 stars, 167 forks, and 46 contributors!

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/xDimGG
    • https://github.com/ajmeese7
    • https://github.com/Seklfreak
    • https://github.com/SilverCory
    • https://github.com/ikkerens
    • https://github.com/netux
    • https://github.com/qaisjp
    • https://github.com/cxnky
    • https://github.com/Soumil07
    • https://github.com/roberthmiller
    • https://github.com/robbix1206
    • https://github.com/Necroforger
    • https://github.com/CarsonHoffman
    • https://github.com/fuzzyfabricator
    • https://github.com/santichu95
    • https://github.com/shawntoffel
    • https://github.com/Hinara
    • https://github.com/foxbot
    • https://github.com/midona-rhel
    • https://github.com/kilgarth
    • https://github.com/roberthmiller
    • https://github.com/kinoher
    • https://github.com/mortdeus
    • https://github.com/waynegerard
    • https://github.com/spencer1573
    • https://github.com/ewohltman
    • https://github.com/dvrkps
    • https://github.com/dannyt66
    • https://github.com/Necroforger
    • https://github.com/sn0w
    • https://github.com/Strum355
    • https://github.com/antihax
    • https://github.com/tsudoko
    • https://github.com/mroseman95
    • https://github.com/xDimGG
    • https://github.com/jegfish
    • https://github.com/netux
    • https://github.com/midona-rhel
    • https://github.com/kilgarth
    • https://github.com/bitspill

    for all the help and contributions to this project - leading to this release! You are all very appreciated!

    BREAKING CHANGES

    • GuildChannelCreate method now takes ChannelType parameter https://github.com/bwmarrin/discordgo/pull/511
    • GuildIntegrations method now takes a []*Integrations parameter instead of []*GuildIntegration https://github.com/bwmarrin/discordgo/pull/514

    Fixes

    • Fix role mention replacement https://github.com/bwmarrin/discordgo/pull/509
    • Fixed ContentWithMoreMentionsReplaced() for roles https://github.com/bwmarrin/discordgo/pull/521
    • Change State.MemberAdd to set fields individually https://github.com/bwmarrin/discordgo/pull/533
    • Reduce data sent to the DAPI in GuildChannelsReorder https://github.com/bwmarrin/discordgo/pull/537

    Enhancements

    • Add ChannelID to WebhookEdit https://github.com/bwmarrin/discordgo/pull/445
    • AvatarURL will now return a link to the default avatar instead of an invalid link if the user has no avatar set. https://github.com/bwmarrin/discordgo/pull/488
    • Support for Game Activity Types https://github.com/bwmarrin/discordgo/pull/500
    • Get Guild Audit Log endpoint implemented https://github.com/bwmarrin/discordgo/pull/504
    • Added Role.Mention function https://github.com/bwmarrin/discordgo/pull/507
    • Support unsetting Game & Setting to "Listening To" https://github.com/bwmarrin/discordgo/pull/508
    • Added UserConnections method that will list user connections https://github.com/bwmarrin/discordgo/pull/514
    • Documentation improvements https://github.com/bwmarrin/discordgo/pull/516
    • GuildMemberAdd method added https://github.com/bwmarrin/discordgo/pull/523
    • Added Explicit Content Filter Levels, MfaLevel, WidgetEnabled, WidgetChallenID, SystemChannelID https://github.com/bwmarrin/discordgo/pull/527
    • Removed state checking from (s *Session) Guild(...) to be consistent https://github.com/bwmarrin/discordgo/pull/530
    • Add Icon channel field https://github.com/bwmarrin/discordgo/pull/531
    • Added Mention() func for Channel https://github.com/bwmarrin/discordgo/pull/536
    • Add GuildID to several structs https://github.com/bwmarrin/discordgo/pull/541
    • Added GuildEmojiCreate, GuildEmojiEdit, and GuildEmojiDelete methods https://github.com/bwmarrin/discordgo/pull/551
    • Added InviteWithCounts method https://github.com/bwmarrin/discordgo/pull/552
    • Add an explicit log and error for when a request is attempted with an unauthorized token that is not a bot token https://github.com/bwmarrin/discordgo/pull/553
    • Added locale to User struct https://github.com/bwmarrin/discordgo/pull/555
    • Added userlimit to the channel struct https://github.com/bwmarrin/discordgo/pull/557
    • Added support for the Unique field to ChannelInviteCreate https://github.com/bwmarrin/discordgo/pull/558
    • Added Webhooks Update event https://github.com/bwmarrin/discordgo/pull/561
    • Added MessageFormat() to emoji struct https://github.com/bwmarrin/discordgo/pull/569
    • Added ChannelVoiceJoinManual https://github.com/bwmarrin/discordgo/pull/578
    • Add PermissionManageEmojis and PermissionManageWebhooks to PermissionAll https://github.com/bwmarrin/discordgo/pull/580
    • Added rate_limit_per_user to ChannelEdit https://github.com/bwmarrin/discordgo/pull/585
    • Added latency method https://github.com/bwmarrin/discordgo/pull/593
    • Now update state member count on GUILD_MEMBER_ADD and GUILD_MEMBER_REMOVE https://github.com/bwmarrin/discordgo/pull/602
    • Added WebhookID to message struct https://github.com/bwmarrin/discordgo/pull/607

    Want more infomation?

    Read the PRs, Issues, Commits associated with this release.

    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Dec 27, 2017)

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/blackhole12
    • https://github.com/jD91mZM2
    • https://github.com/jcmdln
    • https://github.com/therealfakemoot
    • https://github.com/darkgray1981
    • https://github.com/robbix1206
    • https://github.com/Seklfreak
    • https://github.com/zet4
    • https://github.com/Necroforger
    • https://github.com/Wubsy
    • https://github.com/CarsonHoffman
    • https://github.com/MaxBosse
    • https://github.com/Ikkerens
    • https://github.com/SilverCory
    • https://github.com/NamedKitten
    • https://github.com/sn0w
    • https://github.com/vim2meta
    • https://github.com/MrJohnCoder
    • https://github.com/psheets
    • https://github.com/andersfylling
    • https://github.com/njhanley

    for all the help and contributions to this project - leading to this release! You are all very appreciated!

    Enhancements

    • Session.Open() now validates the connection is successful and reports errors when it is not. (https://github.com/bwmarrin/discordgo/issues/198)
    • Added rate limit buffering support (https://github.com/bwmarrin/discordgo/pull/430)
    • Added GameType (https://github.com/bwmarrin/discordgo/pull/435)
    • Added ParentID to Channel struct (https://github.com/bwmarrin/discordgo/pull/448, https://github.com/bwmarrin/discordgo/issues/447)
    • Switch to new Bulk Delete endpoint (https://github.com/bwmarrin/discordgo/issues/320, https://github.com/bwmarrin/discordgo/pull/451)
    • Members from GuildMembersChunk are now added to state (https://github.com/bwmarrin/discordgo/pull/456)
    • Implemented raw sending of status (Rich Presence and Online Status) (https://github.com/bwmarrin/discordgo/pull/462)
    • Add support for custom logging behavior. (https://github.com/bwmarrin/discordgo/pull/465)
    • Allow size parameter to be omitted in User.AvatarURL (https://github.com/bwmarrin/discordgo/pull/468)
    • Added the unique field to the invite struct (https://github.com/bwmarrin/discordgo/pull/487)
    • Added ChannelEditComplex (https://github.com/bwmarrin/discordgo/pull/493)
    • Added support for animated emojis (https://github.com/bwmarrin/discordgo/pull/496)

    Fixes

    • Remove a misspelled copy of EndpointGuildInvites. (https://github.com/bwmarrin/discordgo/issues/440, https://github.com/bwmarrin/discordgo/pull/441)
    • Fixed Channel struct's JSON tag for Recipients (https://github.com/bwmarrin/discordgo/pull/444, https://github.com/bwmarrin/discordgo/issues/443)
    • Fixed GuildCreate using incompatible endpoint (https://github.com/bwmarrin/discordgo/issues/437, https://github.com/bwmarrin/discordgo/pull/452)
    • Use v.log rather than log for consistency (https://github.com/bwmarrin/discordgo/pull/464)
    • Fix typos :) (https://github.com/bwmarrin/discordgo/pull/466, https://github.com/bwmarrin/discordgo/pull/482, https://github.com/bwmarrin/discordgo/pull/486)
    • Remove XKCDPass Invites (https://github.com/bwmarrin/discordgo/pull/477, https://github.com/bwmarrin/discordgo/pull/477)
    • Fixed TimeStamps unmarshalling (https://github.com/bwmarrin/discordgo/issues/474, https://github.com/bwmarrin/discordgo/pull/470)
    • Properly return on errors in GuildRoleEdit and GuildPruneCount (https://github.com/bwmarrin/discordgo/commit/b58212ae336d123c4191b621c71fd8e3af08b18e)
    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Sep 5, 2017)

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/jonas747
    • https://github.com/GinjaNinja32
    • https://github.com/jD91mZM2
    • https://github.com/Necroforger
    • https://github.com/ammario
    • https://github.com/nhooyr
    • https://github.com/blackhole12
    • https://github.com/tsudoko
    • https://github.com/CarsonHoffman
    • https://github.com/robbix1206
    • https://github.com/Wubsy
    • https://github.com/kebolio
    • https://github.com/zet4

    for all the help and contributions to the project! You are all very very appreciated.

    Enhancements

    • ContentWithMentionReplaced on roles and nicks (https://github.com/bwmarrin/discordgo/pull/375)
    • Added function AvatarURL(size string) string that returns a URL to the user's avatar (https://github.com/bwmarrin/discordgo/pull/388)
    • Add and fix support for multiple file uploads via ChannelMessageSendComplex via the new field MessageSend.Files (https://github.com/bwmarrin/discordgo/pull/391)
    • Add heartbeat ACK response and error handling (Op11, Op7) (https://github.com/bwmarrin/discordgo/pull/396)
    • Hardcoded reactions ratelimit because Discord gives incorrect value in headers. (https://github.com/bwmarrin/discordgo/pull/398)
    • Add function GuildMemberDeleteWithReason(guildID, userID, reason string) (https://github.com/bwmarrin/discordgo/pull/399)
    • remove runtime.LockOSThread call from opusSender (https://github.com/bwmarrin/discordgo/pull/404)
    • gracefully handle the possibility of a race condition attempting to reconnect twice (https://github.com/bwmarrin/discordgo/pull/407)
    • Updated to gateway v6 (https://github.com/bwmarrin/discordgo/pull/410)
    • Add memberMap to State to speed up member queries (https://github.com/bwmarrin/discordgo/pull/411)
    • Added function MessageReactionsRemoveAll(channelID, messageID string) that deletes all reactions from a message (https://github.com/bwmarrin/discordgo/pull/414)
    • Add option for calling event handlers sync or async (https://github.com/bwmarrin/discordgo/pull/416)
    • Export State.OnInterface (https://github.com/bwmarrin/discordgo/pull/417)
    • Add error code constants (https://github.com/bwmarrin/discordgo/pull/418)
    • Add NSFW channel field (https://github.com/bwmarrin/discordgo/pull/419)

    Bug Fixes

    • Email/Password are omitted if empty on UserUpdate (https://github.com/bwmarrin/discordgo/pull/383)
    • Fix goroutine leak in opusReceiver (https://github.com/bwmarrin/discordgo/pull/393)
    • Fix presence update after breaking API change (https://github.com/bwmarrin/discordgo/pull/427)
    • Fix receiving voice after client sets extended header bit (https://github.com/bwmarrin/discordgo/pull/428)
    • Fix an issue causing WebhookDelete to always return an error (https://github.com/bwmarrin/discordgo/issues/429, https://github.com/bwmarrin/discordgo/pull/432)
    • Fix an issue with session GuildCreate using incompatible endpoint (https://github.com/bwmarrin/discordgo/issues/437, https://github.com/bwmarrin/discordgo/pull/439, https://github.com/bwmarrin/discordgo/commit/fd8721a5220e9bbe689cb6040b30fa26a5c7e7fc,
    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(May 15, 2017)

    Alright, DiscordGo v0.16.0 :)

    For future reference, DiscordGo now has 289 stars, 78 forks, and 35 contributors!

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/jonas747
    • https://github.com/legolord208
    • https://github.com/calmandniceperson
    • https://github.com/ammario
    • https://github.com/Moonlington
    • https://github.com/Necroforger
    • https://github.com/sn0w
    • https://github.com/notdisliked
    • https://github.com/Seklfreak
    • https://github.com/damongant
    • https://github.com/Jawnnypoo
    • https://github.com/tsdtsdtsd

    for all the help and contributions to the project! You are all very very appreciated.

    Notice / Breaking Changes

    • ChannelMessages method now has an around parameter https://github.com/bwmarrin/discordgo/pull/306
    • UserGuilds method now has limit, beforeID, and afterID parameters https://github.com/bwmarrin/discordgo/pull/296
    • UserAvatar method is deprecated. Please use UserAvatarDecode https://github.com/bwmarrin/discordgo/pull/337

    Enhancements

    • Added ChannelMessageEditComplex function https://github.com/bwmarrin/discordgo/pull/349
    • Added ChannelMessageSendComplex function https://github.com/bwmarrin/discordgo/pull/349
    • Added GuildBanCreateWithReason method https://github.com/bwmarrin/discordgo/pull/367
    • We now report an error when trying to login with an account that has 2FA https://github.com/bwmarrin/discordgo/pull/359
    • We're now using Gateway V5... Better than v4 :) https://github.com/bwmarrin/discordgo/issues/220
    • Added support for getting the color of a user https://github.com/bwmarrin/discordgo/pull/299
    • Added some missing Permission constants https://github.com/bwmarrin/discordgo/pull/302 https://github.com/bwmarrin/discordgo/pull/378
    • Added support for MessageDeleteBulk event https://github.com/bwmarrin/discordgo/pull/304
    • Avatars, Icons, Splashes, etc images are now have CDN endpoints and have been updated to request .png files. https://github.com/bwmarrin/discordgo/pull/309
    • Track voice-channel movements in onVoiceStateUpdate() https://github.com/bwmarrin/discordgo/pull/317
    • Add support for @me in GuildMemberNickname https://github.com/bwmarrin/discordgo/pull/319
    • Added method ChannelMessageSendEmbedWithMessage https://github.com/bwmarrin/discordgo/pull/335
    • Added method UserAvatarDecode to fetch the Avatar of a user. https://github.com/bwmarrin/discordgo/pull/337
    • Added convenience function Tag() method to user struct to return a formatted mention for that user https://github.com/bwmarrin/discordgo/pull/364
    • Added convenience function String() method to User struct. https://github.com/bwmarrin/discordgo/pull/350
    • Added convenience function SetContent to MessageParams struct https://github.com/bwmarrin/discordgo/pull/352
    • Added support for MessageReactionRemoveAll event https://github.com/bwmarrin/discordgo/pull/357 https://github.com/bwmarrin/discordgo/commit/691040e745c79b7abf07b6c1560421ee124ca996
    • Add Presence Tracking to State https://github.com/bwmarrin/discordgo/pull/371
    • Make returned errors constants https://github.com/bwmarrin/discordgo/pull/377

    Bug Fixes

    • Some cleanup: https://github.com/bwmarrin/discordgo/pull/368 https://github.com/bwmarrin/discordgo/pull/338 https://github.com/bwmarrin/discordgo/pull/339 https://github.com/bwmarrin/discordgo/pull/344 https://github.com/bwmarrin/discordgo/pull/347
    • Fixed permissions to take into account @everyone override in channels. https://github.com/bwmarrin/discordgo/pull/298
    • Fixed several possible race conditions https://github.com/bwmarrin/discordgo/pull/303 https://github.com/bwmarrin/discordgo/pull/307 https://github.com/bwmarrin/discordgo/pull/340
    • Use proper ratelimit buckets for RoleAdd and RoleRemove https://github.com/bwmarrin/discordgo/pull/311
    • Fixed leaking tickers https://github.com/bwmarrin/discordgo/pull/314
    • Fix presence unmarshal with game names as numbers https://github.com/bwmarrin/discordgo/pull/381
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Dec 10, 2016)

    This is my first release and a long time coming. The major updates for v0.15.0 are rate limits, the removal of reflection from the library and a bunch of new features!

    Huge thanks to @jonas747 for the rate limiting code!

    Special Thanks To

    • https://github.com/jonas747
    • https://github.com/VagantemNumen
    • https://github.com/b1naryth1ef
    • https://github.com/Harmon758
    • https://github.com/nstafie
    • https://github.com/robbix1206
    • https://github.com/mattgerstman
    • https://github.com/rytone
    • https://github.com/austin1237
    • https://github.com/uppfinnarn
    • https://github.com/softashell
    • https://github.com/greenbigfrog

    for all the help and contributions to the project! Your support is what makes DiscordGo possible!

    Large changes

    • Remove use of reflect, this is a long standing idiom problem with the library. DiscordGo now uses go generate to generate event handlers. https://github.com/bwmarrin/discordgo/commit/36601253a4774c5fd6ec1949d7b815c1584639b7 https://github.com/bwmarrin/discordgo/pull/285
    • Rate limiting! Per route and global. https://github.com/bwmarrin/discordgo/pull/273
    • Support for message embeds. https://github.com/bwmarrin/discordgo/commit/717c8f2538e1855ca6499a48d8de043aa1ace584 https://github.com/bwmarrin/discordgo/pull/290
    • Support for new member role endpoint. https://github.com/bwmarrin/discordgo/pull/289
    • Support for reactions. https://github.com/bwmarrin/discordgo/pull/275 https://github.com/bwmarrin/discordgo/pull/283
    • Support for webhooks. https://github.com/bwmarrin/discordgo/pull/274
    • Support for relationships. https://github.com/bwmarrin/discordgo/pull/284
    • Support for user status. https://github.com/bwmarrin/discordgo/pull/258
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Jul 18, 2016)

    Lots of changes in this release! Too many, actually. I apologize for letting this drag out for so long. Checkout the commit history and the milestone tracker. Read all the below breaking changes and join the Discord chat channel to ask any questions! I've tried to document all the major changes here but it's possible I missed something!

    For future reference! DiscordGo now has 109 stars, 28 forks, and 10 contributors! The project keeps growing at a nice steady pace and I'm excited that it's been useful for so many people!

    Special Thanks To

    • https://github.com/iopred
    • https://github.com/jonas747
    • https://github.com/VagantemNumen
    • https://github.com/IMcPwn
    • https://github.com/Harmon758
    • https://github.com/b1naryth1ef
    • https://github.com/nstafie

    for all the help and contributions to the project! You are all very very appreciated.

    Notice / Breaking Changes

    • Creating a new session in any manor other than discordgo.New() is no longer officially supported. So if you do that and stuff breaks it's on you :) https://github.com/bwmarrin/discordgo/commit/d69fac5eaeca43639f32d575ef2edd4e47293906
    • Dropped support for Go 1.3 https://github.com/bwmarrin/discordgo/issues/177
    • Dropped support for Go 1.4, DiscordGo will maintain for the latest 3 main versions of Go.
    • Session.UserChannelPermissions is now deprecated. Please use State.UserChannelPermissions
    • When connecting to voice, if you set your bot as deaf then a udp listener will not be started on the voice connection. https://github.com/bwmarrin/discordgo/commit/4cac19c3f98714a36430ff74b1981660cf208211
    • Huge number of updates to improve voice connection and reconnects. This is still an unfinished area but it should now be much more stable than before.
    • Renamed RateLimit struct to TooManyRequests{} and added new event struct RateLimit{} which can be registerd to with AddHandler() and will be emitted anytime a HTTP 429 is received on the HTTP API. https://github.com/bwmarrin/discordgo/commit/098d7861a417db4f467241d128be4c0d4863e672 https://github.com/bwmarrin/discordgo/commit/38c51ce7883951848bab4e8464d5c13bf4a9aafa
    • No longer calling onEvent as goroutine, This is a stability improvement but may have a slight performance impact. This change will be reviewed again later. Doing this solves a data race issue with the Sequence number that must be tracked for gateway resume and heartbeats. Event specific handlers are now called as a goroutine though.
    • VoiceReady and UDPReady are deprecated. DataReady is.. semi-deprecated :) https://github.com/bwmarrin/discordgo/commit/af57bc1789e499c7b26805960c0a52328c3a401f
    • Session.UserChannelPermissions is deprecated. Please use State.UserChannelPermissions -- Also, UserChannelPermissions now pulls from State instead of calling REST API endpoints. https://github.com/bwmarrin/discordgo/commit/b225864d96a363036a675ae97823ea2d777ac0eb TODO!! TODO!!

    Enhancements

    • Sharding Support https://github.com/bwmarrin/discordgo/pull/166
    • Support for GuildEmbed and GuildIntegration endpoints https://github.com/bwmarrin/discordgo/pull/170
    • Added support for message pinning https://github.com/bwmarrin/discordgo/pull/223
    • Switch to Gateway V4 https://github.com/bwmarrin/discordgo/pull/167
    • Improvements to State https://github.com/bwmarrin/discordgo/pull/169 https://github.com/bwmarrin/discordgo/pull/168 https://github.com/bwmarrin/discordgo/pull/184 https://github.com/bwmarrin/discordgo/pull/193
    • Guild Integrations & Guild Embed support added https://github.com/bwmarrin/discordgo/pull/170
    • Support for additional fields added to Ready packet https://github.com/bwmarrin/discordgo/pull/174
    • Settings struct improvements https://github.com/bwmarrin/discordgo/pull/176
    • DefaultMessageNotifications added to Guild struct https://github.com/bwmarrin/discordgo/pull/179
    • Added example of a Airhorn style bot. https://github.com/bwmarrin/discordgo/pull/181
    • Support for Nicknames https://github.com/bwmarrin/discordgo/pull/187 https://github.com/bwmarrin/discordgo/pull/189
    • MentionRoles added to Message struct https://github.com/bwmarrin/discordgo/pull/188
    • Added support for streaming status updates https://github.com/bwmarrin/discordgo/pull/194
    • State now tracks roles https://github.com/bwmarrin/discordgo/pull/196
    • Added ability to disable/enable specific parts of State tracking https://github.com/bwmarrin/discordgo/pull/196
    • Added support for bulk delete https://github.com/bwmarrin/discordgo/pull/199
    • Added examples for setting bot avatar https://github.com/bwmarrin/discordgo/pull/201
    • Added Guild Positions to Settings struct https://github.com/bwmarrin/discordgo/pull/203
    • Added GuildChannelsReorder func https://github.com/bwmarrin/discordgo/pull/211
    • Change ALL_CAPS endpoints to more Go idiomatic naming. https://github.com/bwmarrin/discordgo/pull/212
    • Add Sharding support https://github.com/bwmarrin/discordgo/pull/215
    • Added UserGuildSettingsEdit func https://github.com/bwmarrin/discordgo/pull/216
    • Add ChannelMessage function to get a single message by ID https://github.com/bwmarrin/discordgo/pull/217
    • UserChannelPermissions now pulls information from State.
    • Added several new examples! Check them out.
    • Few more unit tests added.
    • Added a new logging system that provides a lot more useful detail. Log levels can be configured allowing you to customize how much detail is logged. See logging.go. Also logs now all prints to stderr instead of stdout.
    • Better rate limit handling using per URL mutex locks. https://github.com/bwmarrin/discordgo/commit/ad2aa618dd7966944cde222fa4505ad9235b9f38
    • We now send a heartbeat in response to gateway Op 1 message https://github.com/bwmarrin/discordgo/commit/53a826dd0d5c0a753d41c8dbd44516d42f6b158e
    • Resume to gateway connections when possible. https://github.com/bwmarrin/discordgo/commit/9bc6057ca7426bf80bec4dd66648e2baee90e9aa https://github.com/bwmarrin/discordgo/commit/c65d5091abb774607a3e4b8a90b613d14ecf759d https://github.com/bwmarrin/discordgo/commit/a9da8a5daf736d2bb3fa8af0265a32ff51a5ce01
    • Do not write concurrently to websocket connections https://github.com/bwmarrin/discordgo/commit/e9e9ef86b3df38001dcf2a069f4e77819951199d https://github.com/bwmarrin/discordgo/commit/cb9e30670f4eb65a1989c9c8ccf43d7c185fd85a
    • Added MFAEnabled to User struct https://github.com/bwmarrin/discordgo/commit/eeb2d4f62d1d70fe684792bb2420fb68ccee38f7
    • Semi-Properly close websocket connections https://github.com/bwmarrin/discordgo/commit/bbce2612b036b795c2da052c534df93f48818fb1

    Bug Fixes

    • Fix Invite unmarshal error https://github.com/bwmarrin/discordgo/pull/171
    • Fix ChannelMessageAck encoding type error https://github.com/bwmarrin/discordgo/pull/186
    • Fixed project name in LICENSE file https://github.com/bwmarrin/discordgo/pull/202
    • Correctly set Channel ID when changing voice channels https://github.com/bwmarrin/discordgo/pull/207
    • Several possible data race events have been fixed.
    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Apr 13, 2016)

  • v0.12.0(Apr 12, 2016)

    Notices

    Checkout the commit history and the milestone tracker for full change history.

    Breaking Changes

    • Raw OnEvent event now always fires and includes both the raw json data and any unmarshalled struct, if available, this can be used for many things including better logging or debugging. https://github.com/bwmarrin/discordgo/pull/156 https://github.com/bwmarrin/discordgo/commit/974ed749e11696949b50634f8c54adf0cf2448a1 https://github.com/bwmarrin/discordgo/commit/836e78d3d99723730facbb5be2b4611082d5ca46
    • VoiceChannelJoin now blocks until a connection is open or fails. The function now returns an error value that must be checked. You no longer need to have additional code to wait for the voice connection. https://github.com/bwmarrin/discordgo/commit/7ec5304bc9c176c4011626ff4103b1ed93dc5f44
    • UDPConn variable on Voice connections is no longer exported https://github.com/bwmarrin/discordgo/commit/3ffbbdcc569f86cdedb6d36dde5ed25752ed52e6
    • OP2 variable on Voice connections is no longer exported https://github.com/bwmarrin/discordgo/commit/cab4964d3aa7ee82391bf85de1de0b6b37b97bb7

    Enhancements

    • Support user guild settings update event https://github.com/bwmarrin/discordgo/pull/130
    • Ready events now also fire even after a unmarshalling error https://github.com/bwmarrin/discordgo/pull/131
    • Added support for setting guild region and verification level https://github.com/bwmarrin/discordgo/pull/132 https://github.com/bwmarrin/discordgo/pull/136
    • Voice now uses encryption instead of plain communication https://github.com/bwmarrin/discordgo/issues/133
    • Discordgo logo is now transparent! https://github.com/bwmarrin/discordgo/pull/134
    • UserChannelPermissions function added that provides the user permissions for a specific channel https://github.com/bwmarrin/discordgo/pull/140
    • Added multi-guild voice support https://github.com/bwmarrin/discordgo/pull/141
    • Changed all fmt.Print logging to log.Print https://github.com/bwmarrin/discordgo/pull/155 https://github.com/bwmarrin/discordgo/pull/156
    • State performance fixes and other improvements https://github.com/bwmarrin/discordgo/pull/157 https://github.com/bwmarrin/discordgo/pull/158 https://github.com/bwmarrin/discordgo/pull/159 https://github.com/bwmarrin/discordgo/pull/160
    • Support for Guild lazy loading https://github.com/bwmarrin/discordgo/pull/161
    • Added Oauth2 functions for creating user applications and bot accounts. See oauth2.go
    • Added Event for Voice Speaking Updates https://github.com/bwmarrin/discordgo/commit/584b06aae5b7cabb4c9e6c52faa4fe81a55767f8
    • Added initial support for PresenseReplace events https://github.com/bwmarrin/discordgo/commit/6e568533b26724ffc33d67c1b66e0ce10bbefe23

    Bugs

    • Fixed a bug in voice connections where it would attempt to open a connection before all information was received. https://github.com/bwmarrin/discordgo/commit/7bbcfe7e0ea24b6939c5d1c799366323adb71954
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Feb 21, 2016)

    Notices

    Lots of changes in this release! Checkout the commit history and the milestone tracker. Read all the below breaking changes and join the Discord chat channel to ask any questions!

    Breaking Changes

    • Renamed Opus channel to OpusSend b4b144edb3db04dced5e09502555cdaf14b17a8a
    • Huge breaking change to how user callback for events are handled. Please see commit notes here https://github.com/bwmarrin/discordgo/pull/109 28236b429c2b52c2f32ffa5e4e544bf7ffb954b5
    • ChannelMessages() func now takes beforeID and afterID as strings. https://github.com/bwmarrin/discordgo/pull/127 https://github.com/bwmarrin/discordgo/issues/120
    • Removed func GuildInviteCreate() which attempts to use a non-existent endpoint. This probably won't effect many people :) https://github.com/bwmarrin/discordgo/issues/100

    Enhancements

    • With AddHandler() function you can now register any number of callback functions to any event. The function also returns a func that if called will remove the added function. See https://github.com/bwmarrin/discordgo/pull/109 https://github.com/iopred/discordgo/commit/79247272fffa4f850fbc06486f454d3d4d55e8a6
    • Lots of improvements to Voice functionality, changing channels and voice guilds now works. Library voice API is much more stable now and less likely to change. https://github.com/bwmarrin/discordgo/issues/123 https://github.com/bwmarrin/discordgo/issues/112 https://github.com/bwmarrin/discordgo/issues/115
    • Added func ChannelVoiceLeave() which can be used to disconnect from voice entirely. https://github.com/bwmarrin/discordgo/issues/118
    • Added Bitrate field to Channel struct which will show the configured bitrate for voice channels. https://github.com/bwmarrin/discordgo/issues/116
    • Added new Guild Member funcs GuildMembers() and GuildMember() https://github.com/bwmarrin/discordgo/pull/114 https://github.com/bwmarrin/discordgo/issues/106 https://github.com/bwmarrin/discordgo/issues/105
    • Added GuildLeave() func to support the new method of leaving a guild (vs deleting) 0dea8696c0d37bd8a0d14f097f1d1aaf0d7f8e81 https://github.com/bwmarrin/discordgo/pull/110
    • Added func GuildMemberMove() that can be used to move a guild member from once voice channel to another (or to no channel) https://github.com/bwmarrin/discordgo/issues/92 22bb771120f3852013d70672069fb9923d4441d4
    • Added OpusRecv channel to Session.Voice. This can be used to receive opus audio data from Discord. b4b144edb3db04dced5e09502555cdaf14b17a8a 68308c6f977f6c9a730d7b4297040862a7726dc7 https://github.com/bwmarrin/discordgo/issues/54 See the dgvoice package for examples on how to make use of this.
    • Added support for sending TTS messages with ChannelMessageSendTTS func 363a28a3fbc5089aa9a15e7a2467c15c0fe0637b https://github.com/bwmarrin/discordgo/pull/108
    • Added support for uploading files to channel with ChannelFileSend func bf3f2c548a06d5cb8ac2c36247b22dce3816fda2 https://github.com/bwmarrin/discordgo/pull/104
    • Added user callback support for the VoiceServerUpdate event 9d0be66347a07faf56439de89695a7853319ae6 https://github.com/bwmarrin/discordgo/issues/103

    Bug Fixes

    • General cleanup/linting, several typo's, spelling fixes, comments added, dead code removed, etc.
    • VOICE_STATE_UPDATE event now calls the proper callback function https://github.com/bwmarrin/discordgo/issues/101
    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Jan 27, 2016)

    Notice

    • Session.Voice.UDPConn and Session.Voice.OP2 may be unexported in the v0.11.0 release.

    Enhancements

    • If Session.ShouldReconnectOnError is set to true (defaults to true when using New()) the library will now try to reconnect to Discord all on it's own when it disconnects due to an error. This will slowly back off attempts on each try until it hits 10 minutes then it will try every 10 minutes. 54e14babb252c8154f6dbf9e5fbece23eea1b03f
    • Added support for compressed websocket data. This is enabled by default when using the New() func. You can disable/enable it by setting the Session.Compress bool to true/false. fd32614a632daf0e6b94ccc089c23eda4f2c47e9
    • Added new function, GuildMemberEdit that can be used to edit the roles of a Guild Member. 46f893cf265d12d9234b7ada3986ee8a7ffe2a65
    • Session.Voice.Opus channel added. Opus data sent to this channel (48000 sampling, 960 size) will be sent to Discord. NOTE it is possible this channel name could change as Voice is still a bit on the experimental side. 4b1baec7574e2bc9d4869bbc7599367800601a50
    • Added OnConnect and OnDisconnect event handlers 54e14babb252c8154f6dbf9e5fbece23eea1b03f
    • New() func now also accepts Token, User, and Pass together b5a4680b98a92dd2fec98da52775730204b93a7c
    • State tracking feature now also tracks messages bf20ffffa8cea3a89fbfa30af2cfe78087a4d4fd
    • Added funcs GuildSplash() and GuildIcon() b4dfce0fee21f59bae8c09546bcedd7458231ad2

    Breaking Changes

    • Changes to Login func will break existing uses of the function. Please use New() function if possible :). Otherwise, Login function no longer returns the Token, instead it stores the token directly into the Session.Token variable. b5a4680b98a92dd2fec98da52775730204b93a7c
    • Changes to New(), Open(), and Listen(). New() no longer opens a websocket connection, which allows you to use it for cases where you only need the restapi and also allows you to setup callback functions before you connect to the websocket. Listen() has been removed. Open() will now call Listen in a goroutine. 94b087cd495406fe6ec9da3946a22197058a1d07
    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Jan 12, 2016)

    Alright everybody! Here we are at v0.9.0 :) We've got 16 stars, 5 forks, and 5 contributors :) We're growing into something real here.

    Lots of changes so as always check the commit history for more detail and be ready to make some "minor" changes to your code when you update your local copy. See some of the bigger, and breaking changes below.

    • Go Tests added! Not a lot but a few and we plan to keep adding more. At about 20% coverage now.
    • TravisCI now testing Go 1.3, 1.4,and 1.5 for us to make sure we compile on older versions.
    • New func, Register(username) lets you register a new account on Discord.
    • Message struct and added funcs now in message.go
    • Some cleanup to the built-in Voice support, should be a more stable API now.
    • BREAKING To join a voice channel you now must call ChannelVoiceJoin func.
    • BREAKING Some voice variables were hidden, some renamed, "V" prefixed voice stuff is now in Session.Voice.[var/func]
    • BREAKING All API and Event funcs were converted to use and return pointers.
    • BREAKING All funcs that only work for the authenticated user, now do not accept a userID variable. They default to "@me"
    • Voice now sends a udp keepalive packet, and paves the way to voice receive support
    • UserAvatar now returns an Image!
    • Added some initial support for dealing with Rate Limits.
    • Added support for message Attachments & Embeds
    • Added GUILD_SPLASH endpoint
    • Start of better logging! JSON Unmarshal errors now return a consistent factory error.
    Source code(tar.gz)
    Source code(zip)
Golang bindings for the Telegram Bot API

Golang bindings for the Telegram Bot API

null 4.2k Jan 2, 2023
(Golang) Go bindings for the Hugging Face Inference API

hfapigo (Golang) Go bindings for the Hugging Face Inference API. Directly call any model available in the Model Hub. An API key is required for author

Tanner Kvarfordt 7 Dec 18, 2022
Go bindings for libappindicator3 C library

go-appindicator Go bindings for libappindicator3 C library. Libappindicator is a library to allow applications to export a menu into the Unity Menu ba

Gopher Libs 3 Sep 26, 2022
🤖🚀📦 A Discord Bot for accessing the cdnjs platform

A bridge between https://cdnjs.com/api and Discord Big shoutout to Br1ght0ne for helping me with writing helpers.go/SplitIn

Ilya Revenko 17 Aug 17, 2022
🤖 Chegg answers requested and sent by the Discord BOT to the targeted user.

"I believe that open-source resources are a must for everyone around. Especially in the field of education. As Chegg costs some money monthly, unfortunately, not all of us are capable of to charge ourselves that cost, which ends up blocking all those valuable resources to us. That is why, I have developed this bot, which unblurs the blurred question answers and sends them to you. I will develop it to a next level in the upcoming days, whereas, it will send the images/text, answers in short, directly through the Discord server you are in, or just DM/PM."

Vusal Ismayilov 33 Aug 20, 2021
Abusing Discord for unlimited cloud storage

Discord Cloud Storage Abusing Discord's servers for unlimited cloud storage! So, what is this? Infamous 8MB limit for non-nitro users can get pretty a

nekiwo 24 Nov 26, 2022
DiscSpam is the best free and open source tool to spam/raid Discord servers.

DiscSpam Fast, Free, Easy to use Discord.com raid tool Report Bug , Request Feature About The Project There are a few Discord raid tools on GitHub, ho

null 53 Dec 27, 2022
Leave Discord servers using the folder names.

leavemealone ------------ Leave Discord servers using the folder names. Usage ----- 1. `export TOKEN="<token>"` 2. `go run . <folder_name>` 3. Chec

null 5 Feb 4, 2022
Go library for interacting with the Discord API (work-in-progress)

zombiezen Go Client for Discord zombiezen.com/go/discord is a WIP Go library for interacting with the Discord API. It differs from DiscordGo by provid

Ross Light 1 Nov 9, 2022
Easy creation of review tasks for the Jira with a Discord notifications.

easy-jira-task-review Easy creation of review tasks for the Jira with a Discord notifications. Any ideas and help are welcome Installation Install go

Vasyl Naumenko 5 Dec 1, 2022
Desenvolvendo-Sistema-Planejamento-Financeiro-GoLang - Developing a Financial Planning System with Golang

dio-expert-session-finance Pré Desenvolvimento Vamos criar um projeto no Github

hugoportela 1 Jan 27, 2022
Client-server-golang-sqs - Client Server with SQS and golang

Client Server with SQS and golang Multi-threaded client-server demo with Go What

null 0 Feb 14, 2022
Golang-action - A template repository for writing custom GitHub Actions in Golang

Golang Action A template repository for writing custom GitHub Actions in Golang.

Taliesin Millhouse 0 Feb 12, 2022
Simple golang airtable API wrapper

Golang Airtable API A simple #golang package to access the Airtable API. Table of contents Golang Airtable API Table of contents Installation Basic us

mehanizm 48 Jan 5, 2023
Golang client for ethereum json rpc api

Ethrpc Golang client for ethereum JSON RPC API. web3_clientVersion web3_sha3 net_version net_peerCount net_listening eth_protocolVersion eth_syncing e

Andrey 247 Jan 7, 2023
A golang client for the Twitch v3 API - public APIs only (for now)

go-twitch Test CLIENT_ID="<my client ID>" go test -v -cover Usage Example File: package main import ( "log" "os" "github.com/knspriggs/go-twi

Kristian Spriggs 22 Sep 27, 2022
This is a Golang wrapper for working with TMDb API. It aims to support version 3.

This is a Golang wrapper for working with TMDb API. It aims to support version 3. An API Key is required. To register for one, head over to themoviedb

Cyro Dubeux 64 Dec 27, 2022
a Go (Golang) MusicBrainz WS2 client library - work in progress

gomusicbrainz a Go (Golang) MusicBrainz WS2 client library - a work in progress. Current state Currently GoMusicBrainz provides methods to perform sea

Michael Wendland 47 Sep 28, 2022
⚡️ SharePoint authentication, HTTP client & fluent API wrapper for Go (Golang)

Gosip - SharePoint authentication, HTTP client & fluent API wrapper for Go (Golang) Main features Unattended authentication using different strategies

Andrew Koltyakov 91 Jan 2, 2023