arikawa/discord/application.go

116 lines
4.1 KiB
Go

package discord
type Application struct {
// ID is the ID of the app.
ID AppID `json:"id"`
// Name is the name of the app.
Name string `json:"name"`
// Icon is the icon hash of the app.
Icon *Hash `json:"icon"`
// Description is the description of the app.
Description string `json:"description"`
// RPCOrigins is the RPC origin urls, if RPC is enabled.
RPCOrigins []string `json:"rpc_origins"`
// BotPublic is whether users besides the app owner can join the app's bot
// to guilds.
BotPublic bool `json:"bot_public"`
// BotRequiredCodeGrant is whether the app's bot will only join upon
// completion of the full oauth2 code grant flow.
BotRequireCodeGrant bool `json:"bot_require_code_grant"`
// TermsOfServiceURL is the url of the app's terms of service.
TermsOfServiceURL string `json:"terms_of_service_url"`
// PrivacyPolicyURL is the url of the app's privacy policy.
PrivacyPolicyURL string `json:"privacy_policy_url"`
// Owner is a partial user object containing info on the owner of the
// application.
Owner *User `json:"owner"`
// VerifyKey is the hex encoded key for verification in interactions and
// the GameSDK's GetTicket.
VerifyKey string `json:"verify_key"`
// Team is the team that the application belongs to, if it belongs to one.
Team *Team `json:"team"`
// CoverImage the application's default rich presence invite cover image
// hash.
CoverImage *Hash `json:"cover_image"`
// Flags is the application's public flags.
Flags ApplicationFlags `json:"flags"`
// The following fields are only present on applications that are games
// sold on Discord.
// Summary is the summary field for the store page of the game's primary
// SKU.
Summary string `json:"summary"`
// GuildID is the guild to which the game has been linked.
GuildID GuildID `json:"guild_ID"`
// PrimarySKUID is the ID of the "Game SKU" that is created, if it exists.
PrimarySKUID Snowflake `json:"primary_sku_id"`
// Slug is the URL slug that links to the game's store page.
Slug string `json:"slug"`
}
type ApplicationFlags uint32
const (
AppFlagGatewayPresence ApplicationFlags = 1 << (iota + 12)
AppFlagGatewayPresenceLimited
AppFlagGatewayGuildMembers
AppFlagGatewayGuildMembersLimited
AppFlagVerificationPendingGuildLimit
AppFlagEmbedded
)
type Team struct {
// Icon is a hash of the image of the team's icon.
Icon *Hash `json:"hash"`
// ID is the unique ID of the team.
ID TeamID `json:"id"`
// Members is the members of the team.
Members []TeamMember `json:"members"`
// Name is the name of the team.
Name string `json:"name"`
// OwnerUserID is the user ID of the current team owner.
OwnerID UserID `json:"owner_user_id"`
}
type TeamMember struct {
// MembershipState is the user's membership state on the team.
MembershipState MembershipState `json:"membership_state"`
// Permissions will always be {"*"}
Permissions []string `json:"permissions"`
// TeamID is the ID of the parent team of which they are a member.
TeamID TeamID `json:"team_id"`
// User is the avatar, discriminator, ID, and username of the user.
User User `json:"user"`
}
type MembershipState uint8
const (
MembershipInvited MembershipState = iota + 1
MembershipAccepted
)
// https://discord.com/developers/docs/interactions/slash-commands#application-command-permissions-object-guild-application-command-permissions-structure
type GuildCommandPermissions struct {
ID CommandID `json:"id"`
AppID AppID `json:"application_id"`
GuildID GuildID `json:"guild_id"`
Permissions []CommandPermissions `json:"permissions"`
}
// https://discord.com/developers/docs/interactions/slash-commands#application-command-permissions-object-application-command-permissions-structure
type CommandPermissions struct {
ID Snowflake `json:"id"`
Type CommandPermissionType `json:"type"`
Permission bool `json:"permission"`
}
type CommandPermissionType uint8
// https://discord.com/developers/docs/interactions/slash-commands#application-command-permissions-object-application-command-permission-type
const (
RoleCommandPermission = iota + 1
UserCommandPermission
)