Module: LibDiscord

Defined in:
lib/lib_discord/maps.rb,
lib/lib_discord/urls.rb,
lib/lib_discord/client.rb,
lib/lib_discord/version.rb,
lib/lib_discord/formatter.rb,
lib/lib_discord/permissions.rb

Defined Under Namespace

Modules: Formatter Classes: Client, Response

Constant Summary collapse

MAPS =
{
  Application: {
    # https://discord.com/developers/docs/resources/application#application-object-application-event-webhook-status
    EventWebhookStatuses: {
      DISABLED: 1,
      ENABLED: 2,
      DISABLED_BY_DISCORD: 3
    },

    # https://discord.com/developers/docs/resources/application#application-object-application-flags
    Flags: {
      APPLICATION_AUTO_MODERATION_RULE_CREATE_BADGE: 1 << 6,
      GATEWAY_PRESENCE: 1 << 12,
      GATEWAY_PRESENCE_LIMITED: 1 << 13,
      GATEWAY_GUILD_MEMBERS: 1 << 14,
      GATEWAY_GUILD_MEMBERS_LIMITED: 1 << 15,
      VERIFICATION_PENDING_GUILD_LIMIT: 1 << 16,
      EMBEDDED: 1 << 17,
      GATEWAY_MESSAGE_CONTENT: 1 << 18,
      GATEWAY_MESSAGE_CONTENT_LIMITED: 1 << 19,
      APPLICATION_COMMAND_BADGE: 1 << 23
    },

    # https://discord.com/developers/docs/resources/application#application-object-application-integration-types
    IntegrationTypes: {
      GUILD_INSTALL: 0,
      USER_INSTALL: 1
    }
  },

  ApplicationCommand: {
    # https://discord.com/developers/docs/interactions/application-commands#application-command-object-entry-point-command-handler-types
    EntryPointCommandHandlerTypes: {
      APP_HANDLER: 1,
      DISCORD_LAUNCH_ACTIVITY: 2
    },

    # https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type
    OptionTypes: {
      SUB_COMMAND: 1,
      SUB_COMMAND_GROUP: 2,
      STRING: 3,
      INTEGER: 4,
      BOOLEAN: 5,
      USER: 6,
      CHANNEL: 7,
      ROLE: 8,
      MENTIONABLE: 9,
      NUMBER: 10,
      ATTACHMENT: 11
    },

    # https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type
    PermissionTypes: {
      ROLE: 1,
      USER: 2,
      CHANNEL: 3
    },

    # https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-types
    Types: {
      CHAT_INPUT: 1,
      USER: 2,
      MESSAGE: 3,
      PRIMARY_ENTRY_POINT: 4
    }
  },

  ApplicationRoleConnectionMetadata: {
    # https://discord.com/developers/docs/resources/application-role-connection-metadata#application-role-connection-metadata-object-application-role-connection-metadata-type
    Types: {
      INTEGER_LESS_THAN_OR_EQUAL: 1,
      INTEGER_GREATER_THAN_OR_EQUAL: 2,
      INTEGER_EQUAL: 3,
      INTEGER_NOT_EQUAL: 4,
      DATETIME_LESS_THAN_OR_EQUAL: 5,
      DATETIME_GREATER_THAN_OR_EQUAL: 6,
      BOOLEAN_EQUAL: 7,
      BOOLEAN_NOT_EQUAL: 8
    }
  },

  AuditLog: {
    # https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events
    Events: {
      GUILD_UPDATE: 1,
      CHANNEL_CREATE: 10,
      CHANNEL_UPDATE: 11,
      CHANNEL_DELETE: 12,
      CHANNEL_OVERWRITE_CREATE: 13,
      CHANNEL_OVERWRITE_UPDATE: 14,
      CHANNEL_OVERWRITE_DELETE: 15,
      MEMBER_KICK: 20,
      MEMBER_PRUNE: 21,
      MEMBER_BAN_ADD: 22,
      MEMBER_BAN_REMOVE: 23,
      MEMBER_UPDATE: 24,
      MEMBER_ROLE_UPDATE: 25,
      MEMBER_MOVE: 26,
      MEMBER_DISCONNECT: 27,
      BOT_ADD: 28,
      ROLE_CREATE: 30,
      ROLE_UPDATE: 31,
      ROLE_DELETE: 32,
      INVITE_CREATE: 40,
      INVITE_UPDATE: 41,
      INVITE_DELETE: 42,
      WEBHOOK_CREATE: 50,
      WEBHOOK_UPDATE: 51,
      WEBHOOK_DELETE: 52,
      EMOJI_CREATE: 60,
      EMOJI_UPDATE: 61,
      EMOJI_DELETE: 62,
      MESSAGE_DELETE: 72,
      MESSAGE_BULK_DELETE: 73,
      MESSAGE_PIN: 74,
      MESSAGE_UNPIN: 75,
      INTEGRATION_CREATE: 80,
      INTEGRATION_UPDATE: 81,
      INTEGRATION_DELETE: 82,
      STAGE_INSTANCE_CREATE: 83,
      STAGE_INSTANCE_UPDATE: 84,
      STAGE_INSTANCE_DELETE: 85,
      STICKER_CREATE: 90,
      STICKER_UPDATE: 91,
      STICKER_DELETE: 92,
      GUILD_SCHEDULED_EVENT_CREATE: 100,
      GUILD_SCHEDULED_EVENT_UPDATE: 101,
      GUILD_SCHEDULED_EVENT_DELETE: 102,
      THREAD_CREATE: 110,
      THREAD_UPDATE: 111,
      THREAD_DELETE: 112,
      APPLICATION_COMMAND_PERMISSION_UPDATE: 121,
      SOUNDBOARD_SOUND_CREATE: 130,
      SOUNDBOARD_SOUND_UPDATE: 131,
      SOUNDBOARD_SOUND_DELETE: 132,
      AUTO_MODERATION_RULE_CREATE: 140,
      AUTO_MODERATION_RULE_UPDATE: 141,
      AUTO_MODERATION_RULE_DELETE: 142,
      AUTO_MODERATION_BLOCK_MESSAGE: 143,
      AUTO_MODERATION_FLAG_TO_CHANNEL: 144,
      AUTO_MODERATION_USER_COMMUNICATION_DISABLED: 145,
      CREATOR_MONETIZATION_REQUEST_CREATED: 150,
      CREATOR_MONETIZATION_TERMS_ACCEPTED: 151,
      ONBOARDING_PROMPT_CREATE: 163,
      ONBOARDING_PROMPT_UPDATE: 164,
      ONBOARDING_PROMPT_DELETE: 165,
      ONBOARDING_CREATE: 166,
      ONBOARDING_UPDATE: 167,
      HOME_SETTINGS_CREATE: 190,
      HOME_SETTINGS_UPDATE: 191
    }
  },

  AutoModeration: {
    # https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-action-object-action-types
    ActionTypes: {
      BLOCK_MESSAGE: 1,
      SEND_ALERT_MESSAGE: 2,
      TIMEOUT: 3,
      BLOCK_MEMBER_INTERACTION: 4
    },

    # https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-event-types
    EventTypes: {
      MESSAGE_SEND: 1,
      MEMBER_UPDATE: 2
    },

    # https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-keyword-preset-types
    KeywordPresetTypes: {
      PROFANITY: 1,
      SEXUAL_CONTENT: 2,
      SLURS: 3
    },

    # https://discord.com/developers/docs/resources/auto-moderation#auto-moderation-rule-object-trigger-types
    TriggerTypes: {
      KEYWORD: 1,
      SPAM: 3,
      KEYWORD_PRESET: 4,
      MENTION_SPAM: 5,
      MEMBER_PROFILE: 6
    }
  },

  Channel: {
    # https://discord.com/developers/docs/resources/channel#channel-object-channel-flags
    Flags: {
      PINNED: 1 << 1,
      REQUIRE_TAG: 1 << 4,
      HIDE_MEDIA_DOWNLOAD_OPTIONS: 1 << 15
    },

    # https://discord.com/developers/docs/resources/channel#channel-object-forum-layout-types
    ForumLayoutTypes: {
      NOT_SET: 0,
      LIST_VIEW: 1,
      GALLERY_VIEW: 2
    },

    # https://discord.com/developers/docs/resources/channel#channel-object-sort-order-types
    SortOrderTypes: {
      LATEST_ACTIVITY: 0,
      CREATION_TIME: 1
    },

    # https://discord.com/developers/docs/resources/channel#channel-object-channel-types
    Types: {
      GUILD_TEXT: 0,
      DM: 1,
      GUILD_VOICE: 2,
      GROUP_DM: 3,
      GUILD_CATEGORY: 4,
      GUILD_ANNOUNCEMENT: 5,
      ANNOUNCEMENT_THREAD: 10,
      PUBLIC_THREAD: 11,
      PRIVATE_THREAD: 12,
      GUILD_STAGE_VOICE: 13,
      GUILD_DIRECTORY: 14,
      GUILD_FORUM: 15,
      GUILD_MEDIA: 16
    },

    # https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes
    VideoQualityModes: {
      AUTO: 1,
      FULL: 2
    }
  },

  Entitlement: {
    # https://discord.com/developers/docs/resources/entitlement#entitlement-object-entitlement-types
    Types: {
      PURCHASE: 1,
      PREMIUM_SUBSCRIPTION: 2,
      DEVELOPER_GIFT: 3,
      TEST_MODE_PURCHASE: 4,
      FREE_PURCHASE: 5,
      USER_GIFT: 6,
      PREMIUM_PURCHASE: 7,
      APPLICATION_SUBSCRIPTION: 8
    }
  },

  Event: {
    # https://discord.com/developers/docs/events/webhook-events#webhook-types
    WebhookTypes: {
      PING: 0,
      EVENT: 1
    }
  },

  Guild: {
    # https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level
    DefaultMessageNotificationLevels: {
      ALL_MESSAGES: 0,
      ONLY_MENTIONS: 1
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level
    ExplicitContentFilterLevels: {
      DISABLED: 0,
      MEMBERS_WITHOUT_ROLES: 1,
      ALL_MEMBERS: 2
    },

    # https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors
    IntegrationExpireBehaviors: {
      REMOVE_ROLE: 0,
      KICK: 1
    },

    # https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags
    MemberFlags: {
      DID_REJOIN: 1 << 0,
      COMPLETED_ONBOARDING: 1 << 1,
      BYPASSES_VERIFICATION: 1 << 2,
      STARTED_ONBOARDING: 1 << 3,
      IS_GUEST: 1 << 4,
      STARTED_HOME_ACTIONS: 1 << 5,
      COMPLETED_HOME_ACTIONS: 1 << 6,
      AUTOMOD_QUARANTINED_USERNAME: 1 << 7,
      DM_SETTINGS_UPSELL_ACKNOWLEDGED: 1 << 9
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-mfa-level
    MFALevels: {
      NONE: 0,
      ELEVATED: 1
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level
    NSFWLevels: {
      DEFAULT: 0,
      EXPLICIT: 1,
      SAFE: 2,
      AGE_RESTRICTED: 3
    },

    # https://discord.com/developers/docs/resources/guild#guild-onboarding-object-onboarding-mode
    OnboardingModes: {
      ONBOARDING_DEFAULT: 0,
      ONBOARDING_ADVANCED: 1
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-premium-tier
    PremiumTiers: {
      NONE: 0,
      TIER_1: 1,
      TIER_2: 2,
      TIER_3: 3
    },

    # https://discord.com/developers/docs/resources/guild#guild-onboarding-object-prompt-types
    PromptTypes: {
      MULTIPLE_CHOICE: 0,
      DROPDOWN: 1
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags
    SystemChannelFlags: {
      SUPPRESS_JOIN_NOTIFICATIONS: 1 << 0,
      SUPPRESS_PREMIUM_SUBSCRIPTIONS: 1 << 1,
      SUPPRESS_GUILD_REMINDER_NOTIFICATIONS: 1 << 2,
      SUPPRESS_JOIN_NOTIFICATION_REPLIES: 1 << 3,
      SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS: 1 << 4,
      SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATION_REPLIES: 1 << 5
    },

    # https://discord.com/developers/docs/resources/guild#guild-object-verification-level
    VerficationLevels: {
      NONE: 0,
      LOW: 1,
      MEDIUM: 2,
      HIGH: 3,
      VERY_HIGH: 4
    }
  },

  # https://discord.com/developers/docs/reference#message-formatting-guild-navigation-types
  GuildNavigationTypes: {
    CUSTOMIZE: "customize",
    BROWSE: "browse",
    GUIDE: "guide",
    LINKED_ROLES: "linked-roles"
  },

  GuildScheduledEvent: {
    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-entity-types
    EntityTypes: {
      STAGE_INSTANCE: 1,
      VOICE: 2,
      EXTERNAL: 3
    },

    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-frequency
    RecurrenceRulesFrequency: {
      YEARLY: 0,
      MONTHLY: 1,
      WEEKLY: 2,
      DAILY: 3
    },

    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-month
    RecurrenceRulesMonth: {
      JANUARY: 1,
      FEBRUARY: 2,
      MARCH: 3,
      APRIL: 4,
      MAY: 5,
      JUNE: 6,
      JULY: 7,
      AUGUST: 8,
      SEPTEMBER: 9,
      OCTOBER: 10,
      NOVEMBER: 11,
      DECEMBER: 12
    },

    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-recurrence-rule-object-guild-scheduled-event-recurrence-rule-weekday
    RecurrenceRulesWeekday: {
      MONDAY: 0,
      TUESDAY: 1,
      WEDNESDAY: 2,
      THURSDAY: 3,
      FRIDAY: 4,
      SATURDAY: 5,
      SUNDAY: 6
    },

    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-privacy-level
    PrivacyLevels: {
      GUILD_ONLY: 2
    },

    # https://discord.com/developers/docs/resources/guild-scheduled-event#guild-scheduled-event-object-guild-scheduled-event-status
    Statuses: {
      SCHEDULED: 1,
      ACTIVE: 2,
      COMPLETED: 3,
      CANCELED: 4
    }
  },

  Interaction: {
    # https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-response-object-interaction-callback-type
    CallbackTypes: {
      PONG: 1,
      CHANNEL_MESSAGE_WITH_SOURCE: 4,
      DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE: 5,
      DEFERRED_UPDATE_MESSAGE: 6,
      UPDATE_MESSAGE: 7,
      APPLICATION_COMMAND_AUTOCOMPLETE_RESULT: 8,
      MODAL: 9,
      PREMIUM_REQUIRED: 10,
      LAUNCH_ACTIVITY: 12
    },

    # https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-context-types
    ContextTypes: {
      GUILD: 0,
      BOT_DM: 1,
      PRIVATE_CHANNEL: 2
    },

    # https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-type
    Types: {
      PING: 1,
      APPLICATION_COMMAND: 2,
      MESSAGE_COMPONENT: 3,
      APPLICATION_COMMAND_AUTOCOMPLETE: 4,
      MODAL_SUBMIT: 5
    }
  },

  Invite: {
    # https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types
    TargetTypes: {
      STREAM: 1,
      EMBEDDED_APPLICATION: 2
    },

    # https://discord.com/developers/docs/resources/invite#invite-object-invite-types
    Types: {
      GUILD: 0,
      GROUP_DM: 1,
      FRIEND: 2
    }
  },

  Lobby: {
    # https://discord.com/developers/docs/resources/lobby#lobby-member-object-lobby-member-flags
    MemberFlags: {
      CAN_LINK_LOBBY: 1 << 0
    }
  },

  Message: {
    # https://discord.com/developers/docs/resources/message#message-object-message-activity-types
    ActivityTypes: {
      JOIN: 1,
      SPECTATE: 2,
      LISTEN: 3,
      JOIN_REQUEST: 5
    },

    # https://discord.com/developers/docs/resources/message#attachment-object-attachment-flags
    AttachmentFlags: {
      IS_REMIX: 1 << 2
    },

    # https://discord.com/developers/docs/resources/message#message-object-message-flags
    Flags: {
      CROSSPOSTED: 1 << 0,
      IS_CROSSPOST: 1 << 1,
      SUPPRESS_EMBEDS: 1 << 2,
      SOURCE_MESSAGE_DELETED: 1 << 3,
      URGENT: 1 << 4,
      HAS_THREAD: 1 << 5,
      EPHEMERAL: 1 << 6,
      LOADING: 1 << 7,
      FAILED_TO_MENTION_SOME_ROLES_IN_THREAD: 1 << 8,
      SUPPRESS_NOTIFICATIONS: 1 << 12,
      IS_VOICE_MESSAGE: 1 << 13,
      HAS_SNAPSHOT: 1 << 14,
      IS_COMPONENTS_V2: 1 << 15
    },

    # https://discord.com/developers/docs/resources/message#get-reactions-reaction-types
    ReactionTypes: {
      NORMAL: 0,
      BURST: 1
    },

    # https://discord.com/developers/docs/resources/message#message-object-message-types
    Types: {
      DEFAULT: 0,
      RECIPIENT_ADD: 1,
      RECIPIENT_REMOVE: 2,
      CALL: 3,
      CHANNEL_NAME_CHANGE: 4,
      CHANNEL_ICON_CHANGE: 5,
      CHANNEL_PINNED_MESSAGE: 6,
      USER_JOIN: 7,
      GUILD_BOOST: 8,
      GUILD_BOOST_TIER_1: 9,
      GUILD_BOOST_TIER_2: 10,
      GUILD_BOOST_TIER_3: 11,
      CHANNEL_FOLLOW_ADD: 12,
      GUILD_DISCOVERY_DISQUALIFIED: 14,
      GUILD_DISCOVERY_REQUALIFIED: 15,
      GUILD_DISCOVERY_GRACE_PERIOD_INITIAL_WARNING: 16,
      GUILD_DISCOVERY_GRACE_PERIOD_FINAL_WARNING: 17,
      THREAD_CREATED: 18,
      REPLY: 19,
      CHAT_INPUT_COMMAND: 20,
      THREAD_STARTER_MESSAGE: 21,
      GUILD_INVITE_REMINDER: 22,
      CONTEXT_MENU_COMMAND: 23,
      AUTO_MODERATION_ACTION: 24,
      ROLE_SUBSCRIPTION_PURCHASE: 25,
      INTERACTION_PREMIUM_UPSELL: 26,
      STAGE_START: 27,
      STAGE_END: 28,
      STAGE_SPEAKER: 29,
      STAGE_TOPIC: 31,
      GUILD_APPLICATION_PREMIUM_SUBSCRIPTION: 32,
      GUILD_INCIDENT_ALERT_MODE_ENABLED: 36,
      GUILD_INCIDENT_ALERT_MODE_DISABLED: 37,
      GUILD_INCIDENT_REPORT_RAID: 38,
      GUILD_INCIDENT_REPORT_FALSE_ALARM: 39,
      PURCHASE_NOTIFICATION: 44,
      POLL_RESULT: 46
    }
  },

  MessageComponent: {
    # https://discord.com/developers/docs/components/reference#button-button-styles
    ButtonStyles: {
      PRIMARY: 1,
      SECONDARY: 2,
      SUCCESS: 3,
      DANGER: 4,
      LINK: 5,
      PREMIUM: 6
    },

    # https://discord.com/developers/docs/components/reference#text-input-text-input-styles
    TextInputStyles: {
      SHORT: 1,
      PARAGRAPH: 2
    },

    # https://discord.com/developers/docs/components/reference#component-object-component-types
    Types: {
      ACTION_ROW: 1,
      BUTTON: 2,
      STRING_SELECT: 3,
      TEXT_INPUT: 4,
      USER_SELECT: 5,
      ROLE_SELECT: 6,
      MENTIONABLE_SELECT: 7,
      CHANNEL_SELECT: 8,
      SECTION: 9,
      TEXT_DISPLAY: 10,
      THUMBNAIL: 11,
      MEDIA_GALLERY: 12,
      FILE: 13,
      SEPARATOR: 14,
      CONTAINER: 17
    }
  },

  Poll: {
    # https://discord.com/developers/docs/resources/poll#layout-type
    LayoutTypes: {
      DEFAULT: 1
    }
  },

  RPC: {
    # https://discord.com/developers/docs/topics/rpc#getvoicesettings-key-types
    KeyTypes: {
      KEYBOARD_KEY: 0,
      MOUSE_BUTTON: 1,
      KEYBOARD_MODIFIER_KEY: 2,
      GAMEPAD_BUTTON: 3
    }
  },

  SKU: {
    # https://discord.com/developers/docs/resources/sku#sku-object-sku-flags
    Flags: {
      AVAILABLE: 1 << 2,
      GUILD_SUBSCRIPTION: 1 << 7,
      USER_SUBSCRIPTION: 1 << 8
    },

    # https://discord.com/developers/docs/resources/sku#sku-object-sku-types
    Types: {
      DURABLE: 2,
      CONSUMABLE: 3,
      SUBSCRIPTION: 5,
      SUBSCRIPTION_GROUP: 6
    }
  },

  StageInstance: {
    # https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-privacy-level
    PrivacyLevels: {
      PUBLIC: 1,
      GUILD_ONLY: 2
    }
  },

  Sticker: {
    # https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types
    FormatTypes: {
      PNG: 1,
      APNG: 2,
      LOTTIE: 3,
      GIF: 4
    },

    # https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types
    Types: {
      STANDARD: 1,
      GUILD: 2
    }
  },

  Subscription: {
    # https://discord.com/developers/docs/resources/subscription#subscription-statuses
    Statuses: {
      ACTIVE: 0,
      ENDING: 1,
      INACTIVE: 2
    }
  },

  Team: {
    # https://discord.com/developers/docs/topics/teams#data-models-membership-state-enum
    MembershipStateEnums: {
      INVITED: 1,
      ACCEPTED: 2
    }
  },

  # https://discord.com/developers/docs/reference#message-formatting-timestamp-styles
  TimestampStyles: {
    SHORT_TIME: "t",
    LONG_TIME: "T",
    SHORT_DATE: "d",
    LONG_DATE: "D",
    SHORT_DATETIME: "f",
    LONG_DATETIME: "F",
    RELATIVE_TIME: "R"
  },

  User: {
    # https://discord.com/developers/docs/resources/user#user-object-user-flags
    Flags: {
      STAFF: 1 << 0,
      PARTNER: 1 << 1,
      HYPESQUAD: 1 << 2,
      BUG_HUNTER_LEVEL_1: 1 << 3,
      HYPESQUAD_ONLINE_HOUSE_1: 1 << 6,
      HYPESQUAD_ONLINE_HOUSE_2: 1 << 7,
      HYPESQUAD_ONLINE_HOUSE_3: 1 << 8,
      PREMIUM_EARLY_SUPPORTER: 1 << 9,
      TEAM_PSEUDO_USER: 1 << 10,
      BUG_HUNTER_LEVEL_2: 1 << 14,
      VERIFIED_BOT: 1 << 16,
      VERIFIED_DEVELOPER: 1 << 17,
      CERTIFIED_MODERATOR: 1 << 18,
      BOT_HTTP_INTERACTIONS: 1 << 19,
      ACTIVE_DEVELOPER: 1 << 22
    },

    # https://discord.com/developers/docs/resources/user#user-object-premium-types
    PremiumTypes: {
      NONE: 0,
      NITRO_CLASSIC: 1,
      NITRO: 2,
      NITRO_BASIC: 3
    },

    # https://discord.com/developers/docs/resources/user#connection-object-visibility-types
    VisibilityTypes: {
      NONE: 0,
      EVERYONE: 1
    }
  },

  Voice: {
    # https://discord.com/developers/docs/topics/voice-connections#speaking
    SpeakingFlags: {
      MICROPHONE: 1 << 0,
      SOUNDSHARE: 1 << 1,
      PRIORITY: 1 << 2
    }
  },

  Webhook: {
    # https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types
    Types: {
      INCOMING: 1,
      CHANNEL_FOLLOWER: 2,
      APPLICATION: 3
    }
  }
}
BUG_TRACKER_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://todo.sr.ht/~komidore64/lib_discord"
DISCORD_BASE_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://discord.com"
DOCUMENTATION_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://rdoc.info/gems/lib_discord"
MAILING_LIST_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://sr.ht/~komidore64/lib_discord/lists"
PROJECT_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://sr.ht/~komidore64/lib_discord"
SOURCE_URL =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"https://git.sr.ht/~komidore64/lib_discord"
PERMISSIONS =
{
  CREATE_INSTANT_INVITE: 1 << 0,
  KICK_MEMBERS: 1 << 1,
  BAN_MEMBERS: 1 << 2,
  ADMINISTRATOR: 1 << 3,
  MANAGE_CHANNELS: 1 << 4,
  MANAGE_GUILD: 1 << 5,
  ADD_REACTIONS: 1 << 6,
  VIEW_AUDIT_LOG: 1 << 7,
  PRIORITY_SPEAKER: 1 << 8,
  STREAM: 1 << 9,
  VIEW_CHANNEL: 1 << 10,
  SEND_MESSAGES: 1 << 11,
  SEND_TTS_MESSAGES: 1 << 12,
  MANAGE_MESSAGES: 1 << 13,
  EMBED_LINKS: 1 << 14,
  ATTACH_FILES: 1 << 15,
  READ_MESSAGE_HISTORY: 1 << 16,
  MENTION_EVERYONE: 1 << 17,
  USE_EXTERNAL_EMOJIS: 1 << 18,
  VIEW_GUILD_INSIGHTS: 1 << 19,
  CONNECT: 1 << 20,
  SPEAK: 1 << 21,
  MUTE_MEMBERS: 1 << 22,
  DEAFEN_MEMBERS: 1 << 23,
  MOVE_MEMBERS: 1 << 24,
  USE_VAD: 1 << 25,
  CHANGE_NICKNAME: 1 << 26,
  MANAGE_NICKNAMES: 1 << 27,
  MANAGE_ROLES: 1 << 28,
  MANAGE_WEBHOOKS: 1 << 29,
  MANAGE_GUILD_EXPRESSIONS: 1 << 30,
  USE_APPLICATION_COMMANDS: 1 << 31,
  REQUEST_TO_SPEAK: 1 << 32,
  MANAGE_EVENTS: 1 << 33,
  MANAGE_THREADS: 1 << 34,
  CREATE_PUBLIC_THREADS: 1 << 35,
  CREATE_PRIVATE_THREADS: 1 << 36,
  USE_EXTERNAL_STICKERS: 1 << 37,
  SEND_MESSAGES_IN_THREADS: 1 << 38,
  USE_EMBEDDED_ACTIVITIES: 1 << 39,
  MODERATE_MEMBERS: 1 << 40,
  VIEW_CREATOR_MONETIZATION_ANALYTICS: 1 << 41,
  USE_SOUNDBOARD: 1 << 42,
  CREATE_GUILD_EXPRESSIONS: 1 << 43,
  CREATE_EVENTS: 1 << 44,
  USE_EXTERNAL_SOUNDS: 1 << 45,
  SEND_VOICE_MESSAGES: 1 << 46,
  SEND_POLLS: 1 << 49,
  USE_EXTERNAL_APPS: 1 << 50
}.freeze

Class Method Summary collapse

Class Method Details

.client(auth = nil, user_agent: "LibDiscord (#{LibDiscord::PROJECT_URL}, #{LibDiscord.version})", logger: nil) ⇒ Client

Parameters:

  • auth (String) (defaults to: nil)

    Authorization header value to be used in communication with Discord. In the format Bot <token> or Bearer <token>. If you intend only to make requests to unauthenticated endpoints, auth is not necessary.

  • user_agent (String) (defaults to: "LibDiscord (#{LibDiscord::PROJECT_URL}, #{LibDiscord.version})")

    User-Agent header value to use in requests to Discord.

  • logger (#debug, #info, #warn, #error, #fatal) (defaults to: nil)

    Logger to use for output messages. If not provided, a basic INFO-level $stdout logger is created for internal use ( l = Logger.new($stdout); l.level = :info ). CAUTION: a DEBUG level logger in production will leak sensitive data including authorization headers.

Returns:

See Also:



17
# File 'lib/lib_discord/client.rb', line 17

def self.client(*, **) = Client.new(*, **)

.formatterFormatter

Get a reference to Formatter.

Examples:

fmt = LibDiscord.formatter
fmt.user(12345678) # => "<@12345678>"

Returns:

See Also:



107
# File 'lib/lib_discord/formatter.rb', line 107

def self.formatter = Formatter

.mapsHash

Get the data structure for Discord encoded types, modes, levels, etc. This data structure exists for your convenience to help add meaning to information encoded within integers and bitmasks spread across Discord’s web API.

Examples:

aco_types = LibDiscord.maps[:ApplicationCommandOptionTypes]
aco_types[:CHANNEL] # => 7

Returns:

  • (Hash)


729
# File 'lib/lib_discord/maps.rb', line 729

def self.maps = MAPS

.permissionsHash

Get the data structure for Discord permissions. Use this data structure for permissions calculations, permissions comparisons, and to help reduce magic numbers in your code when making requests to Discord and parsing Discord responses.

Examples:

p = LibDiscord.permissions
p[:ADD_REACTIONS] # => 64

Permissions value that can SEND_MESSAGES and ADD_REACTIONS

my_perms = p[:SEND_MESSAGES] + p[:ADD_REACTIONS] # => 2112

Check for permission flags that are set.

my_perms & p[:ADD_REACTIONS] == p[:ADD_REACTIONS] # => true

Check for permission flags that are not set.

my_perms & p[:KICK_MEMBERS] == p[:KICK_MEMBERS] # => false

Returns:

  • (Hash)

See Also:



83
# File 'lib/lib_discord/permissions.rb', line 83

def self.permissions = PERMISSIONS

.versionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



5
6
7
# File 'lib/lib_discord/version.rb', line 5

def self.version
  @version ||= Gem::Version.new("1.0.1")
end