func parseBotToken(token string) string {
	return "Bot " + token
}
parseBotToken parses a regular token to a bot token that is understandable for discord.
For more info, see here: https://pkg.go.dev/github.com/bwmarrin/discordgo@v0.22.1#New
package discord
import (
	"context"
	"github.com/bwmarrin/discordgo"
	"github.com/pkg/errors"
)
type Discord struct {
	client     *discordgo.Session
	channelIDs []string
}
func New() *Discord {
	return &Discord{
		client:     &discordgo.Session{},
		channelIDs: []string{},
	}
}
func (d *Discord) authenticate(credentials ...string) error {
	client, err := discordgo.New(credentials)
	if err != nil {
		return err
	}
	client.Identify.Intents = discordgo.IntentsGuildMessageTyping
	d.client = client
	return nil
}
func (d *Discord) AuthenticateWithCredentials(email, password string) error {
	return d.authenticate(email, password)
}
func (d *Discord) AuthenticateWithCredentialsFull(email, password, token string, isOAuthToken bool) error {
	if isOAuthToken {
		token = parseOAuthToken(token)
	} else {
		token = parseBotToken(token)
	}
	return d.authenticate(email, password, token)
}
func (d *Discord) AuthenticateWithBotToken(token string) error {
	token = parseBotToken(token)
	return d.authenticate(token)
}
func (d *Discord) AuthenticateWithOAuth2Token(token string) error {
	token = parseOAuthToken(token)
	return d.authenticate(token)
}