grom/command

This module defines commands. Commands are the things you create and make available to your users. This module will not help you with receiving slash commands, only with defining them and registering with Discord. Use the grom/interaction and grom/gateway modules to receive interactions.

Types

pub type AllowedChannelType {
  AllowTextChannels
  AllowDmChannels
  AllowVoiceChannels
  AllowCategoryChannels
  AllowAnnouncementChannels
  AllowAnnouncementThreads
  AllowPublicThreads
  AllowPrivateThreads
  AllowStageChannels
  AllowForumChannels
  AllowMediaChannels
}

Constructors

  • AllowTextChannels
  • AllowDmChannels
  • AllowVoiceChannels
  • AllowCategoryChannels
  • AllowAnnouncementChannels
  • AllowAnnouncementThreads
  • AllowPublicThreads
  • AllowPrivateThreads
  • AllowStageChannels
  • AllowForumChannels
  • AllowMediaChannels
pub type Command {
  Slash(SlashCommand)
  User(UserCommand)
  Message(MessageCommand)
}

Constructors

pub type Context {
  AllowedInGuilds
  AllowedInBotDms
  AllowedInPrivateChannels
}

Constructors

  • AllowedInGuilds
  • AllowedInBotDms
  • AllowedInPrivateChannels
pub type CreateForGuild {
  CreateSlashForGuild(CreateSlashCommandForGuild)
  CreateUserForGuild(CreateUserCommandForGuild)
  CreateMessageForGuild(CreateMessageCommandForGuild)
}

Constructors

pub type CreateGlobal {
  CreateGlobalSlash(CreateGlobalSlashCommand)
  CreateGlobalUser(CreateGlobalUserCommand)
  CreateGlobalMessage(CreateGlobalMessageCommand)
}

Constructors

pub type CreateGlobalMessageCommand {
  CreateGlobalMessageCommand(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
    is_nsfw: Bool,
  )
}

Constructors

pub type CreateGlobalSlashCommand {
  CreateGlobalSlashCommand(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
    is_nsfw: Bool,
  )
}

Constructors

pub type CreateGlobalUserCommand {
  CreateGlobalUserCommand(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
    is_nsfw: Bool,
  )
}

Constructors

pub type CreateMessageCommandForGuild {
  CreateMessageCommandForGuild(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
  )
}

Constructors

pub type CreateSlashCommandForGuild {
  CreateSlashCommandForGuild(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
  )
}

Constructors

pub type CreateUserCommandForGuild {
  CreateUserCommandForGuild(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
  )
}

Constructors

pub type GuildPermissions {
  GuildPermissions(
    command_id: String,
    application_id: String,
    guild_id: String,
    permissions: List(Permission),
  )
}

Constructors

  • GuildPermissions(
      command_id: String,
      application_id: String,
      guild_id: String,
      permissions: List(Permission),
    )
pub type IntegerChoice {
  IntegerChoice(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    value: Int,
  )
}

Constructors

pub type MessageCommand {
  MessageCommand(
    id: String,
    application_id: String,
    guild_id: option.Option(String),
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
  )
}

Constructors

pub type ModifyForGuild {
  ModifySlashForGuild(ModifySlashCommandForGuild)
  ModifyUserForGuild(ModifyUserCommandForGuild)
  ModifyMessageForGuild(ModifyMessageCommandForGuild)
}

Constructors

pub type ModifyGlobal {
  ModifyGlobal(
    name: option.Option(String),
    name_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    description: option.Option(String),
    description_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
    default_member_permissions: modification.Modification(
      List(permission.Permission),
    ),
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
    is_nsfw: option.Option(Bool),
  )
}

Constructors

pub type ModifyMessageCommandForGuild {
  ModifyMessageCommandForGuild(
    name: option.Option(String),
    name_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    default_member_permissions: modification.Modification(
      List(permission.Permission),
    ),
    is_nsfw: option.Option(Bool),
  )
}

Constructors

pub type ModifySlashCommandForGuild {
  ModifySlashCommandForGuild(
    name: option.Option(String),
    name_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    description: option.Option(String),
    description_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
    default_member_permissions: modification.Modification(
      List(permission.Permission),
    ),
    is_nsfw: option.Option(Bool),
  )
}

