# Introduction

Gocord is an opinionated framework for building Discord bots in Go. It exists because I was tired of copy-pasting the same code over and over again whenever I built a new bot. This framework uses [discordgo](https://github.com/bwmarrin/discordgo) to interact with the Discord API.

Gocord may not be suitable for all users. This is the framework that works for me, and I have found it to be a good modular fit for any bot that I build. Contributions are welcome, I am open to any suggestions to make this framework better.

## Features

* Easy to use - get started in seconds.
* Modular - gocord gives you the bones to build whatever you want.
* Fast - gocord's design is optimized for speed, both in DX and application performance.
* Open - gocord is entirely open source, you can see every template, function, and design decision.

To get started, read the [Getting Started](https://github.com/dickeyy/gocord/blob/main/docs/getting-started.md) guide.

## Why does it exist?

As I said earlier, I was tired of copy-pasting the same code over and over again whenever I built a new bot. After I designed the inital framework, I wanted an easier way to quickly prototype a bot. How useful this framework is to you, however, I don't know. I have tried my best to document everything so that you can learn how to use it effectively, but, this is an opinionated way of doing things. This way works for me, and if it also works for you, great! If it doesn't, maybe you can take something from it and design your own.

## Contributing

Contributions are welcome! Please open an issue before working on development, so that we can discuss the proposed changes before you spend time working on them. More details on my contribution philosophy can be found [here](https://github.com/dickeyy/gocord/blob/main/development/contributing.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gocord.kyle.so/start-here/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
