🍌BananaUtils
Documentation for utils file containing useful functions for addon development.
BananaUtils is utils file that is required by all addons listed in this documentation and needs to be downloaded separately.
Installation
While BananaUtils is not an addon it should be installed like one, therefore to install it you need to put bananaUtils.js
file downloaded from BuiltByBit resource page.
BrayanBot config migration
BananaUtils allows BrayanBot using to migrate their configs to the Olympus Bot format. Actions performed are:
Making all keys start from small letterRemoves BrayanBot slash command config and leaves only options objectMakes option type names start from capital letterRenames file to start from small letter
Old file is saved under oldname.yml.old file.
To trigger the config migration, user is required to add # BRAYANBOT MIGRATE # to the end of the config file. All .old files will be ignored and won't be migrated.
Config migration is now a deprecated feature and is not planned to come back at any point. More information regarding this change will be posted on my support server.
Developer API
BananaUtils is meant to be used by addon developers or easier and faster addon development. Before using BananaUtils functions, it's best to register addon. This functions should be called at the top of addon code.
const bananaUtils = require("./bananaUtils");
bananaUtils.handleAddon("addonName");
This, will register which creates a folder in addons_config
called the same as registered addon name and allows for BrayanBot config migration.
Setup message
With setupMessage
you are able to transform user-created message config to discord.js message config object. This functions includes support for content
, embeds
and components
. It also supports variables
both manual and these created using Utility
functions.
const bananaUtils = require("./bananaUtils");
const Utility = require("../utils/modules/Utility");
// ...
message.reply(bananaUtils.setupMessage({
configPath: // Message config object (See below)
variables: {
example: "This is an example variable",
...Utility.botVariables(client),
}
});
All possible options for configPath
are listed below in YAML format - since these options should be provided as options in you addon config file which should use YAML (as this is format that is used by Olympus Bot).
Message content
content
contains the text that will be sent as a normal discord message content.
Message embeds
embeds
is a list of objects containing configuration for embeds attached to the message. Limit of embeds in one message is 10.
author: # Embed author
authorIcon: # Embed author icon url
title: # Embed title
url: # Embed (title) URL
description: # Embed content
fields: # Embed fields - see below
footer: # Embed footer
footerIcon: # Embed footer icon url
thumbnail: # Embed thumbnail url
image: # Embed image url
color: # Embed color HEX code
timestamp: # Whenever timestamp should be visible (true/false)
fields
is a list of config objects for embed fields. Limit of fields in one embed is 25.
name: # Field name
value: # Filed content
inline: # Whenever this field should be in the same line (true/false)
Message components
components
is a object containting from 1 to 5 actions row config objects.
components:
"1":
"2":
"3":
"4":
"5":
Each action row can list of interactive elements - which can be both buttons and select menus. Each action row has a limit of 5 interactive elements.
Button component
type: Button
style: # Button type. Available types: Primary, Secondary, Success, Danger, Link
label: # Button label
emoji: # Button emoji
customId: # Button customId
Button style Link
is a unique button style. It is for opening urls after it's clicked. While it doesn't require customId
you need to provide link
containing url that should be opened after clicking the button.
Select Menu component
type: SelectMenu
placeholder: # Menu placeholder
customID: # Menu customId
minSelect: # Minimum count of options to be selected. Default: 0
maxSelect: # Maximum count of options to be selected. Default: None
options: # Menu options - see below
options
is a list of config objects for select menu options
default: # Whenever the option should be selected by default. (true/false)
label: # Option label
description: # Option description
emoji: # Option emoji
value: # Option value
Setup command
This function is on BananaUtils roadmap and will be implemented in the future.
Other functions
const bananaUtils = require("./bananaUtils");
// Check whenever user has specific role
// member - GuildMember, role - String
if (bananaUtils.hasRole(member, role)) {
// Do stuff
}
const bananaUtils = require("./bananaUtils");
const Utility = require("../utils/modules/Utility");
// Replace variable in provided text
// text - String, variables - variables config
let text = "Bot username is {bot-username}";
let variables = Utility.botVariables(client);
text = replaceVariables(text, variables); // Bot username is awesomeUsername
const bananaUtils = require("./bananaUtils");
// Lowercase first letter of a string
let text = "String";
text = bananaUtils.lowercaseFirstLetter(text); // string
const bananaUtils = require("./bananaUtils");
// Lowercase first letter of a string
let text = "string";
text = bananaUtils.capitalizeFirstLetter(text); // String
Last updated