Constructors

pub type ModifyUserCommandForGuild {
  ModifyUserCommandForGuild(
    name: option.Option(String),
    name_localizations: modification.Modification(
      dict.Dict(String, String),
    ),
    default_member_permissions: modification.Modification(
      List(permission.Permission),
    ),
    is_nsfw: option.Option(Bool),
  )
}

Constructors

pub type NumberChoice {
  NumberChoice(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    value: Float,
  )
}

Constructors

pub type Parameter {
  SubCommandParameter(ParameterSubCommand)
  SubCommandGroupParameter(ParameterSubCommandGroup)
  TextParameter(ParameterText)
  IntegerParameter(ParameterInteger)
  BooleanParameter(ParameterBoolean)
  UserParameter(ParameterUser)
  ChannelParameter(ParameterChannel)
  RoleParameter(ParameterRole)
  MentionableParameter(ParameterMentionable)
  NumberParameter(ParameterNumber)
  AttachmentParameter(ParameterAttachment)
}

Constructors

pub type ParameterAttachment {
  ParameterAttachment(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
  )
}

Constructors

pub type ParameterBoolean {
  ParameterBoolean(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
  )
}

Constructors

pub type ParameterChannel {
  ParameterChannel(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
    allowed_channel_types: option.Option(List(AllowedChannelType)),
  )
}

Constructors

pub type ParameterInteger {
  ParameterInteger(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
    choices: option.Option(List(IntegerChoice)),
    min_value: option.Option(Int),
    max_value: option.Option(Int),
    is_autocomplete: Bool,
  )
}

Constructors

pub type ParameterMentionable {
  ParameterMentionable(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
  )
}

Constructors

pub type ParameterNumber {
  ParameterNumber(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
    choices: option.Option(List(NumberChoice)),
    min_value: option.Option(Float),
    max_value: option.Option(Float),
    is_autocomplete: Bool,
  )
}

Constructors

pub type ParameterRole {
  ParameterRole(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
  )
}

Constructors

pub type ParameterSubCommand {
  ParameterSubCommand(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
  )
}

Constructors

pub type ParameterSubCommandGroup {
  ParameterSubCommandGroup(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
  )
}

Constructors

pub type ParameterText {
  ParameterText(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
    choices: option.Option(List(TextChoice)),
    min_length: option.Option(Int),
    max_length: option.Option(Int),
    is_autocomplete: Bool,
  )
}

Constructors

pub type ParameterUser {
  ParameterUser(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    is_required: Bool,
  )
}

Constructors

In this case, permission means whether a user is allowed to use a command. A denied role permission means that all users with this role are not allowed to use the command.

pub type Permission {
  RolePermission(role_id: String, is_permission_granted: Bool)
  UserPermission(user_id: String, is_permission_granted: Bool)
  ChannelPermission(
    channel_id: String,
    is_permission_granted: Bool,
  )
}

Constructors

  • RolePermission(role_id: String, is_permission_granted: Bool)
  • UserPermission(user_id: String, is_permission_granted: Bool)

    If user_id == guild_id, @everyone gets the permission status (granted/denied).

  • ChannelPermission(
      channel_id: String,
      is_permission_granted: Bool,
    )

    If channel_id == { guild_id - 1 }, all channels get the permission status (granted/denied).

