Documentation ¶
Index ¶
- Constants
- Variables
- type APIRoute
- type CDNRoute
- type CompiledAPIRoute
- type CompiledCDNRoute
- type CompiledRoute
- type CustomRoute
- type File
- type FileExtension
- type FileFlags
- func (f FileFlags) Add(flags ...FileFlags) FileFlags
- func (f FileFlags) Has(flag FileFlags) bool
- func (f FileFlags) HasAll(flags ...FileFlags) bool
- func (f FileFlags) Missing(flag FileFlags) bool
- func (f FileFlags) MissingAny(flags ...FileFlags) bool
- func (f FileFlags) Remove(flags ...FileFlags) FileFlags
- type Method
- type MultipartBuffer
- type QueryValues
- type RestClient
- type RestError
- type Route
Constants ¶
const ( APIVersion = "9" Base = "https://discord.com/" CDN = "https://cdn.discordapp.com" API = Base + "api/v" + APIVersion )
Discord Endpoint Constants
const Github = "https://github.com/DisgoOrg/restclient"
Github is the restclient github url
Variables ¶
var ( GetGateway = NewAPIRoute(GET, "/gateway") GetGatewayBot = NewAPIRoute(GET, "/gateway/bot") GetBotApplication = NewAPIRoute(GET, "/oauth2/applications/@me") GetVoiceRegions = NewAPIRoute(GET, "/voice/regions") )
Misc
var ( GetUser = NewAPIRoute(GET, "/users/{user.id}") GetSelfUser = NewAPIRoute(GET, "/users/@me") UpdateSelfUser = NewAPIRoute(PATCH, "/users/@me") GetGuilds = NewAPIRoute(GET, "/users/@me/guilds", "before", "after", "limit") LeaveGuild = NewAPIRoute(DELETE, "/users/@me/guilds/{guild.id}") GetDMChannels = NewAPIRoute(GET, "/users/@me/channels") CreateDMChannel = NewAPIRoute(POST, "/users/@me/channels") )
Users
var ( GetGuild = NewAPIRoute(GET, "/guilds/{guild.id}") GetGuildPreview = NewAPIRoute(GET, "/guilds/{guild.id}/preview") CreateGuild = NewAPIRoute(POST, "/guilds") UpdateGuild = NewAPIRoute(PATCH, "/guilds/{guild.id}") DeleteGuild = NewAPIRoute(DELETE, "/guilds/{guild.id}") GetGuildVanityURL = NewAPIRoute(GET, "/guilds/{guild.id}/vanity-url") CreateGuildChannel = NewAPIRoute(POST, "/guilds/{guild.id}/channels") GetGuildChannels = NewAPIRoute(GET, "/guilds/{guild.id}/channels") UpdateChannelPositions = NewAPIRoute(PATCH, "/guilds/{guild.id}/channels") GetBans = NewAPIRoute(GET, "/guilds/{guild.id}/bans") GetBan = NewAPIRoute(GET, "/guilds/{guild.id}/bans/{user.id}") AddBan = NewAPIRoute(PUT, "/guilds/{guild.id}/bans/{user.id}") DeleteBan = NewAPIRoute(DELETE, "/guilds/{guild.id}/bans/{user.id}") GetMember = NewAPIRoute(GET, "/guilds/{guild.id}/members/{user.id}") GetMembers = NewAPIRoute(GET, "/guilds/{guild.id}/members") SearchMembers = NewAPIRoute(GET, "/guilds/{guild.id}/members/search", "query", "limit") AddMember = NewAPIRoute(PUT, "/guilds/{guild.id}/members/{user.id}") UpdateMember = NewAPIRoute(PATCH, "/guilds/{guild.id}/members/{user.id}") RemoveMember = NewAPIRoute(DELETE, "/guilds/{guild.id}/members/{user.id}", "reason") AddMemberRole = NewAPIRoute(PUT, "/guilds/{guild.id}/members/{user.id}/roles/{role.id}") RemoveMemberRole = NewAPIRoute(DELETE, "/guilds/{guild.id}/members/{user.id}/roles/{role.id}") UpdateSelfNick = NewAPIRoute(PATCH, "/guilds/{guild.id}/members/@me/nick") GetPruneMembersCount = NewAPIRoute(GET, "/guilds/{guild.id}/prune") PruneMembers = NewAPIRoute(POST, "/guilds/{guild.id}/prune") GetAllWebhooks = NewAPIRoute(GET, "/guilds/{guild.id}/webhooks") GetAuditLogs = NewAPIRoute(GET, "/guilds/{guild.id}/audit-logs", "user_id", "action_type", "before", "limit") GetGuildVoiceRegions = NewAPIRoute(GET, "/guilds/{guild.id}/regions") GetIntegrations = NewAPIRoute(GET, "/guilds/{guild.id}/integrations") CreateIntegration = NewAPIRoute(POST, "/guilds/{guild.id}/integrations") UpdateIntegration = NewAPIRoute(PATCH, "/guilds/{guild.id}/integrations/{integration.id}") DeleteIntegration = NewAPIRoute(DELETE, "/guilds/{guild.id}/integrations/{integration.id}") SyncIntegration = NewAPIRoute(POST, "/guilds/{guild.id}/integrations/{integration.id}/sync") GetGuildTemplate = NewAPIRoute(GET, "/guilds/templates/{template.code}") GetGuildTemplates = NewAPIRoute(GET, "/guilds/{guild.id}/templates") CreateGuildTemplate = NewAPIRoute(POST, "/guilds/{guild.id}/templates") SyncGuildTemplate = NewAPIRoute(PUT, "/guilds/{guild.id}/templates/{template.code}") UpdateGuildTemplate = NewAPIRoute(PATCH, "/guilds/{guild.id}/templates/{template.code}") DeleteGuildTemplate = NewAPIRoute(DELETE, "/guilds/{guild.id}/templates/{template.code}") CreateGuildFromTemplate = NewAPIRoute(POST, "/guilds/templates/{template.code}") )
Guilds
var ( GetRoles = NewAPIRoute(GET, "/guilds/{guild.id}/roles") GetRole = NewAPIRoute(GET, "/guilds/{guild.id}/roles/{role.id}") CreateRole = NewAPIRoute(POST, "/guilds/{guild.id}/roles") UpdateRoles = NewAPIRoute(PATCH, "/guilds/{guild.id}/roles") UpdateRole = NewAPIRoute(PATCH, "/guilds/{guild.id}/roles/{role.id}") UpdateRolePositions = NewAPIRoute(PATCH, "/guilds/{guild.id}/roles") DeleteRole = NewAPIRoute(DELETE, "/guilds/{guild.id}/roles/{role.id}") )
Roles
var ( GetChannel = NewAPIRoute(GET, "/channels/{channel.id}") UpdateChannel = NewAPIRoute(PATCH, "/channels/{channel.id}") DeleteChannel = NewAPIRoute(DELETE, "/channels/{channel.id}") GetWebhooks = NewAPIRoute(GET, "/channels/{channel.id}/webhooks") CreateWebhook = NewAPIRoute(POST, "/channels/{channel.id}/webhooks") GetPermissionOverrides = NewAPIRoute(GET, "/channels/{channel.id}/permissions") GetPermissionOverride = NewAPIRoute(GET, "/channels/{channel.id}/permissions/{overwrite.id}") CreatePermissionOverride = NewAPIRoute(PUT, "/channels/{channel.id}/permissions/{overwrite.id}") UpdatePermissionOverride = NewAPIRoute(PUT, "/channels/{channel.id}/permissions/{overwrite.id}") DeletePermissionOverride = NewAPIRoute(DELETE, "/channels/{channel.id}/permissions/{overwrite.id}") SendTyping = NewAPIRoute(POST, "/channels/{channel.id}/typing") )
Channels
var ( CreateThreadWithMessage = NewAPIRoute(POST, "/channels/{channel.id}/messages/{message.id}/threads") CreateThread = NewAPIRoute(POST, "/channels/{channel.id}/threads") JoinThread = NewAPIRoute(PUT, "/channels/{channel.id}/thread-members/@me") LeaveThread = NewAPIRoute(DELETE, "/channels/{channel.id}/thread-members/@me") AddThreadMember = NewAPIRoute(PUT, "/channels/{channel.id}/thread-members/{user.id}") RemoveThreadMember = NewAPIRoute(DELETE, "/channels/{channel.id}/thread-members/{user.id}") GetThreadMembers = NewAPIRoute(GET, "/channels/{channel.id}/thread-members") GetActiveThreads = NewAPIRoute(GET, "/channels/{channel.id}/threads/active") GetArchivedPublicThreads = NewAPIRoute(GET, "/channels/{channel.id}/threads/archived/public") GetArchivedPrivateThreads = NewAPIRoute(GET, "/channels/{channel.id}/threads/archived/private") GetJoinedAchievedPrivateThreads = NewAPIRoute(GET, "/channels/{channel.id}/users/@me/threads/archived/private") )
Threads
var ( GetMessages = NewAPIRoute(GET, "/channels/{channel.id}/messages") GetMessage = NewAPIRoute(GET, "/channels/{channel.id}/messages/{message.id}") CreateMessage = NewAPIRoute(POST, "/channels/{channel.id}/messages") UpdateMessage = NewAPIRoute(PATCH, "/channels/{channel.id}/messages/{message.id}") DeleteMessage = NewAPIRoute(DELETE, "/channels/{channel.id}/messages/{message.id}") BulkDeleteMessage = NewAPIRoute(POST, "/channels/{channel.id}/messages/bulk-delete") GetPinnedMessages = NewAPIRoute(GET, "/channels/{channel.id}/pins") AddPinnedMessage = NewAPIRoute(PUT, "/channels/{channel.id}/pins/{message.id}") RemovePinnedMessage = NewAPIRoute(DELETE, "/channels/{channel.id}/pins/{message.id}") CrosspostMessage = NewAPIRoute(POST, "/channels/{channel.id}/messages/{message.id}/crosspost") GetReactions = NewAPIRoute(GET, "/channels/{channel.id}/messages/{message.id}/reactions/{emoji}") AddReaction = NewAPIRoute(PUT, "/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me") RemoveOwnReaction = NewAPIRoute(DELETE, "/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me") RemoveUserReaction = NewAPIRoute(DELETE, "/channels/{channel.id}/messages/{message.id}/reactions/{emoji}/{user.id}") RemoveAllReactions = NewAPIRoute(DELETE, "/channels/{channel.id}/messages/{message.id}/reactions") RemoveAllReactionsEmoji = NewAPIRoute(DELETE, "/channels/{channel.id}/messages/{message.id}/reactions/{emoji}") )
Messages
var ( GetEmotes = NewAPIRoute(GET, "/guilds/{guild.id}/emojis") GetEmote = NewAPIRoute(GET, "/guilds/{guild.id}/emojis/{emoji.id}") CreateEmote = NewAPIRoute(POST, "/guilds/{guild.id}/emojis") UpdateEmote = NewAPIRoute(PATCH, "/guilds/{guild.id}/emojis/{emote.id}") DeleteEmote = NewAPIRoute(DELETE, "/guilds/{guild.id}/emojis/{emote.id}") )
Emotes
var ( GetWebhook = NewAPIRoute(GET, "/webhooks/{webhook.id}") GetWebhookWithToken = NewAPIRoute(GET, "/webhooks/{webhook.id}/{webhook.token}") UpdateWebhook = NewAPIRoute(PATCH, "/webhooks/{webhook.id}") UpdateWebhookWithToken = NewAPIRoute(PATCH, "/webhooks/{webhook.id}/{webhook.token}") DeleteWebhook = NewAPIRoute(DELETE, "/webhooks/{webhook.id}") DeleteWebhookWithToken = NewAPIRoute(DELETE, "/webhooks/{webhook.id}/{webhook.token}") CreateWebhookMessage = NewAPIRoute(POST, "/webhooks/{webhook.id}/{webhook.token}", "wait", "thread_id") CreateWebhookMessageSlack = NewAPIRoute(POST, "/webhooks/{webhook.id}/{webhook.token}/slack", "wait") CreateWebhookMessageGithub = NewAPIRoute(POST, "/webhooks/{webhook.id}/{webhook.token}/github", "wait") UpdateWebhookMessage = NewAPIRoute(PATCH, "/webhooks/{webhook.id}/{webhook.token}/messages/{message.id}") DeleteWebhookMessage = NewAPIRoute(DELETE, "/webhooks/{webhook.id}/{webhook.token}/messages/{message.id}") )
Webhooks
var ( GetInvite = NewAPIRoute(GET, "/invites/{code}") CreateInvite = NewAPIRoute(POST, "/channels/{channel.id}/invites") DeleteInvite = NewAPIRoute(DELETE, "/invites/{code}") GetGuildInvite = NewAPIRoute(GET, "/guilds/{guild.id}/invites") GetChannelInvites = NewAPIRoute(GET, "/channels/{channel.id}/invites") )
Invites
var ( GetGlobalCommands = NewAPIRoute(GET, "/applications/{application.id}/commands") GetGlobalCommand = NewAPIRoute(GET, "/applications/{application.id}/command/{command.id}") CreateGlobalCommand = NewAPIRoute(POST, "/applications/{application.id}/commands") SetGlobalCommands = NewAPIRoute(PUT, "/applications/{application.id}/commands") UpdateGlobalCommand = NewAPIRoute(PATCH, "/applications/{application.id}/commands/{command.id}") DeleteGlobalCommand = NewAPIRoute(DELETE, "/applications/{application.id}/commands") GetGuildCommands = NewAPIRoute(GET, "/applications/{application.id}/guilds/{guild.id}/commands") GetGuildCommand = NewAPIRoute(GET, "/applications/{application.id}/guilds/{guild.id}/command/{command.id}") CreateGuildCommand = NewAPIRoute(POST, "/applications/{application.id}/guilds/{guild.id}/commands") SetGuildCommands = NewAPIRoute(PUT, "/applications/{application.id}/guilds/{guild.id}/commands") UpdateGuildCommand = NewAPIRoute(PATCH, "/applications/{application.id}/guilds/{guild.id}/commands/{command.id}") DeleteGuildCommand = NewAPIRoute(DELETE, "/applications/{application.id}/guilds/{guild.id}/commands") GetGuildCommandPermissions = NewAPIRoute(GET, "/applications/{application.id}/guilds/{guild.id}/commands/permissions") GetGuildCommandPermission = NewAPIRoute(GET, "/applications/{application.id}/guilds/{guild.id}/commands/{command.id}/permissions") SetGuildCommandsPermissions = NewAPIRoute(PUT, "/applications/{application.id}/guilds/{guild.id}/commands/permissions") SetGuildCommandPermissions = NewAPIRoute(PUT, "/applications/{application.id}/guilds/{guild.id}/commands/{command.id}/permissions") CreateInteractionResponse = NewAPIRoute(POST, "/interactions/{interaction.id}/{interaction.token}/callback") UpdateInteractionResponse = NewAPIRoute(PATCH, "/webhooks/{application.id}/{interaction.token}/messages/@original") DeleteInteractionResponse = NewAPIRoute(DELETE, "/webhooks/{application.id}/{interaction.token}/messages/@original") CreateFollowupMessage = NewAPIRoute(POST, "/webhooks/{application.id}/{interaction.token}") UpdateFollowupMessage = NewAPIRoute(PATCH, "/webhooks/{application.id}/{interaction.token}/messages/{message.id}") DeleteFollowupMessage = NewAPIRoute(DELETE, "/webhooks/{application.id}/{interaction.token}/messages/{message.id}") )
Interactions
var ( CustomEmoji = NewCDNRoute("/emojis/{emote.id}", []FileExtension{PNG, GIF}) GuildIcon = NewCDNRoute("/icons/{guild.id}/{guild.icon.hash}", []FileExtension{PNG, JPEG, WEBP, GIF}) GuildSplash = NewCDNRoute("/splashes/{guild.id}/{guild.splash.hash}", []FileExtension{PNG, JPEG, WEBP}) GuildDiscoverySplash = NewCDNRoute("/discovery-splashes/{guild.id}/{guild.discovery.splash.hash}", []FileExtension{PNG, JPEG, WEBP}) GuildBanner = NewCDNRoute("/banners/{guild.id}/{guild.banner.hash}", []FileExtension{PNG, JPEG, WEBP}) DefaultUserAvatar = NewCDNRoute("/embed/avatars/{user.discriminator%5}", []FileExtension{PNG}) UserAvatar = NewCDNRoute("/avatars/{user.id}/{user.avatar.hash}", []FileExtension{PNG, JPEG, WEBP, GIF}) UserBanner = NewCDNRoute("/banners/{user.id}/{user.banner.hash}", []FileExtension{PNG, JPEG, WEBP, GIF}) ApplicationIcon = NewCDNRoute("/app-icons/{application.id}/{icon.hash}", []FileExtension{PNG, JPEG, WEBP}) ApplicationCover = NewCDNRoute("/app-assets/{application.id}/{cover.image.hash}", []FileExtension{PNG, JPEG, WEBP}) ApplicationAsset = NewCDNRoute("/app-assets/{application.id}/{asset.id}", []FileExtension{PNG, JPEG, WEBP}) AchievementIcon = NewCDNRoute("/app-assets/{application.id}/achievements/{achievement.id}/icons/{icon.hash}", []FileExtension{PNG, JPEG, WEBP}) TeamIcon = NewCDNRoute("/team-icons/{team.id}/{team.icon.hash}", []FileExtension{PNG, JPEG, WEBP}) Attachments = NewCDNRoute("/attachments/{channel.id}/{attachment.id}/{file.name}", []FileExtension{BLANK}) )
CDN
var ( GatewayURL = NewRoute(API+"/gateway", "v", "encoding", "compress") InviteURL = NewRoute("https://discord.gg/{code}") )
Other
var ( ErrBadGateway = errors.New("bad gateway could not reach destination") ErrBadRequest = errors.New("bad request please check your request") ErrRatelimited = errors.New("too many requests") )
all rest errors
var Version = getVersion()
Version returns the current used restclient version in the format vx.x.x
Functions ¶
This section is empty.
Types ¶
type APIRoute ¶
type APIRoute struct { *Route // contains filtered or unexported fields }
APIRoute is a basic struct containing Method and URL
func NewAPIRoute ¶
NewAPIRoute generates a new discord api route struct
func NewCustomRoute ¶
NewCustomRoute generates a new custom route struct
func (*APIRoute) Compile ¶
func (r *APIRoute) Compile(queryValues QueryValues, args ...interface{}) (*CompiledAPIRoute, error)
Compile returns a CompiledAPIRoute
type CDNRoute ¶
type CDNRoute struct { *Route // contains filtered or unexported fields }
CDNRoute is a route for interacting with images hosted on discord's CDN
func NewCDNRoute ¶
func NewCDNRoute(url string, supportedFileExtensions []FileExtension, queryParams ...string) *CDNRoute
NewCDNRoute generates a new discord cdn route struct
func (*CDNRoute) Compile ¶
func (r *CDNRoute) Compile(queryValues QueryValues, fileExtension FileExtension, size int, args ...interface{}) (*CompiledCDNRoute, error)
Compile builds a full request URL based on provided arguments
type CompiledAPIRoute ¶
type CompiledAPIRoute struct { *CompiledRoute // contains filtered or unexported fields }
CompiledAPIRoute is APIRoute compiled with all URL args
func (*CompiledAPIRoute) Method ¶
func (r *CompiledAPIRoute) Method() Method
Method returns the request method used by the route
type CompiledCDNRoute ¶
type CompiledCDNRoute struct {
*CompiledRoute
}
CompiledCDNRoute is CDNRoute compiled with all URL args
type CompiledRoute ¶
type CompiledRoute struct {
// contains filtered or unexported fields
}
CompiledRoute is Route compiled with all URL args
func (*CompiledRoute) QueryParams ¶
func (r *CompiledRoute) QueryParams() string
QueryParams returns the request query params
func (*CompiledRoute) Route ¶
func (r *CompiledRoute) Route() string
Route returns the request route
type CustomRoute ¶
type CustomRoute struct {
*APIRoute
}
CustomRoute is APIRoute but custom for you
func (CustomRoute) Compile ¶
func (r CustomRoute) Compile(queryValues QueryValues, args ...interface{}) (*CompiledAPIRoute, error)
Compile returns a CompiledAPIRoute
type FileExtension ¶
type FileExtension string
FileExtension is the type of image on Discord's CDN
const ( PNG FileExtension = "png" JPEG FileExtension = "jpg" WEBP FileExtension = "webp" GIF FileExtension = "gif" BLANK FileExtension = "" )
The available FileExtension(s)
func (FileExtension) String ¶
func (f FileExtension) String() string
type FileFlags ¶ added in v1.1.5
type FileFlags int
FileFlags are used to mark Attachments as Spoiler
func (FileFlags) Add ¶ added in v1.1.5
Add allows you to add multiple FileFlags together, producing a new FileFlags
func (FileFlags) Has ¶ added in v1.1.5
Has will check whether the FileFlags contains another FileFlags
func (FileFlags) HasAll ¶ added in v1.1.5
HasAll will ensure that the FileFlags includes all of the FileFlags(s) entered
func (FileFlags) MissingAny ¶ added in v1.1.5
MissingAny will check whether the FileFlags is missing any one of the FileFlags
type Method ¶
type Method string
Method is a HTTP request Method
type MultipartBuffer ¶ added in v1.1.5
MultipartBuffer holds the Body & ContentType of the multipart body
func PayloadWithFiles ¶ added in v1.1.5
func PayloadWithFiles(v interface{}, files ...File) (buffer *MultipartBuffer, err error)
PayloadWithFiles returns the given payload as multipart body with all files in it
type QueryValues ¶ added in v1.2.0
type QueryValues map[string]interface{}
QueryValues is used to supply query param value pairs to Route.Compile
type RestClient ¶
type RestClient interface { Close() UserAgent() string HTTPClient() *http.Client Logger() log.Logger Do(route *CompiledAPIRoute, rqBody interface{}, rsBody interface{}) RestError DoWithHeaders(route *CompiledAPIRoute, rqBody interface{}, rsBody interface{}, customHeader http.Header) RestError }
RestClient allows doing requests to different endpoints
func NewRestClient ¶
func NewRestClient(httpClient *http.Client, logger log.Logger, userAgent string, customHeader http.Header) RestClient
NewRestClient constructs a new RestClient with the given http.Client, log.Logger & useragent
type Route ¶
type Route struct {
// contains filtered or unexported fields
}
Route the base struct for routes used in disgo
func (*Route) Compile ¶
func (r *Route) Compile(queryValues QueryValues, args ...interface{}) (*CompiledRoute, error)
Compile builds a full request URL based on provided arguments