8000 GitHub - disgoorg/disgo: A modular Golang Discord API Wrapper · GitHub
[go: up one dir, main page]

Skip to content
  • disgoorgPublic

    Repository files navigation

    Go Reference Go Report Go Version License DisGo Version DisGo Discord

    discord gopher

    DisGo

    DisGo is a Discord API wrapper written in Golang aimed to be consistent, modular, customizable and higher level than other Discord API wrappers.

    Summary

    1. Stability
    2. Features
    3. Missing Features
    4. Getting Started
    5. Documentation
    6. Examples
    7. Other interesting Projects to look at
    8. Other Golang Discord Libraries
    9. Troubleshooting
    10. Contributing
    11. License

    Stability

    The public API of DisGo is mostly stable at this point in time. Smaller breaking changes can happen before the v1 is released.

    After v1 is released breaking changes may only happen if the Discord API requires them. They tend to break their released API versions now and then. In general for every new Discord API version the major version of DisGo should be increased and with that breaking changes between non-major versions should be held to a minimum.

    Features

    Missing Features

    Getting Started

    Installing

    $ go get github.com/disgoorg/disgo

    Building a DisGo Instance

    Build a bot client to interact with the Discord API

    package main
    
    import (
    	"context"
    	"os"
    	"os/signal"
    	"syscall"
    
    	"github.com/disgoorg/disgo"
    	"github.com/disgoorg/disgo/bot"
    	"github.com/disgoorg/disgo/events"
    	"github.com/disgoorg/disgo/gateway"
    )
    
    func main() {
    	client, err := disgo.New("token",
    		// set gateway options
    		bot.WithGatewayConfigOpts(
    			// set enabled intents
    			gateway.WithIntents(
    				gateway.IntentGuilds,
    				gateway.IntentGuildMessages,
    				gateway.IntentDirectMessages,
    			),
    		),
    		// add event listeners
    		bot.WithEventListenerFunc(func(e *events.MessageCreate) {
    			// event code here
    		}),
    	)
    	if err != nil {
    		panic(err)
    	}
    	// connect to the gateway
    	if err = client.OpenGateway(context.TODO()); err != nil {
    		panic(err)
    	}
    
    	s := make(chan os.Signal, 1)
    	signal.Notify(s, syscall.SIGINT, syscall.SIGTERM)
    	<-s
    }

    Full Ping Pong Example

    A full Ping Pong example can also be found here

    Logging

    DisGo uses slog for logging.

    Documentation

    Documentation is wip and can be found under

    • Go Reference
    • Discord Documentation

    GitHub Wiki is currently under construction. We appreciate help here.

    Examples

    You can find examples here

    There is also a bot template with commands & db here

    or in these projects:

    Libraries for DisGo

    • strut is a struct oriented command framework for disgo

    Other interesting Projects to look at

    Is a standalone audio sending node based on Lavaplayer and JDA-Audio. Which allows for sending audio without it ever reaching any of your shards. Lavalink can be used in combination with DisGolink for music Bots

    Being used in production by FredBoat, Dyno, LewdBot, and more.

    Is a Lavalink-Client which can be used to communicate with Lavalink to play/search tracks

    Other Golang Discord Libraries

    Troubleshooting

    For help feel free to open an issue or reach out on Discord

    Contributing

    Contributions are welcomed but for bigger changes we recommend first reaching out via Discord or create an issue to discuss your problems, intentions and ideas.

    License

    Distributed under the License. See LICENSE for more information.

    Supported by Jetbrains

    Jetbrain Open Source Community Support

    Releases

    Used by

    Contributors

    Languages

    0