pub type SlashCommand {
  SlashCommand(
    id: String,
    application_id: String,
    guild_id: option.Option(String),
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    description: String,
    description_localizations: option.Option(
      dict.Dict(String, String),
    ),
    parameters: option.Option(List(Parameter)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
  )
}

Constructors

pub type TextChoice {
  TextChoice(
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    value: String,
  )
}

Constructors

pub type UserCommand {
  UserCommand(
    id: String,
    application_id: String,
    guild_id: option.Option(String),
    name: String,
    name_localizations: option.Option(dict.Dict(String, String)),
    default_member_permissions: option.Option(
      List(permission.Permission),
    ),
    is_nsfw: Bool,
    integration_types: option.Option(
      List(application.InstallationContext),
    ),
    contexts: option.Option(List(Context)),
  )
}

Constructors

Values

pub fn bulk_overwrite_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
  new commands: List(CreateForGuild),
) -> Result(List(Command), grom.Error)
pub fn bulk_overwrite_global(
  client: grom.Client,
  of application_id: String,
  new commands: List(CreateGlobal),
) -> Result(List(Command), grom.Error)
pub fn create_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
  using create: CreateForGuild,
) -> Result(Command, grom.Error)
pub fn create_global(
  client: grom.Client,
  for application_id: String,
  using create: CreateGlobal,
) -> Result(Command, grom.Error)
pub fn create_message_command_for_guild_to_json(
  create: CreateMessageCommandForGuild,
) -> json.Json
pub fn delete_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
  id command_id: String,
) -> Result(Nil, grom.Error)
pub fn delete_global(
  client: grom.Client,
  of application_id: String,
  id command_id: String,
) -> Result(Nil, grom.Error)
pub fn get_all_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
) -> Result(List(Command), grom.Error)
pub fn get_all_global(
  client: grom.Client,
  for application_id: String,
) -> Result(List(Command), grom.Error)
pub fn get_all_guild_permissions(
  client: grom.Client,
  of application_id: String,
  in guild_id: String,
) -> Result(List(GuildPermissions), grom.Error)
pub fn get_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
  id command_id: String,
) -> Result(Command, grom.Error)
pub fn get_global(
  client: grom.Client,
  of application_id: String,
  id command_id: String,
) -> Result(Command, grom.Error)
pub fn get_guild_permissions(
  client: grom.Client,
  of application_id: String,
  in guild_id: String,
  for command_id: String,
) -> Result(GuildPermissions, grom.Error)
pub fn modify_for_guild(
  client: grom.Client,
  application application_id: String,
  guild guild_id: String,
  id command_id: String,
  using modify: ModifyForGuild,
) -> Result(Command, grom.Error)
pub fn modify_global(
  client: grom.Client,
  of application_id: String,
  id command_id: String,
  using modify: ModifyGlobal,
) -> Result(Command, grom.Error)
pub fn new_create_global_message_command(
  named name: String,
) -> CreateGlobalMessageCommand
pub fn new_create_global_slash_command(
  named name: String,
  description description: String,
) -> CreateGlobalSlashCommand
pub fn new_create_global_user_command(
  named name: String,
) -> CreateGlobalUserCommand
pub fn new_create_message_command_for_guild(
  named name: String,
) -> CreateMessageCommandForGuild
pub fn new_create_slash_command_for_guild(
  named name: String,
  description description: String,
) -> CreateSlashCommandForGuild
pub fn new_create_user_command_for_guild(
  named name: String,
) -> CreateUserCommandForGuild
pub fn new_integer_choice(
  named name: String,
  value value: Int,
) -> IntegerChoice
pub fn new_modify_global() -> ModifyGlobal
pub fn new_number_choice(
  named name: String,
  value value: Float,
) -> NumberChoice
pub fn new_parameter_attachment(
  named name: String,
  description description: String,
) -> ParameterAttachment
pub fn new_parameter_boolean(
  named name: String,
  description description: String,
) -> ParameterBoolean
pub fn new_parameter_channel(
  named name: String,
  description description: String,
) -> ParameterChannel
pub fn new_parameter_integer(
  named name: String,
  description description: String,
) -> ParameterInteger
pub fn new_parameter_mentionable(
  named name: String,
  description description: String,
) -> ParameterMentionable
pub fn new_parameter_number(
  named name: String,
  description description: String,
) -> ParameterNumber
pub fn new_parameter_role(
  named name: String,
  description description: String,
) -> ParameterRole
pub fn new_parameter_sub_command(
  named name: String,
  description description: String,
) -> ParameterSubCommand
pub fn new_parameter_sub_command_group(
  named name: String,
  description description: String,
  sub_commands parameters: List(Parameter),
) -> ParameterSubCommandGroup
pub fn new_parameter_text(
  named name: String,
  description description: String,
) -> ParameterText
pub fn new_parameter_user(
  named name: String,
  description description: String,
) -> ParameterUser
pub fn new_text_choice(
  named name: String,
  value value: String,
) -> TextChoice
pub fn parameter_sub_command_group_to_json(
  parameter: ParameterSubCommandGroup,
) -> json.Json
Search Document