Skip to main content

UI

UI is a utility class for getting internal webpack modules. Instance is accessible through the BdApi. This is extremely useful for interacting with the internals of Discord.

Properties

Methods

alert

Shows a generic but very customizable modal.

ParameterTypeDescription
titlestringtitle of the modal
contentstring|ReactElement|Array.<(string|ReactElement)>a string of text to display in the modal

Returns: void


createTooltip

Creates a tooltip to automatically show on hover.

ParameterTypeOptionalDefaultDescription
nodeHTMLElementnoneDOM node to monitor and show the tooltip on
contentstring|HTMLElementnonestring to show in the tooltip
optionsobjectnoneadditional options for the tooltip
options.style"primary"|"info"|"success"|"warn"|"danger""primary"correlates to the discord styling/colors
options.side"top"|"right"|"bottom"|"left""top"can be any of top, right, bottom, left
options.preventFlipbooleanfalseprevents moving the tooltip to the opposite side if it is too big or goes offscreen
options.disabledbooleanfalsewhether the tooltip should be disabled from showing on hover

Returns: Tooltip - the tooltip that was generated


openDialog

Gives access to the Electron Dialog api. Returns a Promise that resolves to an object that has a boolean cancelled and a filePath string for saving and a filePaths string array for opening.

ParameterTypeOptionalDefaultDescription
optionsobjectnoneOptions object to configure the dialog.
options.mode"open"|"save""open"Determines whether the dialog should open or save files.
options.defaultPathstring~Path the dialog should show on launch.
options.filtersArray.<object.<string, Array.<string>>>[]An array of file filters.
options.titlestringnoneTitle for the titlebar.
options.messagestringnoneMessage for the dialog.
options.showOverwriteConfirmationbooleanfalseWhether the user should be prompted when overwriting a file.
options.showHiddenFilesbooleanfalseWhether hidden files should be shown in the dialog.
options.promptToCreatebooleanfalseWhether the user should be prompted to create non-existant folders.
options.openDirectorybooleanfalseWhether the user should be able to select a directory as a target.
options.openFilebooleantrueWhether the user should be able to select a file as a target.
options.multiSelectionsbooleanfalseWhether the user should be able to select multiple targets.
options.modalbooleanfalseWhether the dialog should act as a modal to the main window.

Returns: Promise.<object> - Result of the dialog


showConfirmationModal

Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.

ParameterTypeOptionalDefaultDescription
titlestringnonetitle of the modal
childrenstring|ReactElement|Array.<(string|ReactElement)>nonea single or mixed array of react elements and strings. Everything is wrapped in Discord's TextElement component so strings will show and render properly.
optionsobjectnoneoptions to modify the modal
options.dangerbooleanfalsewhether the main button should be red or not
options.confirmTextstringOkaytext for the confirmation/submit button
options.cancelTextstringCanceltext for the cancel button
options.onConfirmcallableNOOPcallback to occur when clicking the submit button
options.onCancelcallableNOOPcallback to occur when clicking the cancel button

Returns: void


showNotice

Shows a notice above Discord's chat layer.

ParameterTypeOptionalDefaultDescription
contentstring|NodenoneContent of the notice
optionsobjectnoneOptions for the notice.
options.typestring"info""error"
options.buttonsArray.<{label: string, onClick: function()}>noneButtons that should be added next to the notice text.
options.timeoutnumber10000Timeout until the notice is closed. Won't fire if it's set to 0;

Returns: function


showToast

This shows a toast similar to android towards the bottom of the screen.

ParameterTypeOptionalDefaultDescription
contentstringnoneThe string to show in the toast.
optionsobjectnoneOptions object. Optional parameter.
options.typestring""Changes the type of the toast stylistically and semantically. Choices: "", "info", "success", "danger"/"error", "warning"/"warn". Default: ""
options.iconbooleantrueDetermines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true
options.timeoutnumber3000Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000
options.forceShowbooleanfalseWhether to force showing the toast and ignore the bd setting

Returns: void