From ec8a5dc2e0436b82ff2a42444bbd1fa2bd881503 Mon Sep 17 00:00:00 2001 From: raspdevpy <46069198+raspdevpy@users.noreply.github.com> Date: Mon, 3 Aug 2026 10:06:33 +0200 Subject: [PATCH 01/62] Migrate documentation from VuePress 2 to Fumadocs VuePress 2 never shipped a stable release; the site was pinned to 2.0.0-rc.31. This moves the docs to Fumadocs 16 on Next.js 16, exported as a static build so the existing nginx container still serves it. Every one of the 624 page URLs is preserved. Function pages live under a `content/docs/(functions)/` folder group, which nests them under a "Functions" heading in the sidebar without appearing in the URL, so `/Member/kick` stays `/Member/kick`. Content: - 624 .md -> .mdx, with an H1 -> frontmatter `title` pass - `::: tip|warning|danger|info` -> , `::: details` -> - Vue attribute bindings, unclosed void tags, bare braces and stray `<` fixed for MDX's stricter parser - @discord-message-components/vue (unmaintained since 2022) replaced with @skyra/discord-components-react; these are web components and render client-side only Build pipeline: - the three VuePress markdown replacers are now remark plugins (cooldown sections, $function auto-linking, cached remote images) - sidebar.js weight ordering translated into 38 meta.json files - search moves to Fumadocs' static Orama index, still fed the Badge-derived tags the old parseTags.js supplied - docs-pages.json is regenerated post-build, keeping its published shape Also fixed along the way: - $modal/$channel/$poll/$button auto-linked to Trigger pages instead of the functions, because the old name->path scan was last-wins - three pages with unclosed fences or duplicated container openers that were already rendering incorrectly - nginx served everything uncompressed; gzip cuts a page from 294 KB to 28 KB and the search index from 8.6 MB to 1.4 MB - "/" 301-redirected to "/index" Tooling moves from npm to pnpm. Co-Authored-By: Claude Opus 5 --- .dockerignore | 17 +- .gitignore | 13 +- .npmrc | 1 - Dockerfile | 13 +- DockerfileDev | 11 +- README.md | 39 +- app/(docs)/[[...slug]]/page.tsx | 73 + app/(docs)/layout.tsx | 11 + app/api/search/route.ts | 53 + app/global.css | 24 + app/layout.tsx | 44 + app/llms-full.txt/route.ts | 10 + app/llms.mdx/[[...slug]]/route.ts | 23 + app/llms.txt/route.ts | 8 + components/arg.tsx | 54 + components/badge.tsx | 35 + components/discord.tsx | 68 + components/mdx.tsx | 24 + components/provider.tsx | 8 + components/search.tsx | 38 + content/docs/(functions)/Bot/botCount.mdx | 35 + .../docs/(functions)/Bot/botOwnerID.mdx | 4 +- .../docs/(functions)/Bot/botPing.mdx | 4 +- content/docs/(functions)/Bot/botTier.mdx | 18 + .../docs/(functions)/Bot/botTyping.mdx | 4 +- .../docs/(functions)/Bot/botVerified.mdx | 36 +- .../docs/(functions)/Bot/botVersion.mdx | 4 +- .../docs/(functions)/Bot/cacheMember.mdx | 15 +- content/docs/(functions)/Bot/clientID.mdx | 28 + .../docs/(functions)/Bot/cpu.mdx | 4 +- .../docs/(functions)/Bot/executionTime.mdx | 4 +- .../docs/(functions)/Bot/getBotActivity.mdx | 22 +- content/docs/(functions)/Bot/getBotInvite.mdx | 40 + .../docs/(functions)/Bot/maxRam.mdx | 4 +- content/docs/(functions)/Bot/meta.json | 6 + content/docs/(functions)/Bot/ping.mdx | 27 + content/docs/(functions)/Bot/ram.mdx | 28 + content/docs/(functions)/Bot/serverCount.mdx | 24 + .../docs/(functions)/Bot/setBotActivity.mdx | 6 +- content/docs/(functions)/Bot/uptime.mdx | 27 + .../Channel/blackListChannelIDs.mdx | 4 +- .../Channel/cacheChannelMessages.mdx | 4 +- .../(functions)/Channel/categoryChannels.mdx | 4 +- .../docs/(functions)/Channel/channel.mdx | 37 +- .../(functions)/Channel/channelCategoryID.mdx | 25 +- .../docs/(functions)/Channel/channelCount.mdx | 31 + .../(functions)/Channel/channelExists.mdx | 27 +- .../docs/(functions)/Channel/channelID.mdx | 15 +- .../docs/(functions)/Channel/channelName.mdx | 45 + .../Channel/channelPermissionsFor.mdx | 20 +- .../docs/(functions)/Channel/channelTopic.mdx | 4 +- .../docs/(functions)/Channel/channelType.mdx | 32 + .../docs/(functions)/Channel/channelUsed.mdx | 39 + content/docs/(functions)/Channel/clear.mdx | 60 + .../docs/(functions)/Channel/cloneChannel.mdx | 4 +- .../docs/(functions)/Channel/closeTicket.mdx | 9 +- .../(functions)/Channel/createChannel.mdx | 23 +- .../docs/(functions)/Channel/createForum.mdx | 4 +- .../(functions)/Channel/deleteChannels.mdx | 15 +- .../docs/(functions)/Channel/editChannel.mdx | 23 +- .../docs/(functions)/Channel/editForum.mdx | 4 +- .../(functions)/Channel/eventChannelID.mdx | 15 +- .../Channel/eventChannelParent.mdx | 4 +- .../docs/(functions)/Channel/findChannel.mdx | 54 + .../(functions)/Channel/findServerChannel.mdx | 26 +- .../Channel/getChannelMessages.mdx | 20 +- .../Channel/getChannelSlowmode.mdx | 4 +- .../(functions)/Channel/latestMessage.mdx | 36 +- .../(functions)/Channel/mentionChannel.mdx | 4 +- content/docs/(functions)/Channel/meta.json | 6 + .../Channel/modifyChannelPerms.mdx | 29 +- .../docs/(functions)/Channel/newTicket.mdx | 29 +- .../(functions)/Channel/removeContains.mdx | 4 +- .../(functions)/Channel/serverChannels.mdx | 38 +- .../(functions)/Channel/setChannelTopic.mdx | 4 +- .../docs/(functions)/Channel/slowmode.mdx | 4 +- .../(functions)/Channel/transcriptChannel.mdx | 4 +- .../docs/(functions)/Channel/useChannel.mdx | 25 +- .../docs/(functions)/Channel/vcAfter.mdx | 4 +- .../docs/(functions)/Channel/vcBefore.mdx | 4 +- .../(functions)/Channel/voiceChannelID.mdx | 18 +- .../(functions)/Cooldown/channelCooldown.mdx | 55 +- .../(functions)/Cooldown/clearCoolDown.mdx | 46 + .../docs/(functions)/Cooldown/cooldown.mdx | 55 +- .../(functions)/Cooldown/getCooldownTime.mdx | 35 +- content/docs/(functions)/Cooldown/meta.json | 6 + .../(functions)/Cooldown/serverCooldown.mdx | 55 +- .../docs/(functions)/Date/creationDate.mdx | 31 +- content/docs/(functions)/Date/dateStamp.mdx | 31 + .../docs/(functions)/Date/dateToTime.mdx | 20 +- content/docs/(functions)/Date/day.mdx | 34 + .../docs/(functions)/Date/formatDate.mdx | 41 +- content/docs/(functions)/Date/hour.mdx | 33 + .../docs/(functions)/Date/humanizeMS.mdx | 17 +- .../(functions)/Date/memberJoinedCode.mdx | 20 +- .../(functions)/Date/memberJoinedDate.mdx | 17 +- content/docs/(functions)/Date/meta.json | 6 + content/docs/(functions)/Date/minute.mdx | 35 + .../docs/(functions)/Date/month.mdx | 17 +- content/docs/(functions)/Date/parseDate.mdx | 36 + content/docs/(functions)/Date/parseTime.mdx | 73 + content/docs/(functions)/Date/second.mdx | 32 + .../docs/(functions)/Date/timeStamp.mdx | 25 +- .../docs/(functions)/Date/timeToDate.mdx | 30 +- .../docs/(functions)/Date/timezone.mdx | 31 +- .../docs/(functions)/Date/upvoteTime.mdx | 4 +- content/docs/(functions)/Date/year.mdx | 37 + .../docs/(functions)/Events/eventCreate.mdx | 4 +- .../docs/(functions)/Events/eventDelete.mdx | 4 +- .../docs/(functions)/Events/eventEdit.mdx | 4 +- .../docs/(functions)/Events/eventEnd.mdx | 4 +- .../docs/(functions)/Events/eventExists.mdx | 20 +- .../docs/(functions)/Events/eventStart.mdx | 4 +- .../docs/(functions)/Events/getEventInfo.mdx | 20 +- .../docs/(functions)/Events/getEventUsers.mdx | 20 +- .../docs/(functions)/Events/guildEvents.mdx | 20 +- content/docs/(functions)/Events/meta.json | 6 + .../docs/(functions)/Image/imageBorderRad.mdx | 22 +- .../docs/(functions)/Image/imageCreate.mdx | 22 +- content/docs/(functions)/Image/imageCrop.mdx | 21 + .../docs/(functions)/Image/imageDraw.mdx | 26 +- .../docs/(functions)/Image/imageDrawBack.mdx | 26 +- content/docs/(functions)/Image/imageFill.mdx | 59 + .../docs/(functions)/Image/imageHeight.mdx | 4 +- .../(functions)/Image/imageLineHeight.mdx | 20 +- .../docs/(functions)/Image/imageLoadEmoji.mdx | 48 + .../(functions)/Image/imageLoadFromURL.mdx | 28 +- .../docs/(functions)/Image/imageOutput.mdx | 4 +- .../(functions)/Image/imagePositionBase.mdx | 21 +- .../(functions)/Image/imageSetOpacity.mdx | 22 +- .../docs/(functions)/Image/imageStroke.mdx | 25 +- .../(functions)/Image/imageStrokeWidth.mdx | 37 + .../docs/(functions)/Image/imageTextAlign.mdx | 4 +- .../(functions)/Image/imageTextBaseline.mdx | 4 +- .../docs/(functions)/Image/imageTextColor.mdx | 4 +- .../docs/(functions)/Image/imageTextFill.mdx | 38 + .../(functions)/Image/imageTextFillColor.mdx | 4 +- .../docs/(functions)/Image/imageTextSize.mdx | 4 +- .../(functions)/Image/imageTextStroke.mdx | 26 +- .../Image/imageTextStrokeColor.mdx | 4 +- .../(functions)/Image/imageTextWeight.mdx | 4 +- .../docs/(functions)/Image/imageUseFont.mdx | 21 +- .../docs/(functions)/Image/imageWidth.mdx | 4 +- content/docs/(functions)/Image/meta.json | 6 + .../(functions)/Interaction/commandName.mdx | 14 +- .../(functions)/Interaction/getOption.mdx | 4 +- .../Interaction/interactionDelete.mdx | 9 +- .../Interaction/interactionEdit.mdx | 43 + .../(functions)/Interaction/interactionId.mdx | 17 +- .../Interaction/interactionReply.mdx | 37 +- .../docs/(functions)/Interaction/meta.json | 6 + .../docs/(functions)/Interaction/modal.mdx | 28 +- .../(functions)/Interaction/modalAnswer.mdx | 14 +- .../docs/(functions)/Interaction/modalID.mdx | 14 +- .../docs/(functions)/Member/authorAvatar.mdx | 47 + content/docs/(functions)/Member/authorID.mdx | 32 + content/docs/(functions)/Member/ban.mdx | 58 + .../docs/(functions)/Member/blackListIDs.mdx | 25 +- .../docs/(functions)/Member/boostingSince.mdx | 46 + .../(functions)/Member/changeNickname.mdx | 46 + .../docs/(functions)/Member/discriminator.mdx | 39 + .../docs/(functions)/Member/displayName.mdx | 33 + .../(functions)/Member/eventNewNickname.mdx | 9 +- .../(functions)/Member/eventOldNickname.mdx | 9 +- .../docs/(functions)/Member/findMember.mdx | 56 + .../docs/(functions)/Member/getUserBadges.mdx | 39 + .../docs/(functions)/Member/globalName.mdx | 33 + .../docs/(functions)/Member/hasAnyPerm.mdx | 46 + .../docs/(functions)/Member/hasAnyRole.mdx | 46 + content/docs/(functions)/Member/hasPerms.mdx | 40 + content/docs/(functions)/Member/hasRoles.mdx | 40 + content/docs/(functions)/Member/isBanned.mdx | 33 + .../(functions)/Member/isUserDMEnabled.mdx | 33 + content/docs/(functions)/Member/kick.mdx | 58 + .../docs/(functions)/Member/memberSearch.mdx | 66 + .../(functions)/Member/membersWithStatus.mdx | 56 + content/docs/(functions)/Member/mention.mdx | 35 + content/docs/(functions)/Member/meta.json | 6 + .../docs/(functions)/Member/moveUser.mdx | 35 +- .../docs/(functions)/Member/muteUser.mdx | 35 +- content/docs/(functions)/Member/nickname.mdx | 33 + content/docs/(functions)/Member/status.mdx | 41 + content/docs/(functions)/Member/unban.mdx | 37 + .../Member/upvoteReferralUserID.mdx | 10 +- .../docs/(functions)/Member/user.mdx | 26 +- .../docs/(functions)/Member/userAvatar.mdx | 49 + .../docs/(functions)/Member/userBanner.mdx | 60 + .../(functions)/Member/userConnectedVC.mdx | 46 + .../docs/(functions)/Member/userExists.mdx | 42 + content/docs/(functions)/Member/userID.mdx | 41 + content/docs/(functions)/Member/userPerms.mdx | 43 + .../docs/(functions)/Member/userReacted.mdx | 41 +- .../docs/(functions)/Member/userRoleColor.mdx | 42 + .../docs/(functions)/Member/userRoles.mdx | 33 +- content/docs/(functions)/Member/userTag.mdx | 39 + content/docs/(functions)/Member/username.mdx | 42 + .../docs/(functions)/Member/usersBanned.mdx | 40 + .../(functions)/Member/usersInChannel.mdx | 33 +- .../docs/(functions)/Member/usersTyping.mdx | 31 +- .../docs/(functions)/Member/usersWithRole.mdx | 33 +- .../docs/(functions)/Message/DM.mdx | 32 +- .../(functions)/Message/addCmdReactions.mdx | 15 +- .../Message/addMessageReactions.mdx | 15 +- .../docs/(functions)/Message/addReactions.mdx | 15 +- .../docs/(functions)/Message/argsCheck.mdx | 6 +- .../docs/(functions)/Message/argsCount.mdx | 4 +- .../docs/(functions)/Message/awaitMessage.mdx | 32 +- .../Message/channelSendMessage.mdx | 30 +- .../(functions)/Message/clearReaction.mdx | 15 +- .../(functions)/Message/clearReactions.mdx | 15 +- .../(functions)/Message/createWebhook.mdx | 37 +- .../(functions)/Message/deleteCommand.mdx | 16 +- .../docs/(functions)/Message/deleteIn.mdx | 15 +- .../(functions)/Message/deleteMessage.mdx | 15 +- .../(functions)/Message/deleteWebhook.mdx | 9 +- .../Message/deleteWebhookMessage.mdx | 4 +- .../Message/disableChannelMentions.mdx | 4 +- .../Message/disableEveryoneMentions.mdx | 4 +- .../Message/disableRoleMentions.mdx | 4 +- .../docs/(functions)/Message/editEmbed.mdx | 4 +- .../docs/(functions)/Message/editIn.mdx | 4 +- .../docs/(functions)/Message/editMessage.mdx | 29 +- .../Message/editWebhookMessage.mdx | 4 +- .../docs/(functions)/Message/emoji.mdx | 4 +- .../docs/(functions)/Message/emojiID.mdx | 4 +- .../docs/(functions)/Message/emojiName.mdx | 4 +- .../(functions)/Message/emojiToString.mdx | 4 +- .../(functions)/Message/emojisFromMessage.mdx | 4 +- .../Message/enableEveryoneMentions.mdx | 4 +- .../(functions)/Message/forwardMessage.mdx | 5 +- .../(functions)/Message/getCommandOption.mdx | 9 +- .../docs/(functions)/Message/getEmbed.mdx | 20 +- .../docs/(functions)/Message/getMessage.mdx | 4 +- .../Message/getMessageReactions.mdx | 4 +- .../(functions)/Message/getReactionCount.mdx | 20 +- .../docs/(functions)/Message/getReactions.mdx | 21 +- .../docs/(functions)/Message/hasEmbeds.mdx | 4 +- .../docs/(functions)/Message/hyperlink.mdx | 4 +- .../docs/(functions)/Message/message.mdx | 10 +- .../(functions)/Message/messageAttachment.mdx | 36 + .../(functions)/Message/messageExists.mdx | 34 + .../docs/(functions)/Message/messageFlags.mdx | 25 +- .../docs/(functions)/Message/messageID.mdx | 20 +- .../(functions)/Message/messagePublish.mdx | 9 +- .../docs/(functions)/Message/messageSlice.mdx | 9 +- .../docs/(functions)/Message/messageType.mdx | 33 + .../(functions)/Message/messageWebhookID.mdx | 29 + content/docs/(functions)/Message/meta.json | 6 + .../(functions)/Message/modifyWebhook.mdx | 10 +- .../docs/(functions)/Message/msg.mdx | 28 +- .../(functions)/Message/noEscapingMessage.mdx | 44 + .../(functions)/Message/noMentionMessage.mdx | 33 + .../docs/(functions)/Message/pinMessage.mdx | 4 +- .../docs/(functions)/Message/poll.mdx | 14 +- .../Message/referenceChannelID.mdx | 4 +- .../Message/referenceMessageID.mdx | 4 +- .../docs/(functions)/Message/reply.mdx | 4 +- .../Message/sendCrosspostingMessage.mdx | 4 +- content/docs/(functions)/Message/sendDM.mdx | 51 + .../docs/(functions)/Message/sendMessage.mdx | 53 + .../docs/(functions)/Message/sendWebhook.mdx | 29 +- .../(functions)/Message/sentMessageID.mdx | 4 +- .../docs/(functions)/Message/unpinMessage.mdx | 4 +- .../(functions)/Message/webhookExists.mdx | 28 + content/docs/(functions)/Random/meta.json | 6 + .../docs/(functions)/Random/random.mdx | 25 +- .../(functions)/Random/randomChannelID.mdx | 9 +- .../docs/(functions)/Random/randomMention.mdx | 36 + .../docs/(functions)/Random/randomRoleID.mdx | 33 + .../docs/(functions)/Random/randomString.mdx | 32 + .../docs/(functions)/Random/randomText.mdx | 25 +- .../(functions)/Random/randomTextBiased.mdx | 36 +- .../docs/(functions)/Random/randomUserID.mdx | 33 + .../docs/(functions)/Random/resetRandom.mdx | 6 +- .../docs/(functions)/Request/httpRequest.mdx | 20 +- .../(functions)/Request/httpRequestHeader.mdx | 35 + .../(functions)/Request/httpRequestStatus.mdx | 34 + content/docs/(functions)/Request/meta.json | 6 + .../(functions)/Role/blackListRoleIDs.mdx | 37 +- content/docs/(functions)/Role/colorRole.mdx | 21 + .../docs/(functions)/Role/createRole.mdx | 26 +- .../docs/(functions)/Role/deleteRoles.mdx | 15 +- content/docs/(functions)/Role/findRole.mdx | 54 + .../docs/(functions)/Role/getRoleColor.mdx | 4 +- .../docs/(functions)/Role/giveRoles.mdx | 31 +- content/docs/(functions)/Role/guildRoles.mdx | 45 + content/docs/(functions)/Role/hasRole.mdx | 32 + content/docs/(functions)/Role/highestRole.mdx | 43 + .../(functions)/Role/highestServerRole.mdx | 9 +- .../docs/(functions)/Role/lowestRole.mdx | 9 +- .../(functions)/Role/lowestServerRole.mdx | 9 +- .../docs/(functions)/Role/mentionRole.mdx | 4 +- content/docs/(functions)/Role/meta.json | 6 + .../docs/(functions)/Role/modifyRole.mdx | 27 +- .../docs/(functions)/Role/modifyRolePerms.mdx | 35 +- .../docs/(functions)/Role/modifyUserRoles.mdx | 4 +- .../docs/(functions)/Role/role.mdx | 25 +- content/docs/(functions)/Role/roleCount.mdx | 35 + .../docs/(functions)/Role/roleExists.mdx | 21 +- content/docs/(functions)/Role/roleID.mdx | 40 + .../docs/(functions)/Role/roleIcon.mdx | 4 +- .../(functions)/Role/roleMembersCount.mdx | 10 +- content/docs/(functions)/Role/roleName.mdx | 31 + content/docs/(functions)/Role/rolePerms.mdx | 41 + .../docs/(functions)/Role/rolePosition.mdx | 22 +- .../docs/(functions)/Role/setRoles.mdx | 34 +- .../docs/(functions)/Role/takeRoles.mdx | 33 +- .../docs/(functions)/Role/toggleRoles.mdx | 28 +- .../docs/(functions)/Server/addEmoji.mdx | 16 +- .../(functions)/Server/allMembersCount.mdx | 19 + .../Server/createAutomodKeyword.mdx | 6 +- .../docs/(functions)/Server/deleteAutomod.mdx | 4 +- .../docs/(functions)/Server/deleteEmojis.mdx | 4 +- .../(functions)/Server/editAutomodKeyword.mdx | 4 +- .../docs/(functions)/Server/emojiCount.mdx | 4 +- .../docs/(functions)/Server/emojiExists.mdx | 4 +- .../docs/(functions)/Server/getInviteInfo.mdx | 20 +- .../(functions)/Server/getServerInvite.mdx | 21 + .../docs/(functions)/Server/guild.mdx | 22 +- .../docs/(functions)/Server/membersCount.mdx | 24 + content/docs/(functions)/Server/meta.json | 6 + content/docs/(functions)/Server/ownerID.mdx | 21 + .../(functions)/Server/resolveEmojiID.mdx | 4 +- .../docs/(functions)/Server/securityPause.mdx | 4 +- .../docs/(functions)/Server/serverBanner.mdx | 6 +- .../(functions)/Server/serverBoostCount.mdx | 21 + .../(functions)/Server/serverBoostLevel.mdx | 21 + .../Server/serverContentFilter.mdx | 21 + .../(functions)/Server/serverDescription.mdx | 38 + .../docs/(functions)/Server/serverEmojis.mdx | 21 + .../(functions)/Server/serverFeatures.mdx | 19 + .../docs/(functions)/Server/serverIcon.mdx | 22 + .../docs/(functions)/Server/serverName.mdx | 25 + .../docs/(functions)/Server/serverRegion.mdx | 22 + .../docs/(functions)/Server/serverSplash.mdx | 13 + .../Server/serverVerificationLevel.mdx | 20 + .../docs/(functions)/Server/setGuildIcon.mdx | 18 + .../docs/(functions)/Server/setGuildName.mdx | 18 + .../(functions)/Server/systemChannelID.mdx | 23 + .../(functions)/Stickers/createSticker.mdx | 4 +- .../(functions)/Stickers/deleteSticker.mdx | 4 +- .../docs/(functions)/Stickers/editSticker.mdx | 4 +- .../(functions)/Stickers/messageStickers.mdx | 22 + content/docs/(functions)/Stickers/meta.json | 6 + .../(functions)/Stickers/serverStickers.mdx | 4 +- content/docs/(functions)/Stickers/sticker.mdx | 22 + .../(functions)/Text/Array/arrayClear.mdx | 21 + .../(functions)/Text/Array/arrayConcat.mdx | 24 + .../(functions)/Text/Array/arrayCount.mdx | 21 + .../(functions)/Text/Array/arrayCreate.mdx | 24 + .../Text/Array/arrayElementCount.mdx | 22 + .../(functions)/Text/Array/arrayFilter.mdx | 26 +- .../docs/(functions)/Text/Array/arrayGet.mdx | 21 + .../(functions)/Text/Array/arrayInclude.mdx | 21 + .../docs/(functions)/Text/Array/arrayJoin.mdx | 21 + .../(functions)/Text/Array/arrayLength.mdx | 21 + .../docs/(functions)/Text/Array/arrayLoop.mdx | 26 +- .../docs/(functions)/Text/Array/arrayMap.mdx | 26 +- .../docs/(functions)/Text/Array/arrayPop.mdx | 21 + .../docs/(functions)/Text/Array/arrayPush.mdx | 21 + .../(functions)/Text/Array/arrayRemove.mdx | 21 + .../(functions)/Text/Array/arrayReverse.mdx | 21 + .../(functions)/Text/Array/arraySearch.mdx | 21 + .../docs/(functions)/Text/Array/arraySet.mdx | 21 + .../(functions)/Text/Array/arrayShift.mdx | 21 + .../(functions)/Text/Array/arrayShuffle.mdx | 21 + .../(functions)/Text/Array/arraySlice.mdx | 21 + .../docs/(functions)/Text/Array/arraySort.mdx | 47 + .../(functions)/Text/Array/arrayUnique.mdx | 21 + .../(functions)/Text/Array/arrayUnshift.mdx | 21 + content/docs/(functions)/Text/Array/meta.json | 6 + .../(functions)/Text/Components/addButton.mdx | 16 +- .../(functions)/Text/Components/addMenu.mdx | 5 +- .../Text/Components/awaitButton.mdx | 33 +- .../(functions)/Text/Components/awaitMenu.mdx | 14 +- .../(functions)/Text/Components/button.mdx | 25 +- .../Text/Components/buttonEmoji.mdx | 4 +- .../(functions)/Text/Components/buttonID.mdx | 4 +- .../Text/Components/buttonIsDisabled.mdx | 6 +- .../Text/Components/buttonLabel.mdx | 4 +- .../Text/Components/buttonStyle.mdx | 4 +- .../(functions)/Text/Components/buttonURL.mdx | 4 +- .../Text/Components/disableButton.mdx | 10 +- .../Text/Components/disableButtons.mdx | 4 +- .../Text/Components/disableMenu.mdx | 4 +- .../Text/Components/editButton.mdx | 18 +- .../(functions)/Text/Components/editMenu.mdx | 4 +- .../Text/Components/enableButtons.mdx | 4 +- .../Text/Components/enableMenu.mdx | 4 +- .../Text/Components/eventSelected.mdx | 4 +- .../Text/Components/eventTargetID.mdx | 4 +- .../(functions)/Text/Components/menuId.mdx | 6 +- .../(functions)/Text/Components/meta.json | 6 + .../Text/Components/removeButton.mdx | 28 + .../Text/Components/removeButtons.mdx | 14 + .../Text/Components/removeEmbed.mdx | 4 +- .../Text/Components/removeMenu.mdx | 4 +- .../Text/Components/selectMenu.mdx | 42 +- .../Text/Condition/checkCondition.mdx | 34 + .../Text/Condition/conditional.mdx | 24 + .../docs/(functions)/Text/Condition/else.mdx | 4 +- .../(functions)/Text/Condition/elseif.mdx | 4 +- .../docs/(functions)/Text/Condition/endIf.mdx | 4 +- .../(functions)/Text/Condition/endelseif.mdx | 4 +- .../docs/(functions)/Text/Condition/if.mdx | 134 + .../docs/(functions)/Text/Condition/meta.json | 6 + .../docs/(functions)/Text/Embed/addField.mdx | 64 + .../(functions)/Text/Embed/addTimestamp.mdx | 42 + .../(functions)/Text/Embed/attachment.mdx | 4 +- .../docs/(functions)/Text/Embed/author.mdx | 44 + content/docs/(functions)/Text/Embed/color.mdx | 50 + .../(functions)/Text/Embed/description.mdx | 44 + .../docs/(functions)/Text/Embed/example.mdx | 19 +- .../docs/(functions)/Text/Embed/footer.mdx | 33 + content/docs/(functions)/Text/Embed/image.mdx | 32 + content/docs/(functions)/Text/Embed/meta.json | 6 + .../docs/(functions)/Text/Embed/thumbnail.mdx | 32 + content/docs/(functions)/Text/Embed/title.mdx | 42 + .../docs/(functions)/Text/Math/abbreviate.mdx | 25 + content/docs/(functions)/Text/Math/abs.mdx | 21 + content/docs/(functions)/Text/Math/ceil.mdx | 31 + content/docs/(functions)/Text/Math/divide.mdx | 21 + content/docs/(functions)/Text/Math/floor.mdx | 31 + content/docs/(functions)/Text/Math/math.mdx | 57 + .../docs/(functions)/Text/Math/mathMax.mdx | 21 + .../docs/(functions)/Text/Math/mathMin.mdx | 21 + content/docs/(functions)/Text/Math/meta.json | 6 + content/docs/(functions)/Text/Math/modulo.mdx | 21 + content/docs/(functions)/Text/Math/multi.mdx | 20 + .../docs/(functions)/Text/Math/ordinal.mdx | 21 + content/docs/(functions)/Text/Math/round.mdx | 21 + .../docs/(functions)/Text/Math/roundTenth.mdx | 21 + content/docs/(functions)/Text/Math/sub.mdx | 21 + content/docs/(functions)/Text/Math/sum.mdx | 20 + .../docs/(functions)/Text/Math/truncate.mdx | 20 + .../(functions)/Text/Object/ObjectCreate.mdx | 41 +- .../(functions)/Text/Object/ObjectGet.mdx | 21 + .../Text/Object/ObjectIncrease.mdx | 35 + .../Text/Object/ObjectKeyExists.mdx | 41 + .../(functions)/Text/Object/ObjectKeys.mdx | 31 + .../(functions)/Text/Object/ObjectLoop.mdx | 26 +- .../(functions)/Text/Object/ObjectMerge.mdx | 31 + .../(functions)/Text/Object/ObjectRemove.mdx | 27 + .../Text/Object/ObjectRenameKey.mdx | 31 + .../(functions)/Text/Object/ObjectSet.mdx | 42 +- .../(functions)/Text/Object/ObjectValues.mdx | 31 + .../Text/Object/addObjectProperty.mdx | 10 +- .../(functions)/Text/Object/createObject.mdx | 27 + .../(functions)/Text/Object/getObject.mdx | 30 + .../(functions)/Text/Object/getObjectKeys.mdx | 10 +- .../Text/Object/getObjectProperty.mdx | 10 +- .../docs/(functions)/Text/Object/meta.json | 6 + content/docs/(functions)/Text/Regex/meta.json | 6 + .../(functions)/Text/Regex/regexCheck.mdx | 31 + .../(functions)/Text/Regex/regexMatch.mdx | 53 + .../(functions)/Text/Regex/regexReplace.mdx | 21 + .../Text/Regex/replaceTextWithRegex.mdx | 23 + .../docs/(functions)/Text/buffer.mdx | 4 +- content/docs/(functions)/Text/channelNSFW.mdx | 20 + content/docs/(functions)/Text/charCount.mdx | 23 + .../docs/(functions)/Text/checkContains.mdx | 31 + content/docs/(functions)/Text/customEmoji.mdx | 33 + .../docs/(functions)/Text/disableMentions.mdx | 21 + .../docs/(functions)/Text/filterMessage.mdx | 21 + .../(functions)/Text/filterMessageWords.mdx | 4 +- content/docs/(functions)/Text/findChars.mdx | 29 + content/docs/(functions)/Text/findNumbers.mdx | 21 + .../(functions)/Text/findSpecialChars.mdx | 29 + .../docs/(functions)/Text/indexOf.mdx | 4 +- .../(functions)/Text/isChannelMention.mdx | 31 + .../docs/(functions)/Text/isUserMention.mdx | 31 + .../(functions)/Text/isandhas/isBoosting.mdx | 23 + .../docs/(functions)/Text/isandhas/isBot.mdx | 23 + .../(functions)/Text/isandhas/isConnected.mdx | 21 + .../(functions)/Text/isandhas/isDeafened.mdx | 23 + .../(functions)/Text/isandhas/isEmoji.mdx | 23 + .../(functions)/Text/isandhas/isHoisted.mdx | 23 + .../(functions)/Text/isandhas/isManaged.mdx | 23 + .../Text/isandhas/isMentionable.mdx | 23 + .../(functions)/Text/isandhas/isMentioned.mdx | 23 + .../(functions)/Text/isandhas/isMuted.mdx | 23 + .../(functions)/Text/isandhas/isNumber.mdx | 20 + .../(functions)/Text/isandhas/isStreaming.mdx | 21 + .../(functions)/Text/isandhas/isTicket.mdx | 23 + .../(functions)/Text/isandhas/isValidHex.mdx | 23 + .../Text/isandhas/isValidInvite.mdx | 23 + .../(functions)/Text/isandhas/isValidLink.mdx | 23 + .../Text/isandhas/isValidObject.mdx | 23 + .../docs/(functions)/Text/isandhas/meta.json | 6 + .../docs/(functions)/Text/mentionType.mdx | 4 +- content/docs/(functions)/Text/mentioned.mdx | 21 + .../(functions)/Text/mentionedChannels.mdx | 20 + .../docs/(functions)/Text/mentionedRoles.mdx | 20 + content/docs/(functions)/Text/meta.json | 16 + .../(functions)/Text/noMentionMessage.mdx | 21 + content/docs/(functions)/Text/numToWord.mdx | 22 + .../docs/(functions)/Text/numberSeparator.mdx | 21 + content/docs/(functions)/Text/only/meta.json | 6 + .../(functions)/Text/only/onlyBotPerms.mdx | 31 + .../Text/only/onlyForCategories.mdx | 26 + .../(functions)/Text/only/onlyForChannels.mdx | 4 +- .../docs/(functions)/Text/only/onlyForIDs.mdx | 25 + .../(functions)/Text/only/onlyForRoles.mdx | 25 + content/docs/(functions)/Text/only/onlyIf.mdx | 26 + .../Text/only/onlyIfMessageContains.mdx | 21 + .../docs/(functions)/Text/only/onlyNSFW.mdx | 25 + .../docs/(functions)/Text/only/onlyPerms.mdx | 31 + content/docs/(functions)/Text/padLeft.mdx | 21 + content/docs/(functions)/Text/padRight.mdx | 21 + .../docs/(functions)/Text/repeatMessage.mdx | 23 + content/docs/(functions)/Text/replaceText.mdx | 23 + .../docs/(functions)/Text/stringEndsWith.mdx | 31 + .../(functions)/Text/stringStartsWith.mdx | 31 + content/docs/(functions)/Text/textLength.mdx | 31 + content/docs/(functions)/Text/textShuffle.mdx | 22 + content/docs/(functions)/Text/textSlice.mdx | 21 + .../Text/textSplit/advancedTextSplit.mdx | 28 + .../Text/textSplit/concatTextSplit.mdx | 26 + .../Text/textSplit/editTextSplitElement.mdx | 25 + .../Text/textSplit/findTextSplitIndex.mdx | 26 + .../Text/textSplit/getTextSplitLength.mdx | 30 + .../Text/textSplit/joinSplitText.mdx | 29 + .../docs/(functions)/Text/textSplit/meta.json | 6 + .../Text/textSplit/removeSplitTextElement.mdx | 10 +- .../Text/textSplit/removeTextSplitElement.mdx | 18 + .../Text/textSplit/spliceTextJoin.mdx | 21 + .../(functions)/Text/textSplit/splitText.mdx | 30 + .../(functions)/Text/textSplit/textSplit.mdx | 21 + content/docs/(functions)/Text/textTrim.mdx | 21 + .../(functions)/Text/toLocaleUpperCase.mdx | 24 + content/docs/(functions)/Text/toLowercase.mdx | 23 + content/docs/(functions)/Text/toUppercase.mdx | 23 + content/docs/(functions)/Text/uri.mdx | 31 + content/docs/(functions)/Text/void.mdx | 21 + .../(functions)/Threads/addUsersToThread.mdx | 4 +- .../(functions)/Threads/archiveThread.mdx | 4 +- .../docs/(functions)/Threads/closePost.mdx | 4 +- .../docs/(functions)/Threads/createPost.mdx | 4 +- .../docs/(functions)/Threads/createThread.mdx | 25 +- .../docs/(functions)/Threads/deletePost.mdx | 4 +- .../docs/(functions)/Threads/deletePosts.mdx | 4 +- .../(functions)/Threads/deleteThreads.mdx | 14 + .../docs/(functions)/Threads/editPost.mdx | 4 +- .../docs/(functions)/Threads/editThread.mdx | 24 +- .../docs/(functions)/Threads/getThreads.mdx | 28 + .../docs/(functions)/Threads/joinThreads.mdx | 14 + .../docs/(functions)/Threads/leaveThreads.mdx | 14 + .../docs/(functions)/Threads/lockPost.mdx | 4 +- .../docs/(functions)/Threads/lockThread.mdx | 4 +- content/docs/(functions)/Threads/meta.json | 6 + .../docs/(functions)/Threads/pinPost.mdx | 4 +- .../Threads/removeUsersFromThread.mdx | 4 +- content/docs/(functions)/Threads/thread.mdx | 45 + content/docs/(functions)/Timeout/meta.json | 6 + .../(functions)/Timeout/timeoutAction.mdx | 4 +- .../docs/(functions)/Timeout/timeoutBy.mdx | 4 +- .../(functions)/Timeout/timeoutReason.mdx | 4 +- .../(functions)/Timeout/userGetTimeout.mdx | 4 +- .../(functions)/Timeout/userRemoveTimeout.mdx | 4 +- .../(functions)/Timeout/userSetTimeout.mdx | 4 +- .../docs/(functions)/Useful/callFunction.mdx | 60 + .../docs/(functions)/Useful/commandCode.mdx | 4 +- .../docs/(functions)/Useful/deleteTrigger.mdx | 4 +- .../docs/(functions)/Useful/editTrigger.mdx | 4 +- .../docs/(functions)/Useful/endForEach.mdx | 4 +- .../docs/(functions)/Useful/endFunction.mdx | 4 +- .../docs/(functions)/Useful/endTimeout.mdx | 4 +- content/docs/(functions)/Useful/error.mdx | 36 + content/docs/(functions)/Useful/forEach.mdx | 69 + content/docs/(functions)/Useful/function.mdx | 71 + .../docs/(functions)/Useful/getToken.mdx | 4 +- .../docs/(functions)/Useful/getTrigger.mdx | 4 +- .../docs/(functions)/Useful/ignoreErrors.mdx | 4 +- .../(functions)/Useful/includeLibrary.mdx | 4 +- .../docs/(functions)/Useful/jsonRequest.mdx | 10 +- content/docs/(functions)/Useful/meta.json | 6 + .../(functions)/Useful/redirectErrors.mdx | 40 + .../docs/(functions)/Useful/return.mdx | 4 +- content/docs/(functions)/Useful/seq.mdx | 29 + .../docs/(functions)/Useful/setTimeout.mdx | 43 + content/docs/(functions)/Useful/spread.mdx | 23 + content/docs/(functions)/Useful/stop.mdx | 52 + .../(functions)/Useful/suppressErrors.mdx | 41 + .../docs/(functions)/Useful/triggerExists.mdx | 31 + content/docs/(functions)/Useful/wait.mdx | 39 + .../Variables/deleteChannelVar.mdx | 21 + .../Variables/deleteMessageVar.mdx | 21 + .../(functions)/Variables/deleteServerVar.mdx | 21 + .../(functions)/Variables/deleteUserVar.mdx | 23 + content/docs/(functions)/Variables/get.mdx | 33 + .../(functions)/Variables/getChannelVar.mdx | 24 + .../(functions)/Variables/getMessageVar.mdx | 24 + .../(functions)/Variables/getServerVar.mdx | 24 + .../docs/(functions)/Variables/getUserVar.mdx | 37 + .../Variables/increaseChannelVar.mdx | 29 + .../Variables/increaseServerVar.mdx | 29 + .../(functions)/Variables/increaseUserVar.mdx | 29 + .../docs/(functions)/Variables/initVar.mdx | 4 +- .../docs/(functions)/Variables/let.mdx | 21 +- content/docs/(functions)/Variables/meta.json | 6 + .../(functions)/Variables/resetUserVar.mdx | 21 + .../(functions)/Variables/setChannelVar.mdx | 29 + .../(functions)/Variables/setMessageVar.mdx | 21 + .../(functions)/Variables/setServerVar.mdx | 21 + .../docs/(functions)/Variables/setUserVar.mdx | 23 + .../(functions)/Variables/userLeaderboard.mdx | 49 + .../(functions)/Variables/userVarRank.mdx | 21 + .../(functions)/Variables/viewChannelVars.mdx | 31 + .../(functions)/Variables/viewServerVars.mdx | 31 + .../(functions)/Variables/viewUserVars.mdx | 21 + content/docs/(functions)/meta.json | 34 + .../docs/Changelogs/1.v1.mdx | 12 +- content/docs/Changelogs/meta.json | 6 + .../docs/Changelogs/v1.4.4.mdx | 443 +- .../docs/CodeReferences/ref.channel_types.mdx | 22 +- .../docs/CodeReferences/ref.embed.colors.mdx | 67 + .../docs/CodeReferences/ref.expression.mdx | 4 +- .../CodeReferences/ref.imgbuild.position.mdx | 4 +- .../docs/CodeReferences/ref.imgbuild.size.mdx | 4 +- .../ref.message_curl_format.mdx | 80 +- .../docs/CodeReferences/ref.message_types.mdx | 4 +- .../CodeReferences/ref.permissions_list.mdx | 4 +- .../docs/CodeReferences/ref.poll_data.mdx | 7 +- .../docs/CodeReferences/ref.time_format.mdx | 4 +- .../docs/CodeReferences/ref.v2_components.mdx | 11 +- .../docs/CodeReferences/specialCharacters.mdx | 4 +- .../docs/Contribution_Info/Templating.mdx | 10 +- .../Contribution_Info/function_template.mdx | 4 +- .../docs/Contribution_Info/main.mdx | 8 +- content/docs/Contribution_Info/meta.json | 6 + .../docs/Guide/1.create.mdx | 9 +- .../2.faq.md => content/docs/Guide/2.faq.mdx | 41 +- .../docs/Guide/3.policy.mdx | 3 +- .../docs/Guide/4.template.mdx | 39 +- .../docs/Guide/5.comment.mdx | 61 +- .../docs/Guide/6.variables.mdx | 27 +- .../docs/Guide/7.array.mdx | 25 +- content/docs/Guide/meta.json | 13 + .../docs/Guide/syntax.mdx | 55 +- content/docs/Legal/meta.json | 8 + .../docs/Legal/policy.mdx | 4 +- .../tos.md => content/docs/Legal/tos.mdx | 4 +- .../docs/Other/CustomBot.mdx | 4 +- .../curl.md => content/docs/Other/curl.mdx | 4 +- .../docs/Other/embedBuilder.mdx | 18 +- content/docs/Other/meta.json | 9 + .../docs/Other/ratelimits.mdx | 10 +- .../docs/Other/syntax.mdx | 55 +- .../docs/Other/troubleshooting.mdx | 8 +- .../docs/Other/useful.mdx | 36 +- .../docs/Other/welcomer.mdx | 16 +- content/docs/Templates/eco_bal.mdx | 19 + content/docs/Templates/eco_rob.mdx | 19 + content/docs/Templates/mod_ban.mdx | 26 + content/docs/Templates/mod_joinGate.mdx | 19 + content/docs/Templates/mod_mute.mdx | 25 + content/docs/Templates/mod_warn.mdx | 25 + content/docs/Trigger/1.triggers.mdx | 72 + .../docs/Trigger/app_cmd_message.mdx | 4 +- .../docs/Trigger/app_cmd_user.mdx | 4 +- .../docs/Trigger/button.mdx | 18 +- .../docs/Trigger/channel.mdx | 12 +- .../docs/Trigger/joinorleave.mdx | 34 +- .../docs/Trigger/library.mdx | 4 +- .../menu.md => content/docs/Trigger/menu.mdx | 4 +- content/docs/Trigger/meta.json | 6 + .../docs/Trigger/modal.mdx | 13 +- .../poll.md => content/docs/Trigger/poll.mdx | 5 +- .../docs/Trigger/reaction.mdx | 4 +- .../docs/Trigger/roleaddremove.mdx | 4 +- .../docs/Trigger/scheduled_event.mdx | 5 +- .../docs/Trigger/serverboost.mdx | 4 +- .../docs/Trigger/slash.mdx | 20 +- .../time.md => content/docs/Trigger/time.mdx | 12 +- .../docs/Trigger/timeout.mdx | 4 +- .../docs/Trigger/upvote.mdx | 10 +- .../docs/Trigger/voicecondecon.mdx | 18 +- .../word.md => content/docs/Trigger/word.mdx | 217 +- .../docs/Tutorials/1.ping.mdx | 9 +- .../docs/Tutorials/2.staff-app.mdx | 17 +- .../docs/Tutorials/3.report.mdx | 31 +- .../docs/Tutorials/4.collect.mdx | 50 +- .../docs/Tutorials/5.confession.mdx | 9 +- .../docs/Tutorials/5.poll.mdx | 23 +- content/docs/Tutorials/meta.json | 6 + guide/README.md => content/docs/index.mdx | 10 +- content/docs/meta.json | 14 + content/docs/notUsed/perms-privacy.mdx | 9 + {guide/.vuepress => data}/cooldowns.json | 0 docker-compose.yml | 2 +- guide/.vuepress/client.js | 43 - guide/.vuepress/components/Arg.vue | 134 - guide/.vuepress/config.js | 123 - guide/.vuepress/parseTags.js | 46 - guide/.vuepress/replacements.js | 15 - .../replacements/cooldownAddition.js | 68 - .../replacements/functionLinkReference.js | 39 - .../replacements/imageReplacement.js | 20 - guide/.vuepress/sidebar.js | 158 - guide/.vuepress/styles/index.scss | 65 - guide/.vuepress/styles/prism-coldark-dark.css | 447 -- guide/Bot/botCount.md | 30 - guide/Bot/botTier.md | 16 - guide/Bot/clientID.md | 25 - guide/Bot/getBotInvite.md | 36 - guide/Bot/ping.md | 24 - guide/Bot/ram.md | 25 - guide/Bot/serverCount.md | 21 - guide/Bot/uptime.md | 24 - guide/Channel/channelCount.md | 28 - guide/Channel/channelName.md | 36 - guide/Channel/channelType.md | 27 - guide/Channel/channelUsed.md | 34 - guide/Channel/clear.md | 55 - guide/Channel/findChannel.md | 49 - guide/CodeReferences/ref.embed.colors.md | 70 - guide/Cooldown/clearCoolDown.md | 43 - guide/Date/dateStamp.md | 28 - guide/Date/day.md | 29 - guide/Date/hour.md | 28 - guide/Date/minute.md | 30 - guide/Date/parseDate.md | 33 - guide/Date/parseTime.md | 71 - guide/Date/second.md | 27 - guide/Date/year.md | 32 - guide/Image/imageCrop.md | 19 - guide/Image/imageFill.md | 57 - guide/Image/imageLoadEmoji.md | 46 - guide/Image/imageStrokeWidth.md | 34 - guide/Image/imageTextFill.md | 36 - guide/Interaction/interactionEdit.md | 32 - guide/Member/authorAvatar.md | 44 - guide/Member/authorID.md | 29 - guide/Member/ban.md | 51 - guide/Member/boostingSince.md | 43 - guide/Member/changeNickname.md | 39 - guide/Member/discriminator.md | 34 - guide/Member/displayName.md | 30 - guide/Member/findMember.md | 51 - guide/Member/getUserBadges.md | 34 - guide/Member/globalName.md | 30 - guide/Member/hasAnyPerm.md | 41 - guide/Member/hasAnyRole.md | 41 - guide/Member/hasPerms.md | 35 - guide/Member/hasRoles.md | 35 - guide/Member/isBanned.md | 30 - guide/Member/isUserDMEnabled.md | 30 - guide/Member/kick.md | 51 - guide/Member/memberSearch.md | 64 - guide/Member/membersWithStatus.md | 50 - guide/Member/mention.md | 32 - guide/Member/nickname.md | 30 - guide/Member/status.md | 36 - guide/Member/unban.md | 32 - guide/Member/userAvatar.md | 46 - guide/Member/userBanner.md | 57 - guide/Member/userConnectedVC.md | 43 - guide/Member/userExists.md | 37 - guide/Member/userID.md | 36 - guide/Member/userPerms.md | 38 - guide/Member/userRoleColor.md | 37 - guide/Member/userTag.md | 34 - guide/Member/username.md | 37 - guide/Member/usersBanned.md | 35 - guide/Message/messageAttachment.md | 33 - guide/Message/messageExists.md | 31 - guide/Message/messageType.md | 28 - guide/Message/messageWebhookID.md | 26 - guide/Message/noEscapingMessage.md | 35 - guide/Message/noMentionMessage.md | 30 - guide/Message/sendDM.md | 42 - guide/Message/sendMessage.md | 46 - guide/Message/webhookExists.md | 25 - guide/Random/randomMention.md | 31 - guide/Random/randomRoleID.md | 30 - guide/Random/randomString.md | 29 - guide/Random/randomUserID.md | 28 - guide/Request/httpRequestHeader.md | 32 - guide/Request/httpRequestStatus.md | 31 - guide/Role/colorRole.md | 17 - guide/Role/findRole.md | 49 - guide/Role/guildRoles.md | 40 - guide/Role/hasRole.md | 29 - guide/Role/highestRole.md | 40 - guide/Role/roleCount.md | 32 - guide/Role/roleID.md | 35 - guide/Role/roleName.md | 28 - guide/Role/rolePerms.md | 33 - guide/Server/allMembersCount.md | 17 - guide/Server/getServerInvite.md | 19 - guide/Server/membersCount.md | 22 - guide/Server/ownerID.md | 17 - guide/Server/serverBoostCount.md | 18 - guide/Server/serverBoostLevel.md | 19 - guide/Server/serverContentFilter.md | 18 - guide/Server/serverDescription.md | 33 - guide/Server/serverEmojis.md | 18 - guide/Server/serverFeatures.md | 17 - guide/Server/serverIcon.md | 19 - guide/Server/serverName.md | 22 - guide/Server/serverRegion.md | 19 - guide/Server/serverSplash.md | 9 - guide/Server/serverVerificationLevel.md | 16 - guide/Server/setGuildIcon.md | 12 - guide/Server/setGuildName.md | 12 - guide/Server/systemChannelID.md | 16 - guide/Stickers/messageStickers.md | 20 - guide/Stickers/sticker.md | 20 - guide/Templates/eco_bal.md | 17 - guide/Templates/eco_rob.md | 17 - guide/Templates/mod_ban.md | 22 - guide/Templates/mod_joinGate.md | 17 - guide/Templates/mod_mute.md | 21 - guide/Templates/mod_warn.md | 21 - guide/Text/Array/arrayClear.md | 18 - guide/Text/Array/arrayConcat.md | 22 - guide/Text/Array/arrayCount.md | 19 - guide/Text/Array/arrayCreate.md | 21 - guide/Text/Array/arrayElementCount.md | 20 - guide/Text/Array/arrayGet.md | 18 - guide/Text/Array/arrayInclude.md | 19 - guide/Text/Array/arrayJoin.md | 19 - guide/Text/Array/arrayLength.md | 19 - guide/Text/Array/arrayPop.md | 19 - guide/Text/Array/arrayPush.md | 19 - guide/Text/Array/arrayRemove.md | 19 - guide/Text/Array/arrayReverse.md | 19 - guide/Text/Array/arraySearch.md | 19 - guide/Text/Array/arraySet.md | 19 - guide/Text/Array/arrayShift.md | 19 - guide/Text/Array/arrayShuffle.md | 19 - guide/Text/Array/arraySlice.md | 19 - guide/Text/Array/arraySort.md | 45 - guide/Text/Array/arrayUnique.md | 19 - guide/Text/Array/arrayUnshift.md | 19 - guide/Text/Components/removeButton.md | 20 - guide/Text/Components/removeButtons.md | 10 - guide/Text/Condition/checkCondition.md | 32 - guide/Text/Condition/conditional.md | 22 - guide/Text/Condition/if.md | 130 - guide/Text/Embed/addField.md | 59 - guide/Text/Embed/addTimestamp.md | 41 - guide/Text/Embed/author.md | 49 - guide/Text/Embed/color.md | 50 - guide/Text/Embed/description.md | 41 - guide/Text/Embed/footer.md | 28 - guide/Text/Embed/image.md | 28 - guide/Text/Embed/thumbnail.md | 28 - guide/Text/Embed/title.md | 42 - guide/Text/Math/abbreviate.md | 21 - guide/Text/Math/abs.md | 19 - guide/Text/Math/ceil.md | 29 - guide/Text/Math/divide.md | 16 - guide/Text/Math/floor.md | 29 - guide/Text/Math/math.md | 49 - guide/Text/Math/mathMax.md | 19 - guide/Text/Math/mathMin.md | 19 - guide/Text/Math/modulo.md | 16 - guide/Text/Math/multi.md | 16 - guide/Text/Math/ordinal.md | 17 - guide/Text/Math/round.md | 16 - guide/Text/Math/roundTenth.md | 16 - guide/Text/Math/sub.md | 16 - guide/Text/Math/sum.md | 16 - guide/Text/Math/truncate.md | 16 - guide/Text/Object/ObjectGet.md | 16 - guide/Text/Object/ObjectIncrease.md | 33 - guide/Text/Object/ObjectKeyExists.md | 38 - guide/Text/Object/ObjectKeys.md | 29 - guide/Text/Object/ObjectMerge.md | 29 - guide/Text/Object/ObjectRemove.md | 24 - guide/Text/Object/ObjectRenameKey.md | 29 - guide/Text/Object/ObjectValues.md | 29 - guide/Text/Object/createObject.md | 23 - guide/Text/Object/getObject.md | 25 - guide/Text/Regex/regexCheck.md | 29 - guide/Text/Regex/regexMatch.md | 46 - guide/Text/Regex/regexReplace.md | 19 - guide/Text/Regex/replaceTextWithRegex.md | 19 - guide/Text/channelNSFW.md | 16 - guide/Text/charCount.md | 19 - guide/Text/checkContains.md | 29 - guide/Text/customEmoji.md | 29 - guide/Text/disableMentions.md | 16 - guide/Text/filterMessage.md | 19 - guide/Text/findChars.md | 25 - guide/Text/findNumbers.md | 19 - guide/Text/findSpecialChars.md | 25 - guide/Text/isChannelMention.md | 29 - guide/Text/isUserMention.md | 29 - guide/Text/isandhas/isBoosting.md | 19 - guide/Text/isandhas/isBot.md | 19 - guide/Text/isandhas/isConnected.md | 19 - guide/Text/isandhas/isDeafened.md | 19 - guide/Text/isandhas/isEmoji.md | 19 - guide/Text/isandhas/isHoisted.md | 19 - guide/Text/isandhas/isManaged.md | 19 - guide/Text/isandhas/isMentionable.md | 19 - guide/Text/isandhas/isMentioned.md | 19 - guide/Text/isandhas/isMuted.md | 19 - guide/Text/isandhas/isNumber.md | 16 - guide/Text/isandhas/isStreaming.md | 19 - guide/Text/isandhas/isTicket.md | 19 - guide/Text/isandhas/isValidHex.md | 19 - guide/Text/isandhas/isValidInvite.md | 19 - guide/Text/isandhas/isValidLink.md | 19 - guide/Text/isandhas/isValidObject.md | 19 - guide/Text/mentioned.md | 19 - guide/Text/mentionedChannels.md | 16 - guide/Text/mentionedRoles.md | 16 - guide/Text/noMentionMessage.md | 17 - guide/Text/numToWord.md | 20 - guide/Text/numberSeparator.md | 19 - guide/Text/only/onlyBotPerms.md | 21 - guide/Text/only/onlyForCategories.md | 17 - guide/Text/only/onlyForIDs.md | 17 - guide/Text/only/onlyForRoles.md | 17 - guide/Text/only/onlyIf.md | 17 - guide/Text/only/onlyIfMessageContains.md | 19 - guide/Text/only/onlyNSFW.md | 17 - guide/Text/only/onlyPerms.md | 21 - guide/Text/padLeft.md | 19 - guide/Text/padRight.md | 19 - guide/Text/repeatMessage.md | 19 - guide/Text/replaceText.md | 19 - guide/Text/stringEndsWith.md | 29 - guide/Text/stringStartsWith.md | 29 - guide/Text/textLength.md | 29 - guide/Text/textShuffle.md | 20 - guide/Text/textSlice.md | 19 - guide/Text/textSplit/advancedTextSplit.md | 21 - guide/Text/textSplit/concatTextSplit.md | 20 - guide/Text/textSplit/editTextSplitElement.md | 19 - guide/Text/textSplit/findTextSplitIndex.md | 20 - guide/Text/textSplit/getTextSplitLength.md | 24 - guide/Text/textSplit/joinSplitText.md | 23 - .../Text/textSplit/removeTextSplitElement.md | 12 - guide/Text/textSplit/spliceTextJoin.md | 16 - guide/Text/textSplit/splitText.md | 24 - guide/Text/textSplit/textSplit.md | 16 - guide/Text/textTrim.md | 19 - guide/Text/toLocaleUpperCase.md | 19 - guide/Text/toLowercase.md | 19 - guide/Text/toUppercase.md | 19 - guide/Text/uri.md | 29 - guide/Text/void.md | 19 - guide/Threads/deleteThreads.md | 10 - guide/Threads/getThreads.md | 22 - guide/Threads/joinThreads.md | 10 - guide/Threads/leaveThreads.md | 10 - guide/Threads/thread.md | 35 - guide/Trigger/1.triggers.md | 69 - guide/Useful/callFunction.md | 54 - guide/Useful/error.md | 29 - guide/Useful/forEach.md | 62 - guide/Useful/function.md | 62 - guide/Useful/redirectErrors.md | 33 - guide/Useful/seq.md | 23 - guide/Useful/setTimeout.md | 36 - guide/Useful/spread.md | 18 - guide/Useful/stop.md | 44 - guide/Useful/suppressErrors.md | 32 - guide/Useful/triggerExists.md | 29 - guide/Useful/wait.md | 32 - guide/Variables/deleteChannelVar.md | 16 - guide/Variables/deleteMessageVar.md | 16 - guide/Variables/deleteServerVar.md | 16 - guide/Variables/deleteUserVar.md | 18 - guide/Variables/get.md | 28 - guide/Variables/getChannelVar.md | 19 - guide/Variables/getMessageVar.md | 19 - guide/Variables/getServerVar.md | 19 - guide/Variables/getUserVar.md | 32 - guide/Variables/increaseChannelVar.md | 27 - guide/Variables/increaseServerVar.md | 27 - guide/Variables/increaseUserVar.md | 27 - guide/Variables/resetUserVar.md | 16 - guide/Variables/setChannelVar.md | 24 - guide/Variables/setMessageVar.md | 16 - guide/Variables/setServerVar.md | 16 - guide/Variables/setUserVar.md | 18 - guide/Variables/userLeaderboard.md | 44 - guide/Variables/userVarRank.md | 19 - guide/Variables/viewChannelVars.md | 29 - guide/Variables/viewServerVars.md | 29 - guide/Variables/viewUserVars.md | 19 - guide/function-map.json | 1129 ++-- guide/notUsed/perms&privacy.md | 7 - lib/cn.ts | 1 + lib/layout.shared.tsx | 29 + lib/remark/cooldowns.ts | 114 + lib/remark/function-links.ts | 91 + lib/remark/images.ts | 50 + lib/shared.ts | 15 + lib/source.ts | 41 + next.config.mjs | 13 + nginx.conf | 27 +- package-lock.json | 5664 ----------------- package.json | 51 +- pnpm-lock.yaml | 4418 +++++++++++++ pnpm-workspace.yaml | 3 + postcss.config.mjs | 7 + .../public => public}/bot-profile.png | Bin .../.vuepress/public => public}/favicon.ico | Bin .../images/guide/creating-cc/0.png | Bin .../images/guide/creating-cc/1.png | Bin .../images/guide/creating-cc/2.png | Bin .../get-started/get-started-join-event.png | Bin .../get-started/get-started-slash-cmd.png | Bin .../guide/get-started/get-started-word.png | Bin .../images/guide/templates/0.png | Bin .../images/guide/templates/1.png | Bin .../images/guide/templates/2.png | Bin .../images/other}/embedBuilder/1.png | Bin .../images/other}/embedBuilder/2.png | Bin .../images/other}/embedBuilder/3.png | Bin .../images/other}/embedBuilder/4.png | Bin .../images/other}/embedBuilder/5.png | Bin .../images/other}/embedBuilder/6.png | Bin .../images/other}/embedBuilder/embedInfo.png | Bin .../images/other}/welcomer/1.png | Bin .../images/other}/welcomer/2.png | Bin .../images/other}/welcomer/3.png | Bin .../images/other}/welcomer/4.png | Bin .../images/other}/welcomer/5.png | Bin .../images/other}/welcomer/6.png | Bin .../images/triggers/boost/0.png | Bin .../images/triggers/join-leave/0.png | Bin scripts/build-docs-pages.mjs | 77 + source.config.ts | 32 + tsconfig.json | 34 + 1031 files changed, 18703 insertions(+), 17252 deletions(-) delete mode 100644 .npmrc create mode 100644 app/(docs)/[[...slug]]/page.tsx create mode 100644 app/(docs)/layout.tsx create mode 100644 app/api/search/route.ts create mode 100644 app/global.css create mode 100644 app/layout.tsx create mode 100644 app/llms-full.txt/route.ts create mode 100644 app/llms.mdx/[[...slug]]/route.ts create mode 100644 app/llms.txt/route.ts create mode 100644 components/arg.tsx create mode 100644 components/badge.tsx create mode 100644 components/discord.tsx create mode 100644 components/mdx.tsx create mode 100644 components/provider.tsx create mode 100644 components/search.tsx create mode 100644 content/docs/(functions)/Bot/botCount.mdx rename guide/Bot/botOwnerID.md => content/docs/(functions)/Bot/botOwnerID.mdx (97%) rename guide/Bot/botPing.md => content/docs/(functions)/Bot/botPing.mdx (95%) create mode 100644 content/docs/(functions)/Bot/botTier.mdx rename guide/Bot/botTyping.md => content/docs/(functions)/Bot/botTyping.mdx (95%) rename guide/Bot/botVerified.md => content/docs/(functions)/Bot/botVerified.mdx (50%) rename guide/Bot/botVersion.md => content/docs/(functions)/Bot/botVersion.mdx (92%) rename guide/Bot/cacheMember.md => content/docs/(functions)/Bot/cacheMember.mdx (79%) create mode 100644 content/docs/(functions)/Bot/clientID.mdx rename guide/Bot/cpu.md => content/docs/(functions)/Bot/cpu.mdx (92%) rename guide/Bot/executionTime.md => content/docs/(functions)/Bot/executionTime.mdx (95%) rename guide/Bot/getBotActivity.md => content/docs/(functions)/Bot/getBotActivity.mdx (55%) create mode 100644 content/docs/(functions)/Bot/getBotInvite.mdx rename guide/Bot/maxRam.md => content/docs/(functions)/Bot/maxRam.mdx (94%) create mode 100644 content/docs/(functions)/Bot/meta.json create mode 100644 content/docs/(functions)/Bot/ping.mdx create mode 100644 content/docs/(functions)/Bot/ram.mdx create mode 100644 content/docs/(functions)/Bot/serverCount.mdx rename guide/Bot/setBotActivity.md => content/docs/(functions)/Bot/setBotActivity.mdx (84%) create mode 100644 content/docs/(functions)/Bot/uptime.mdx rename guide/Channel/blackListChannelIDs.md => content/docs/(functions)/Channel/blackListChannelIDs.mdx (98%) rename guide/Channel/cacheChannelMessages.md => content/docs/(functions)/Channel/cacheChannelMessages.mdx (96%) rename guide/Channel/categoryChannels.md => content/docs/(functions)/Channel/categoryChannels.mdx (96%) rename guide/Channel/channel.md => content/docs/(functions)/Channel/channel.mdx (75%) rename guide/Channel/channelCategoryID.md => content/docs/(functions)/Channel/channelCategoryID.mdx (55%) create mode 100644 content/docs/(functions)/Channel/channelCount.mdx rename guide/Channel/channelExists.md => content/docs/(functions)/Channel/channelExists.mdx (54%) rename guide/Channel/channelID.md => content/docs/(functions)/Channel/channelID.mdx (71%) create mode 100644 content/docs/(functions)/Channel/channelName.mdx rename guide/Channel/channelPermissionsFor.md => content/docs/(functions)/Channel/channelPermissionsFor.mdx (53%) rename guide/Channel/channelTopic.md => content/docs/(functions)/Channel/channelTopic.mdx (93%) create mode 100644 content/docs/(functions)/Channel/channelType.mdx create mode 100644 content/docs/(functions)/Channel/channelUsed.mdx create mode 100644 content/docs/(functions)/Channel/clear.mdx rename guide/Channel/cloneChannel.md => content/docs/(functions)/Channel/cloneChannel.mdx (97%) rename guide/Channel/closeTicket.md => content/docs/(functions)/Channel/closeTicket.mdx (82%) rename guide/Channel/createChannel.md => content/docs/(functions)/Channel/createChannel.mdx (80%) rename guide/Channel/createForum.md => content/docs/(functions)/Channel/createForum.mdx (99%) rename guide/Channel/deleteChannels.md => content/docs/(functions)/Channel/deleteChannels.mdx (61%) rename guide/Channel/editChannel.md => content/docs/(functions)/Channel/editChannel.mdx (77%) rename guide/Channel/editForum.md => content/docs/(functions)/Channel/editForum.mdx (99%) rename guide/Channel/eventChannelID.md => content/docs/(functions)/Channel/eventChannelID.mdx (52%) rename guide/Channel/eventChannelParent.md => content/docs/(functions)/Channel/eventChannelParent.mdx (96%) create mode 100644 content/docs/(functions)/Channel/findChannel.mdx rename guide/Channel/findServerChannel.md => content/docs/(functions)/Channel/findServerChannel.mdx (69%) rename guide/Channel/getChannelMessages.md => content/docs/(functions)/Channel/getChannelMessages.mdx (75%) rename guide/Channel/getChannelSlowmode.md => content/docs/(functions)/Channel/getChannelSlowmode.mdx (96%) rename guide/Channel/latestMessage.md => content/docs/(functions)/Channel/latestMessage.mdx (56%) rename guide/Channel/mentionChannel.md => content/docs/(functions)/Channel/mentionChannel.mdx (85%) create mode 100644 content/docs/(functions)/Channel/meta.json rename guide/Channel/modifyChannelPerms.md => content/docs/(functions)/Channel/modifyChannelPerms.mdx (72%) rename guide/Channel/newTicket.md => content/docs/(functions)/Channel/newTicket.mdx (79%) rename guide/Channel/removeContains.md => content/docs/(functions)/Channel/removeContains.mdx (98%) rename guide/Channel/serverChannels.md => content/docs/(functions)/Channel/serverChannels.mdx (72%) rename guide/Channel/setChannelTopic.md => content/docs/(functions)/Channel/setChannelTopic.mdx (96%) rename guide/Channel/slowmode.md => content/docs/(functions)/Channel/slowmode.mdx (97%) rename guide/Channel/transcriptChannel.md => content/docs/(functions)/Channel/transcriptChannel.mdx (98%) rename guide/Channel/useChannel.md => content/docs/(functions)/Channel/useChannel.mdx (55%) rename guide/Channel/vcAfter.md => content/docs/(functions)/Channel/vcAfter.mdx (93%) rename guide/Channel/vcBefore.md => content/docs/(functions)/Channel/vcBefore.mdx (98%) rename guide/Channel/voiceChannelID.md => content/docs/(functions)/Channel/voiceChannelID.mdx (81%) rename guide/Cooldown/channelCooldown.md => content/docs/(functions)/Cooldown/channelCooldown.mdx (58%) create mode 100644 content/docs/(functions)/Cooldown/clearCoolDown.mdx rename guide/Cooldown/cooldown.md => content/docs/(functions)/Cooldown/cooldown.mdx (61%) rename guide/Cooldown/getCooldownTime.md => content/docs/(functions)/Cooldown/getCooldownTime.mdx (55%) create mode 100644 content/docs/(functions)/Cooldown/meta.json rename guide/Cooldown/serverCooldown.md => content/docs/(functions)/Cooldown/serverCooldown.mdx (58%) rename guide/Date/creationDate.md => content/docs/(functions)/Date/creationDate.mdx (52%) create mode 100644 content/docs/(functions)/Date/dateStamp.mdx rename guide/Date/dateToTime.md => content/docs/(functions)/Date/dateToTime.mdx (77%) create mode 100644 content/docs/(functions)/Date/day.mdx rename guide/Date/formatDate.md => content/docs/(functions)/Date/formatDate.mdx (65%) create mode 100644 content/docs/(functions)/Date/hour.mdx rename guide/Date/humanizeMS.md => content/docs/(functions)/Date/humanizeMS.mdx (83%) rename guide/Date/memberJoinedCode.md => content/docs/(functions)/Date/memberJoinedCode.mdx (51%) rename guide/Date/memberJoinedDate.md => content/docs/(functions)/Date/memberJoinedDate.mdx (82%) create mode 100644 content/docs/(functions)/Date/meta.json create mode 100644 content/docs/(functions)/Date/minute.mdx rename guide/Date/month.md => content/docs/(functions)/Date/month.mdx (79%) create mode 100644 content/docs/(functions)/Date/parseDate.mdx create mode 100644 content/docs/(functions)/Date/parseTime.mdx create mode 100644 content/docs/(functions)/Date/second.mdx rename guide/Date/timeStamp.md => content/docs/(functions)/Date/timeStamp.mdx (56%) rename guide/Date/timeToDate.md => content/docs/(functions)/Date/timeToDate.mdx (51%) rename guide/Date/timezone.md => content/docs/(functions)/Date/timezone.mdx (69%) rename guide/Date/upvoteTime.md => content/docs/(functions)/Date/upvoteTime.mdx (87%) create mode 100644 content/docs/(functions)/Date/year.mdx rename guide/Events/eventCreate.md => content/docs/(functions)/Events/eventCreate.mdx (98%) rename guide/Events/eventDelete.md => content/docs/(functions)/Events/eventDelete.mdx (97%) rename guide/Events/eventEdit.md => content/docs/(functions)/Events/eventEdit.mdx (98%) rename guide/Events/eventEnd.md => content/docs/(functions)/Events/eventEnd.mdx (96%) rename guide/Events/eventExists.md => content/docs/(functions)/Events/eventExists.mdx (60%) rename guide/Events/eventStart.md => content/docs/(functions)/Events/eventStart.mdx (96%) rename guide/Events/getEventInfo.md => content/docs/(functions)/Events/getEventInfo.mdx (92%) rename guide/Events/getEventUsers.md => content/docs/(functions)/Events/getEventUsers.mdx (66%) rename guide/Events/guildEvents.md => content/docs/(functions)/Events/guildEvents.mdx (70%) create mode 100644 content/docs/(functions)/Events/meta.json rename guide/Image/imageBorderRad.md => content/docs/(functions)/Image/imageBorderRad.mdx (74%) rename guide/Image/imageCreate.md => content/docs/(functions)/Image/imageCreate.mdx (54%) create mode 100644 content/docs/(functions)/Image/imageCrop.mdx rename guide/Image/imageDraw.md => content/docs/(functions)/Image/imageDraw.mdx (59%) rename guide/Image/imageDrawBack.md => content/docs/(functions)/Image/imageDrawBack.mdx (63%) create mode 100644 content/docs/(functions)/Image/imageFill.mdx rename guide/Image/imageHeight.md => content/docs/(functions)/Image/imageHeight.mdx (95%) rename guide/Image/imageLineHeight.md => content/docs/(functions)/Image/imageLineHeight.mdx (69%) create mode 100644 content/docs/(functions)/Image/imageLoadEmoji.mdx rename guide/Image/imageLoadFromURL.md => content/docs/(functions)/Image/imageLoadFromURL.mdx (73%) rename guide/Image/imageOutput.md => content/docs/(functions)/Image/imageOutput.mdx (98%) rename guide/Image/imagePositionBase.md => content/docs/(functions)/Image/imagePositionBase.mdx (57%) rename guide/Image/imageSetOpacity.md => content/docs/(functions)/Image/imageSetOpacity.mdx (61%) rename guide/Image/imageStroke.md => content/docs/(functions)/Image/imageStroke.mdx (65%) create mode 100644 content/docs/(functions)/Image/imageStrokeWidth.mdx rename guide/Image/imageTextAlign.md => content/docs/(functions)/Image/imageTextAlign.mdx (96%) rename guide/Image/imageTextBaseline.md => content/docs/(functions)/Image/imageTextBaseline.mdx (94%) rename guide/Image/imageTextColor.md => content/docs/(functions)/Image/imageTextColor.mdx (96%) create mode 100644 content/docs/(functions)/Image/imageTextFill.mdx rename guide/Image/imageTextFillColor.md => content/docs/(functions)/Image/imageTextFillColor.mdx (96%) rename guide/Image/imageTextSize.md => content/docs/(functions)/Image/imageTextSize.mdx (96%) rename guide/Image/imageTextStroke.md => content/docs/(functions)/Image/imageTextStroke.mdx (65%) rename guide/Image/imageTextStrokeColor.md => content/docs/(functions)/Image/imageTextStrokeColor.mdx (96%) rename guide/Image/imageTextWeight.md => content/docs/(functions)/Image/imageTextWeight.mdx (96%) rename guide/Image/imageUseFont.md => content/docs/(functions)/Image/imageUseFont.mdx (52%) rename guide/Image/imageWidth.md => content/docs/(functions)/Image/imageWidth.mdx (97%) create mode 100644 content/docs/(functions)/Image/meta.json rename guide/Interaction/commandName.md => content/docs/(functions)/Interaction/commandName.mdx (83%) rename guide/Interaction/getOption.md => content/docs/(functions)/Interaction/getOption.mdx (97%) rename guide/Interaction/interactionDelete.md => content/docs/(functions)/Interaction/interactionDelete.mdx (68%) create mode 100644 content/docs/(functions)/Interaction/interactionEdit.mdx rename guide/Interaction/interactionId.md => content/docs/(functions)/Interaction/interactionId.mdx (59%) rename guide/Interaction/interactionReply.md => content/docs/(functions)/Interaction/interactionReply.mdx (64%) create mode 100644 content/docs/(functions)/Interaction/meta.json rename guide/Interaction/modal.md => content/docs/(functions)/Interaction/modal.mdx (84%) rename guide/Interaction/modalAnswer.md => content/docs/(functions)/Interaction/modalAnswer.mdx (82%) rename guide/Interaction/modalID.md => content/docs/(functions)/Interaction/modalID.mdx (84%) create mode 100644 content/docs/(functions)/Member/authorAvatar.mdx create mode 100644 content/docs/(functions)/Member/authorID.mdx create mode 100644 content/docs/(functions)/Member/ban.mdx rename guide/Member/blackListIDs.md => content/docs/(functions)/Member/blackListIDs.mdx (51%) create mode 100644 content/docs/(functions)/Member/boostingSince.mdx create mode 100644 content/docs/(functions)/Member/changeNickname.mdx create mode 100644 content/docs/(functions)/Member/discriminator.mdx create mode 100644 content/docs/(functions)/Member/displayName.mdx rename guide/Member/eventNewNickname.md => content/docs/(functions)/Member/eventNewNickname.mdx (66%) rename guide/Member/eventOldNickname.md => content/docs/(functions)/Member/eventOldNickname.mdx (66%) create mode 100644 content/docs/(functions)/Member/findMember.mdx create mode 100644 content/docs/(functions)/Member/getUserBadges.mdx create mode 100644 content/docs/(functions)/Member/globalName.mdx create mode 100644 content/docs/(functions)/Member/hasAnyPerm.mdx create mode 100644 content/docs/(functions)/Member/hasAnyRole.mdx create mode 100644 content/docs/(functions)/Member/hasPerms.mdx create mode 100644 content/docs/(functions)/Member/hasRoles.mdx create mode 100644 content/docs/(functions)/Member/isBanned.mdx create mode 100644 content/docs/(functions)/Member/isUserDMEnabled.mdx create mode 100644 content/docs/(functions)/Member/kick.mdx create mode 100644 content/docs/(functions)/Member/memberSearch.mdx create mode 100644 content/docs/(functions)/Member/membersWithStatus.mdx create mode 100644 content/docs/(functions)/Member/mention.mdx create mode 100644 content/docs/(functions)/Member/meta.json rename guide/Member/moveUser.md => content/docs/(functions)/Member/moveUser.mdx (52%) rename guide/Member/muteUser.md => content/docs/(functions)/Member/muteUser.mdx (50%) create mode 100644 content/docs/(functions)/Member/nickname.mdx create mode 100644 content/docs/(functions)/Member/status.mdx create mode 100644 content/docs/(functions)/Member/unban.mdx rename guide/Member/upvoteReferralUserID.md => content/docs/(functions)/Member/upvoteReferralUserID.mdx (80%) rename guide/Member/user.md => content/docs/(functions)/Member/user.mdx (64%) create mode 100644 content/docs/(functions)/Member/userAvatar.mdx create mode 100644 content/docs/(functions)/Member/userBanner.mdx create mode 100644 content/docs/(functions)/Member/userConnectedVC.mdx create mode 100644 content/docs/(functions)/Member/userExists.mdx create mode 100644 content/docs/(functions)/Member/userID.mdx create mode 100644 content/docs/(functions)/Member/userPerms.mdx rename guide/Member/userReacted.md => content/docs/(functions)/Member/userReacted.mdx (51%) create mode 100644 content/docs/(functions)/Member/userRoleColor.mdx rename guide/Member/userRoles.md => content/docs/(functions)/Member/userRoles.mdx (54%) create mode 100644 content/docs/(functions)/Member/userTag.mdx create mode 100644 content/docs/(functions)/Member/username.mdx create mode 100644 content/docs/(functions)/Member/usersBanned.mdx rename guide/Member/usersInChannel.md => content/docs/(functions)/Member/usersInChannel.mdx (53%) rename guide/Member/usersTyping.md => content/docs/(functions)/Member/usersTyping.mdx (52%) rename guide/Member/usersWithRole.md => content/docs/(functions)/Member/usersWithRole.mdx (52%) rename guide/Message/DM.md => content/docs/(functions)/Message/DM.mdx (66%) rename guide/Message/addCmdReactions.md => content/docs/(functions)/Message/addCmdReactions.mdx (69%) rename guide/Message/addMessageReactions.md => content/docs/(functions)/Message/addMessageReactions.mdx (69%) rename guide/Message/addReactions.md => content/docs/(functions)/Message/addReactions.mdx (62%) rename guide/Message/argsCheck.md => content/docs/(functions)/Message/argsCheck.mdx (94%) rename guide/Message/argsCount.md => content/docs/(functions)/Message/argsCount.mdx (87%) rename guide/Message/awaitMessage.md => content/docs/(functions)/Message/awaitMessage.mdx (70%) rename guide/Message/channelSendMessage.md => content/docs/(functions)/Message/channelSendMessage.mdx (68%) rename guide/Message/clearReaction.md => content/docs/(functions)/Message/clearReaction.mdx (70%) rename guide/Message/clearReactions.md => content/docs/(functions)/Message/clearReactions.mdx (75%) rename guide/Message/createWebhook.md => content/docs/(functions)/Message/createWebhook.mdx (56%) rename guide/Message/deleteCommand.md => content/docs/(functions)/Message/deleteCommand.mdx (50%) rename guide/Message/deleteIn.md => content/docs/(functions)/Message/deleteIn.mdx (56%) rename guide/Message/deleteMessage.md => content/docs/(functions)/Message/deleteMessage.mdx (59%) rename guide/Message/deleteWebhook.md => content/docs/(functions)/Message/deleteWebhook.mdx (52%) rename guide/Message/deleteWebhookMessage.md => content/docs/(functions)/Message/deleteWebhookMessage.mdx (97%) rename guide/Message/disableChannelMentions.md => content/docs/(functions)/Message/disableChannelMentions.mdx (95%) rename guide/Message/disableEveryoneMentions.md => content/docs/(functions)/Message/disableEveryoneMentions.mdx (91%) rename guide/Message/disableRoleMentions.md => content/docs/(functions)/Message/disableRoleMentions.mdx (95%) rename guide/Message/editEmbed.md => content/docs/(functions)/Message/editEmbed.mdx (99%) rename guide/Message/editIn.md => content/docs/(functions)/Message/editIn.mdx (97%) rename guide/Message/editMessage.md => content/docs/(functions)/Message/editMessage.mdx (60%) rename guide/Message/editWebhookMessage.md => content/docs/(functions)/Message/editWebhookMessage.mdx (97%) rename guide/Message/emoji.md => content/docs/(functions)/Message/emoji.mdx (98%) rename guide/Message/emojiID.md => content/docs/(functions)/Message/emojiID.mdx (93%) rename guide/Message/emojiName.md => content/docs/(functions)/Message/emojiName.mdx (91%) rename guide/Message/emojiToString.md => content/docs/(functions)/Message/emojiToString.mdx (95%) rename guide/Message/emojisFromMessage.md => content/docs/(functions)/Message/emojisFromMessage.mdx (97%) rename guide/Message/enableEveryoneMentions.md => content/docs/(functions)/Message/enableEveryoneMentions.mdx (94%) rename guide/Message/forwardMessage.md => content/docs/(functions)/Message/forwardMessage.mdx (90%) rename guide/Message/getCommandOption.md => content/docs/(functions)/Message/getCommandOption.mdx (71%) rename guide/Message/getEmbed.md => content/docs/(functions)/Message/getEmbed.mdx (84%) rename guide/Message/getMessage.md => content/docs/(functions)/Message/getMessage.mdx (98%) rename guide/Message/getMessageReactions.md => content/docs/(functions)/Message/getMessageReactions.mdx (98%) rename guide/Message/getReactionCount.md => content/docs/(functions)/Message/getReactionCount.mdx (76%) rename guide/Message/getReactions.md => content/docs/(functions)/Message/getReactions.mdx (78%) rename guide/Message/hasEmbeds.md => content/docs/(functions)/Message/hasEmbeds.mdx (96%) rename guide/Message/hyperlink.md => content/docs/(functions)/Message/hyperlink.mdx (97%) rename guide/Message/message.md => content/docs/(functions)/Message/message.mdx (89%) create mode 100644 content/docs/(functions)/Message/messageAttachment.mdx create mode 100644 content/docs/(functions)/Message/messageExists.mdx rename guide/Message/messageFlags.md => content/docs/(functions)/Message/messageFlags.mdx (51%) rename guide/Message/messageID.md => content/docs/(functions)/Message/messageID.mdx (65%) rename guide/Message/messagePublish.md => content/docs/(functions)/Message/messagePublish.mdx (87%) rename guide/Message/messageSlice.md => content/docs/(functions)/Message/messageSlice.mdx (87%) create mode 100644 content/docs/(functions)/Message/messageType.mdx create mode 100644 content/docs/(functions)/Message/messageWebhookID.mdx create mode 100644 content/docs/(functions)/Message/meta.json rename guide/Message/modifyWebhook.md => content/docs/(functions)/Message/modifyWebhook.mdx (91%) rename guide/Message/msg.md => content/docs/(functions)/Message/msg.mdx (92%) create mode 100644 content/docs/(functions)/Message/noEscapingMessage.mdx create mode 100644 content/docs/(functions)/Message/noMentionMessage.mdx rename guide/Message/pinMessage.md => content/docs/(functions)/Message/pinMessage.mdx (98%) rename guide/Message/poll.md => content/docs/(functions)/Message/poll.mdx (61%) rename guide/Message/referenceChannelID.md => content/docs/(functions)/Message/referenceChannelID.mdx (92%) rename guide/Message/referenceMessageID.md => content/docs/(functions)/Message/referenceMessageID.mdx (91%) rename guide/Message/reply.md => content/docs/(functions)/Message/reply.mdx (98%) rename guide/Message/sendCrosspostingMessage.md => content/docs/(functions)/Message/sendCrosspostingMessage.mdx (97%) create mode 100644 content/docs/(functions)/Message/sendDM.mdx create mode 100644 content/docs/(functions)/Message/sendMessage.mdx rename guide/Message/sendWebhook.md => content/docs/(functions)/Message/sendWebhook.mdx (73%) rename guide/Message/sentMessageID.md => content/docs/(functions)/Message/sentMessageID.mdx (97%) rename guide/Message/unpinMessage.md => content/docs/(functions)/Message/unpinMessage.mdx (98%) create mode 100644 content/docs/(functions)/Message/webhookExists.mdx create mode 100644 content/docs/(functions)/Random/meta.json rename guide/Random/random.md => content/docs/(functions)/Random/random.mdx (66%) rename guide/Random/randomChannelID.md => content/docs/(functions)/Random/randomChannelID.mdx (54%) create mode 100644 content/docs/(functions)/Random/randomMention.mdx create mode 100644 content/docs/(functions)/Random/randomRoleID.mdx create mode 100644 content/docs/(functions)/Random/randomString.mdx rename guide/Random/randomText.md => content/docs/(functions)/Random/randomText.mdx (50%) rename guide/Random/randomTextBiased.md => content/docs/(functions)/Random/randomTextBiased.mdx (59%) create mode 100644 content/docs/(functions)/Random/randomUserID.mdx rename guide/Random/resetRandom.md => content/docs/(functions)/Random/resetRandom.mdx (93%) rename guide/Request/httpRequest.md => content/docs/(functions)/Request/httpRequest.mdx (72%) create mode 100644 content/docs/(functions)/Request/httpRequestHeader.mdx create mode 100644 content/docs/(functions)/Request/httpRequestStatus.mdx create mode 100644 content/docs/(functions)/Request/meta.json rename guide/Role/blackListRoleIDs.md => content/docs/(functions)/Role/blackListRoleIDs.mdx (64%) create mode 100644 content/docs/(functions)/Role/colorRole.mdx rename guide/Role/createRole.md => content/docs/(functions)/Role/createRole.mdx (69%) rename guide/Role/deleteRoles.md => content/docs/(functions)/Role/deleteRoles.mdx (62%) create mode 100644 content/docs/(functions)/Role/findRole.mdx rename guide/Role/getRoleColor.md => content/docs/(functions)/Role/getRoleColor.mdx (95%) rename guide/Role/giveRoles.md => content/docs/(functions)/Role/giveRoles.mdx (53%) create mode 100644 content/docs/(functions)/Role/guildRoles.mdx create mode 100644 content/docs/(functions)/Role/hasRole.mdx create mode 100644 content/docs/(functions)/Role/highestRole.mdx rename guide/Role/highestServerRole.md => content/docs/(functions)/Role/highestServerRole.mdx (54%) rename guide/Role/lowestRole.md => content/docs/(functions)/Role/lowestRole.mdx (77%) rename guide/Role/lowestServerRole.md => content/docs/(functions)/Role/lowestServerRole.mdx (52%) rename guide/Role/mentionRole.md => content/docs/(functions)/Role/mentionRole.mdx (85%) create mode 100644 content/docs/(functions)/Role/meta.json rename guide/Role/modifyRole.md => content/docs/(functions)/Role/modifyRole.mdx (80%) rename guide/Role/modifyRolePerms.md => content/docs/(functions)/Role/modifyRolePerms.mdx (56%) rename guide/Role/modifyUserRoles.md => content/docs/(functions)/Role/modifyUserRoles.mdx (97%) rename guide/Role/role.md => content/docs/(functions)/Role/role.mdx (78%) create mode 100644 content/docs/(functions)/Role/roleCount.mdx rename guide/Role/roleExists.md => content/docs/(functions)/Role/roleExists.mdx (66%) create mode 100644 content/docs/(functions)/Role/roleID.mdx rename guide/Role/roleIcon.md => content/docs/(functions)/Role/roleIcon.mdx (98%) rename guide/Role/roleMembersCount.md => content/docs/(functions)/Role/roleMembersCount.mdx (92%) create mode 100644 content/docs/(functions)/Role/roleName.mdx create mode 100644 content/docs/(functions)/Role/rolePerms.mdx rename guide/Role/rolePosition.md => content/docs/(functions)/Role/rolePosition.mdx (67%) rename guide/Role/setRoles.md => content/docs/(functions)/Role/setRoles.mdx (74%) rename guide/Role/takeRoles.md => content/docs/(functions)/Role/takeRoles.mdx (67%) rename guide/Role/toggleRoles.md => content/docs/(functions)/Role/toggleRoles.mdx (67%) rename guide/Server/addEmoji.md => content/docs/(functions)/Server/addEmoji.mdx (78%) create mode 100644 content/docs/(functions)/Server/allMembersCount.mdx rename guide/Server/createAutomodKeyword.md => content/docs/(functions)/Server/createAutomodKeyword.mdx (96%) rename guide/Server/deleteAutomod.md => content/docs/(functions)/Server/deleteAutomod.mdx (92%) rename guide/Server/deleteEmojis.md => content/docs/(functions)/Server/deleteEmojis.mdx (94%) rename guide/Server/editAutomodKeyword.md => content/docs/(functions)/Server/editAutomodKeyword.mdx (99%) rename guide/Server/emojiCount.md => content/docs/(functions)/Server/emojiCount.mdx (73%) rename guide/Server/emojiExists.md => content/docs/(functions)/Server/emojiExists.mdx (92%) rename guide/Server/getInviteInfo.md => content/docs/(functions)/Server/getInviteInfo.mdx (82%) create mode 100644 content/docs/(functions)/Server/getServerInvite.mdx rename guide/Server/guild.md => content/docs/(functions)/Server/guild.mdx (72%) create mode 100644 content/docs/(functions)/Server/membersCount.mdx create mode 100644 content/docs/(functions)/Server/meta.json create mode 100644 content/docs/(functions)/Server/ownerID.mdx rename guide/Server/resolveEmojiID.md => content/docs/(functions)/Server/resolveEmojiID.mdx (95%) rename guide/Server/securityPause.md => content/docs/(functions)/Server/securityPause.mdx (94%) rename guide/Server/serverBanner.md => content/docs/(functions)/Server/serverBanner.mdx (91%) create mode 100644 content/docs/(functions)/Server/serverBoostCount.mdx create mode 100644 content/docs/(functions)/Server/serverBoostLevel.mdx create mode 100644 content/docs/(functions)/Server/serverContentFilter.mdx create mode 100644 content/docs/(functions)/Server/serverDescription.mdx create mode 100644 content/docs/(functions)/Server/serverEmojis.mdx create mode 100644 content/docs/(functions)/Server/serverFeatures.mdx create mode 100644 content/docs/(functions)/Server/serverIcon.mdx create mode 100644 content/docs/(functions)/Server/serverName.mdx create mode 100644 content/docs/(functions)/Server/serverRegion.mdx create mode 100644 content/docs/(functions)/Server/serverSplash.mdx create mode 100644 content/docs/(functions)/Server/serverVerificationLevel.mdx create mode 100644 content/docs/(functions)/Server/setGuildIcon.mdx create mode 100644 content/docs/(functions)/Server/setGuildName.mdx create mode 100644 content/docs/(functions)/Server/systemChannelID.mdx rename guide/Stickers/createSticker.md => content/docs/(functions)/Stickers/createSticker.mdx (95%) rename guide/Stickers/deleteSticker.md => content/docs/(functions)/Stickers/deleteSticker.mdx (73%) rename guide/Stickers/editSticker.md => content/docs/(functions)/Stickers/editSticker.mdx (87%) create mode 100644 content/docs/(functions)/Stickers/messageStickers.mdx create mode 100644 content/docs/(functions)/Stickers/meta.json rename guide/Stickers/serverStickers.md => content/docs/(functions)/Stickers/serverStickers.mdx (83%) create mode 100644 content/docs/(functions)/Stickers/sticker.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayClear.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayConcat.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayCount.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayCreate.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayElementCount.mdx rename guide/Text/Array/arrayFilter.md => content/docs/(functions)/Text/Array/arrayFilter.mdx (64%) create mode 100644 content/docs/(functions)/Text/Array/arrayGet.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayInclude.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayJoin.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayLength.mdx rename guide/Text/Array/arrayLoop.md => content/docs/(functions)/Text/Array/arrayLoop.mdx (62%) rename guide/Text/Array/arrayMap.md => content/docs/(functions)/Text/Array/arrayMap.mdx (61%) create mode 100644 content/docs/(functions)/Text/Array/arrayPop.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayPush.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayRemove.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayReverse.mdx create mode 100644 content/docs/(functions)/Text/Array/arraySearch.mdx create mode 100644 content/docs/(functions)/Text/Array/arraySet.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayShift.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayShuffle.mdx create mode 100644 content/docs/(functions)/Text/Array/arraySlice.mdx create mode 100644 content/docs/(functions)/Text/Array/arraySort.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayUnique.mdx create mode 100644 content/docs/(functions)/Text/Array/arrayUnshift.mdx create mode 100644 content/docs/(functions)/Text/Array/meta.json rename guide/Text/Components/addButton.md => content/docs/(functions)/Text/Components/addButton.mdx (67%) rename guide/Text/Components/addMenu.md => content/docs/(functions)/Text/Components/addMenu.mdx (96%) rename guide/Text/Components/awaitButton.md => content/docs/(functions)/Text/Components/awaitButton.mdx (75%) rename guide/Text/Components/awaitMenu.md => content/docs/(functions)/Text/Components/awaitMenu.mdx (57%) rename guide/Text/Components/button.md => content/docs/(functions)/Text/Components/button.mdx (88%) rename guide/Text/Components/buttonEmoji.md => content/docs/(functions)/Text/Components/buttonEmoji.mdx (84%) rename guide/Text/Components/buttonID.md => content/docs/(functions)/Text/Components/buttonID.mdx (83%) rename guide/Text/Components/buttonIsDisabled.md => content/docs/(functions)/Text/Components/buttonIsDisabled.mdx (56%) rename guide/Text/Components/buttonLabel.md => content/docs/(functions)/Text/Components/buttonLabel.mdx (83%) rename guide/Text/Components/buttonStyle.md => content/docs/(functions)/Text/Components/buttonStyle.mdx (83%) rename guide/Text/Components/buttonURL.md => content/docs/(functions)/Text/Components/buttonURL.mdx (83%) rename guide/Text/Components/disableButton.md => content/docs/(functions)/Text/Components/disableButton.mdx (76%) rename guide/Text/Components/disableButtons.md => content/docs/(functions)/Text/Components/disableButtons.mdx (84%) rename guide/Text/Components/disableMenu.md => content/docs/(functions)/Text/Components/disableMenu.mdx (86%) rename guide/Text/Components/editButton.md => content/docs/(functions)/Text/Components/editButton.mdx (66%) rename guide/Text/Components/editMenu.md => content/docs/(functions)/Text/Components/editMenu.mdx (90%) rename guide/Text/Components/enableButtons.md => content/docs/(functions)/Text/Components/enableButtons.mdx (84%) rename guide/Text/Components/enableMenu.md => content/docs/(functions)/Text/Components/enableMenu.mdx (86%) rename guide/Text/Components/eventSelected.md => content/docs/(functions)/Text/Components/eventSelected.mdx (92%) rename guide/Text/Components/eventTargetID.md => content/docs/(functions)/Text/Components/eventTargetID.mdx (95%) rename guide/Text/Components/menuId.md => content/docs/(functions)/Text/Components/menuId.mdx (66%) create mode 100644 content/docs/(functions)/Text/Components/meta.json create mode 100644 content/docs/(functions)/Text/Components/removeButton.mdx create mode 100644 content/docs/(functions)/Text/Components/removeButtons.mdx rename guide/Text/Components/removeEmbed.md => content/docs/(functions)/Text/Components/removeEmbed.mdx (91%) rename guide/Text/Components/removeMenu.md => content/docs/(functions)/Text/Components/removeMenu.mdx (86%) rename guide/Text/Components/selectMenu.md => content/docs/(functions)/Text/Components/selectMenu.mdx (84%) create mode 100644 content/docs/(functions)/Text/Condition/checkCondition.mdx create mode 100644 content/docs/(functions)/Text/Condition/conditional.mdx rename guide/Text/Condition/else.md => content/docs/(functions)/Text/Condition/else.mdx (87%) rename guide/Text/Condition/elseif.md => content/docs/(functions)/Text/Condition/elseif.mdx (84%) rename guide/Text/Condition/endIf.md => content/docs/(functions)/Text/Condition/endIf.mdx (79%) rename guide/Text/Condition/endelseif.md => content/docs/(functions)/Text/Condition/endelseif.mdx (75%) create mode 100644 content/docs/(functions)/Text/Condition/if.mdx create mode 100644 content/docs/(functions)/Text/Condition/meta.json create mode 100644 content/docs/(functions)/Text/Embed/addField.mdx create mode 100644 content/docs/(functions)/Text/Embed/addTimestamp.mdx rename guide/Text/Embed/attachment.md => content/docs/(functions)/Text/Embed/attachment.mdx (91%) create mode 100644 content/docs/(functions)/Text/Embed/author.mdx create mode 100644 content/docs/(functions)/Text/Embed/color.mdx create mode 100644 content/docs/(functions)/Text/Embed/description.mdx rename guide/Text/Embed/example.md => content/docs/(functions)/Text/Embed/example.mdx (93%) create mode 100644 content/docs/(functions)/Text/Embed/footer.mdx create mode 100644 content/docs/(functions)/Text/Embed/image.mdx create mode 100644 content/docs/(functions)/Text/Embed/meta.json create mode 100644 content/docs/(functions)/Text/Embed/thumbnail.mdx create mode 100644 content/docs/(functions)/Text/Embed/title.mdx create mode 100644 content/docs/(functions)/Text/Math/abbreviate.mdx create mode 100644 content/docs/(functions)/Text/Math/abs.mdx create mode 100644 content/docs/(functions)/Text/Math/ceil.mdx create mode 100644 content/docs/(functions)/Text/Math/divide.mdx create mode 100644 content/docs/(functions)/Text/Math/floor.mdx create mode 100644 content/docs/(functions)/Text/Math/math.mdx create mode 100644 content/docs/(functions)/Text/Math/mathMax.mdx create mode 100644 content/docs/(functions)/Text/Math/mathMin.mdx create mode 100644 content/docs/(functions)/Text/Math/meta.json create mode 100644 content/docs/(functions)/Text/Math/modulo.mdx create mode 100644 content/docs/(functions)/Text/Math/multi.mdx create mode 100644 content/docs/(functions)/Text/Math/ordinal.mdx create mode 100644 content/docs/(functions)/Text/Math/round.mdx create mode 100644 content/docs/(functions)/Text/Math/roundTenth.mdx create mode 100644 content/docs/(functions)/Text/Math/sub.mdx create mode 100644 content/docs/(functions)/Text/Math/sum.mdx create mode 100644 content/docs/(functions)/Text/Math/truncate.mdx rename guide/Text/Object/ObjectCreate.md => content/docs/(functions)/Text/Object/ObjectCreate.mdx (52%) create mode 100644 content/docs/(functions)/Text/Object/ObjectGet.mdx create mode 100644 content/docs/(functions)/Text/Object/ObjectIncrease.mdx create mode 100644 content/docs/(functions)/Text/Object/ObjectKeyExists.mdx create mode 100644 content/docs/(functions)/Text/Object/ObjectKeys.mdx rename guide/Text/Object/ObjectLoop.md => content/docs/(functions)/Text/Object/ObjectLoop.mdx (58%) create mode 100644 content/docs/(functions)/Text/Object/ObjectMerge.mdx create mode 100644 content/docs/(functions)/Text/Object/ObjectRemove.mdx create mode 100644 content/docs/(functions)/Text/Object/ObjectRenameKey.mdx rename guide/Text/Object/ObjectSet.md => content/docs/(functions)/Text/Object/ObjectSet.mdx (52%) create mode 100644 content/docs/(functions)/Text/Object/ObjectValues.mdx rename guide/Text/Object/addObjectProperty.md => content/docs/(functions)/Text/Object/addObjectProperty.mdx (69%) create mode 100644 content/docs/(functions)/Text/Object/createObject.mdx create mode 100644 content/docs/(functions)/Text/Object/getObject.mdx rename guide/Text/Object/getObjectKeys.md => content/docs/(functions)/Text/Object/getObjectKeys.mdx (75%) rename guide/Text/Object/getObjectProperty.md => content/docs/(functions)/Text/Object/getObjectProperty.mdx (66%) create mode 100644 content/docs/(functions)/Text/Object/meta.json create mode 100644 content/docs/(functions)/Text/Regex/meta.json create mode 100644 content/docs/(functions)/Text/Regex/regexCheck.mdx create mode 100644 content/docs/(functions)/Text/Regex/regexMatch.mdx create mode 100644 content/docs/(functions)/Text/Regex/regexReplace.mdx create mode 100644 content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx rename guide/Text/buffer.md => content/docs/(functions)/Text/buffer.mdx (89%) create mode 100644 content/docs/(functions)/Text/channelNSFW.mdx create mode 100644 content/docs/(functions)/Text/charCount.mdx create mode 100644 content/docs/(functions)/Text/checkContains.mdx create mode 100644 content/docs/(functions)/Text/customEmoji.mdx create mode 100644 content/docs/(functions)/Text/disableMentions.mdx create mode 100644 content/docs/(functions)/Text/filterMessage.mdx rename guide/Text/filterMessageWords.md => content/docs/(functions)/Text/filterMessageWords.mdx (75%) create mode 100644 content/docs/(functions)/Text/findChars.mdx create mode 100644 content/docs/(functions)/Text/findNumbers.mdx create mode 100644 content/docs/(functions)/Text/findSpecialChars.mdx rename guide/Text/indexOf.md => content/docs/(functions)/Text/indexOf.mdx (83%) create mode 100644 content/docs/(functions)/Text/isChannelMention.mdx create mode 100644 content/docs/(functions)/Text/isUserMention.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isBoosting.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isBot.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isConnected.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isDeafened.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isEmoji.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isHoisted.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isManaged.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isMentionable.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isMentioned.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isMuted.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isNumber.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isStreaming.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isTicket.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isValidHex.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isValidInvite.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isValidLink.mdx create mode 100644 content/docs/(functions)/Text/isandhas/isValidObject.mdx create mode 100644 content/docs/(functions)/Text/isandhas/meta.json rename guide/Text/mentionType.md => content/docs/(functions)/Text/mentionType.mdx (82%) create mode 100644 content/docs/(functions)/Text/mentioned.mdx create mode 100644 content/docs/(functions)/Text/mentionedChannels.mdx create mode 100644 content/docs/(functions)/Text/mentionedRoles.mdx create mode 100644 content/docs/(functions)/Text/meta.json create mode 100644 content/docs/(functions)/Text/noMentionMessage.mdx create mode 100644 content/docs/(functions)/Text/numToWord.mdx create mode 100644 content/docs/(functions)/Text/numberSeparator.mdx create mode 100644 content/docs/(functions)/Text/only/meta.json create mode 100644 content/docs/(functions)/Text/only/onlyBotPerms.mdx create mode 100644 content/docs/(functions)/Text/only/onlyForCategories.mdx rename guide/Text/only/onlyForChannels.md => content/docs/(functions)/Text/only/onlyForChannels.mdx (81%) create mode 100644 content/docs/(functions)/Text/only/onlyForIDs.mdx create mode 100644 content/docs/(functions)/Text/only/onlyForRoles.mdx create mode 100644 content/docs/(functions)/Text/only/onlyIf.mdx create mode 100644 content/docs/(functions)/Text/only/onlyIfMessageContains.mdx create mode 100644 content/docs/(functions)/Text/only/onlyNSFW.mdx create mode 100644 content/docs/(functions)/Text/only/onlyPerms.mdx create mode 100644 content/docs/(functions)/Text/padLeft.mdx create mode 100644 content/docs/(functions)/Text/padRight.mdx create mode 100644 content/docs/(functions)/Text/repeatMessage.mdx create mode 100644 content/docs/(functions)/Text/replaceText.mdx create mode 100644 content/docs/(functions)/Text/stringEndsWith.mdx create mode 100644 content/docs/(functions)/Text/stringStartsWith.mdx create mode 100644 content/docs/(functions)/Text/textLength.mdx create mode 100644 content/docs/(functions)/Text/textShuffle.mdx create mode 100644 content/docs/(functions)/Text/textSlice.mdx create mode 100644 content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx create mode 100644 content/docs/(functions)/Text/textSplit/concatTextSplit.mdx create mode 100644 content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx create mode 100644 content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx create mode 100644 content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx create mode 100644 content/docs/(functions)/Text/textSplit/joinSplitText.mdx create mode 100644 content/docs/(functions)/Text/textSplit/meta.json rename guide/Text/textSplit/removeSplitTextElement.md => content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx (72%) create mode 100644 content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx create mode 100644 content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx create mode 100644 content/docs/(functions)/Text/textSplit/splitText.mdx create mode 100644 content/docs/(functions)/Text/textSplit/textSplit.mdx create mode 100644 content/docs/(functions)/Text/textTrim.mdx create mode 100644 content/docs/(functions)/Text/toLocaleUpperCase.mdx create mode 100644 content/docs/(functions)/Text/toLowercase.mdx create mode 100644 content/docs/(functions)/Text/toUppercase.mdx create mode 100644 content/docs/(functions)/Text/uri.mdx create mode 100644 content/docs/(functions)/Text/void.mdx rename guide/Threads/addUsersToThread.md => content/docs/(functions)/Threads/addUsersToThread.mdx (90%) rename guide/Threads/archiveThread.md => content/docs/(functions)/Threads/archiveThread.mdx (89%) rename guide/Threads/closePost.md => content/docs/(functions)/Threads/closePost.mdx (89%) rename guide/Threads/createPost.md => content/docs/(functions)/Threads/createPost.mdx (94%) rename guide/Threads/createThread.md => content/docs/(functions)/Threads/createThread.mdx (57%) rename guide/Threads/deletePost.md => content/docs/(functions)/Threads/deletePost.mdx (80%) rename guide/Threads/deletePosts.md => content/docs/(functions)/Threads/deletePosts.mdx (85%) create mode 100644 content/docs/(functions)/Threads/deleteThreads.mdx rename guide/Threads/editPost.md => content/docs/(functions)/Threads/editPost.mdx (97%) rename guide/Threads/editThread.md => content/docs/(functions)/Threads/editThread.mdx (53%) create mode 100644 content/docs/(functions)/Threads/getThreads.mdx create mode 100644 content/docs/(functions)/Threads/joinThreads.mdx create mode 100644 content/docs/(functions)/Threads/leaveThreads.mdx rename guide/Threads/lockPost.md => content/docs/(functions)/Threads/lockPost.mdx (89%) rename guide/Threads/lockThread.md => content/docs/(functions)/Threads/lockThread.mdx (89%) create mode 100644 content/docs/(functions)/Threads/meta.json rename guide/Threads/pinPost.md => content/docs/(functions)/Threads/pinPost.mdx (89%) rename guide/Threads/removeUsersFromThread.md => content/docs/(functions)/Threads/removeUsersFromThread.mdx (90%) create mode 100644 content/docs/(functions)/Threads/thread.mdx create mode 100644 content/docs/(functions)/Timeout/meta.json rename guide/Timeout/timeoutAction.md => content/docs/(functions)/Timeout/timeoutAction.mdx (83%) rename guide/Timeout/timeoutBy.md => content/docs/(functions)/Timeout/timeoutBy.mdx (84%) rename guide/Timeout/timeoutReason.md => content/docs/(functions)/Timeout/timeoutReason.mdx (79%) rename guide/Timeout/userGetTimeout.md => content/docs/(functions)/Timeout/userGetTimeout.mdx (81%) rename guide/Timeout/userRemoveTimeout.md => content/docs/(functions)/Timeout/userRemoveTimeout.mdx (73%) rename guide/Timeout/userSetTimeout.md => content/docs/(functions)/Timeout/userSetTimeout.mdx (83%) create mode 100644 content/docs/(functions)/Useful/callFunction.mdx rename guide/Useful/commandCode.md => content/docs/(functions)/Useful/commandCode.mdx (95%) rename guide/Useful/deleteTrigger.md => content/docs/(functions)/Useful/deleteTrigger.mdx (84%) rename guide/Useful/editTrigger.md => content/docs/(functions)/Useful/editTrigger.mdx (94%) rename guide/Useful/endForEach.md => content/docs/(functions)/Useful/endForEach.mdx (74%) rename guide/Useful/endFunction.md => content/docs/(functions)/Useful/endFunction.mdx (82%) rename guide/Useful/endTimeout.md => content/docs/(functions)/Useful/endTimeout.mdx (66%) create mode 100644 content/docs/(functions)/Useful/error.mdx create mode 100644 content/docs/(functions)/Useful/forEach.mdx create mode 100644 content/docs/(functions)/Useful/function.mdx rename guide/Useful/getToken.md => content/docs/(functions)/Useful/getToken.mdx (89%) rename guide/Useful/getTrigger.md => content/docs/(functions)/Useful/getTrigger.mdx (90%) rename guide/Useful/ignoreErrors.md => content/docs/(functions)/Useful/ignoreErrors.mdx (91%) rename guide/Useful/includeLibrary.md => content/docs/(functions)/Useful/includeLibrary.mdx (74%) rename guide/Useful/jsonRequest.md => content/docs/(functions)/Useful/jsonRequest.mdx (86%) create mode 100644 content/docs/(functions)/Useful/meta.json create mode 100644 content/docs/(functions)/Useful/redirectErrors.mdx rename guide/Useful/return.md => content/docs/(functions)/Useful/return.mdx (93%) create mode 100644 content/docs/(functions)/Useful/seq.mdx create mode 100644 content/docs/(functions)/Useful/setTimeout.mdx create mode 100644 content/docs/(functions)/Useful/spread.mdx create mode 100644 content/docs/(functions)/Useful/stop.mdx create mode 100644 content/docs/(functions)/Useful/suppressErrors.mdx create mode 100644 content/docs/(functions)/Useful/triggerExists.mdx create mode 100644 content/docs/(functions)/Useful/wait.mdx create mode 100644 content/docs/(functions)/Variables/deleteChannelVar.mdx create mode 100644 content/docs/(functions)/Variables/deleteMessageVar.mdx create mode 100644 content/docs/(functions)/Variables/deleteServerVar.mdx create mode 100644 content/docs/(functions)/Variables/deleteUserVar.mdx create mode 100644 content/docs/(functions)/Variables/get.mdx create mode 100644 content/docs/(functions)/Variables/getChannelVar.mdx create mode 100644 content/docs/(functions)/Variables/getMessageVar.mdx create mode 100644 content/docs/(functions)/Variables/getServerVar.mdx create mode 100644 content/docs/(functions)/Variables/getUserVar.mdx create mode 100644 content/docs/(functions)/Variables/increaseChannelVar.mdx create mode 100644 content/docs/(functions)/Variables/increaseServerVar.mdx create mode 100644 content/docs/(functions)/Variables/increaseUserVar.mdx rename guide/Variables/initVar.md => content/docs/(functions)/Variables/initVar.mdx (96%) rename guide/Variables/let.md => content/docs/(functions)/Variables/let.mdx (66%) create mode 100644 content/docs/(functions)/Variables/meta.json create mode 100644 content/docs/(functions)/Variables/resetUserVar.mdx create mode 100644 content/docs/(functions)/Variables/setChannelVar.mdx create mode 100644 content/docs/(functions)/Variables/setMessageVar.mdx create mode 100644 content/docs/(functions)/Variables/setServerVar.mdx create mode 100644 content/docs/(functions)/Variables/setUserVar.mdx create mode 100644 content/docs/(functions)/Variables/userLeaderboard.mdx create mode 100644 content/docs/(functions)/Variables/userVarRank.mdx create mode 100644 content/docs/(functions)/Variables/viewChannelVars.mdx create mode 100644 content/docs/(functions)/Variables/viewServerVars.mdx create mode 100644 content/docs/(functions)/Variables/viewUserVars.mdx create mode 100644 content/docs/(functions)/meta.json rename guide/Changelogs/1.v1.md => content/docs/Changelogs/1.v1.mdx (90%) create mode 100644 content/docs/Changelogs/meta.json rename guide/Changelogs/v1.4.4.md => content/docs/Changelogs/v1.4.4.mdx (75%) rename guide/CodeReferences/ref.channel_types.md => content/docs/CodeReferences/ref.channel_types.mdx (73%) create mode 100644 content/docs/CodeReferences/ref.embed.colors.mdx rename guide/CodeReferences/ref.expression.md => content/docs/CodeReferences/ref.expression.mdx (99%) rename guide/CodeReferences/ref.imgbuild.position.md => content/docs/CodeReferences/ref.imgbuild.position.mdx (98%) rename guide/CodeReferences/ref.imgbuild.size.md => content/docs/CodeReferences/ref.imgbuild.size.mdx (98%) rename guide/CodeReferences/ref.message_curl_format.md => content/docs/CodeReferences/ref.message_curl_format.mdx (62%) rename guide/CodeReferences/ref.message_types.md => content/docs/CodeReferences/ref.message_types.mdx (98%) rename guide/CodeReferences/ref.permissions_list.md => content/docs/CodeReferences/ref.permissions_list.mdx (98%) rename guide/CodeReferences/ref.poll_data.md => content/docs/CodeReferences/ref.poll_data.mdx (85%) rename guide/CodeReferences/ref.time_format.md => content/docs/CodeReferences/ref.time_format.mdx (97%) rename guide/CodeReferences/ref.v2_components.md => content/docs/CodeReferences/ref.v2_components.mdx (91%) rename guide/CodeReferences/specialCharacters.md => content/docs/CodeReferences/specialCharacters.mdx (74%) rename guide/Contribution_Info/Templating.md => content/docs/Contribution_Info/Templating.mdx (98%) rename guide/Contribution_Info/function_template.md => content/docs/Contribution_Info/function_template.mdx (95%) rename guide/Contribution_Info/main.md => content/docs/Contribution_Info/main.mdx (87%) create mode 100644 content/docs/Contribution_Info/meta.json rename guide/Guide/1.create.md => content/docs/Guide/1.create.mdx (91%) rename guide/Guide/2.faq.md => content/docs/Guide/2.faq.mdx (63%) rename guide/Guide/3.policy.md => content/docs/Guide/3.policy.mdx (99%) rename guide/Guide/4.template.md => content/docs/Guide/4.template.mdx (66%) rename guide/Guide/5.comment.md => content/docs/Guide/5.comment.mdx (51%) rename guide/Guide/6.variables.md => content/docs/Guide/6.variables.mdx (84%) rename guide/Guide/7.array.md => content/docs/Guide/7.array.mdx (54%) create mode 100644 content/docs/Guide/meta.json rename guide/Guide/syntax.md => content/docs/Guide/syntax.mdx (68%) create mode 100644 content/docs/Legal/meta.json rename guide/Legal/policy.md => content/docs/Legal/policy.mdx (99%) rename guide/Legal/tos.md => content/docs/Legal/tos.mdx (99%) rename guide/Other/CustomBot.md => content/docs/Other/CustomBot.mdx (98%) rename guide/Other/curl.md => content/docs/Other/curl.mdx (98%) rename guide/Other/embedBuilder.md => content/docs/Other/embedBuilder.mdx (79%) create mode 100644 content/docs/Other/meta.json rename guide/Other/ratelimits.md => content/docs/Other/ratelimits.mdx (94%) rename guide/Other/syntax.md => content/docs/Other/syntax.mdx (68%) rename guide/Other/troubleshooting.md => content/docs/Other/troubleshooting.mdx (92%) rename guide/Other/useful.md => content/docs/Other/useful.mdx (58%) rename guide/Other/welcomer.md => content/docs/Other/welcomer.mdx (88%) create mode 100644 content/docs/Templates/eco_bal.mdx create mode 100644 content/docs/Templates/eco_rob.mdx create mode 100644 content/docs/Templates/mod_ban.mdx create mode 100644 content/docs/Templates/mod_joinGate.mdx create mode 100644 content/docs/Templates/mod_mute.mdx create mode 100644 content/docs/Templates/mod_warn.mdx create mode 100644 content/docs/Trigger/1.triggers.mdx rename guide/Trigger/app_cmd_message.md => content/docs/Trigger/app_cmd_message.mdx (97%) rename guide/Trigger/app_cmd_user.md => content/docs/Trigger/app_cmd_user.mdx (97%) rename guide/Trigger/button.md => content/docs/Trigger/button.mdx (89%) rename guide/Trigger/channel.md => content/docs/Trigger/channel.mdx (87%) rename guide/Trigger/joinorleave.md => content/docs/Trigger/joinorleave.mdx (50%) rename guide/Trigger/library.md => content/docs/Trigger/library.mdx (98%) rename guide/Trigger/menu.md => content/docs/Trigger/menu.mdx (96%) create mode 100644 content/docs/Trigger/meta.json rename guide/Trigger/modal.md => content/docs/Trigger/modal.mdx (86%) rename guide/Trigger/poll.md => content/docs/Trigger/poll.mdx (92%) rename guide/Trigger/reaction.md => content/docs/Trigger/reaction.mdx (98%) rename guide/Trigger/roleaddremove.md => content/docs/Trigger/roleaddremove.mdx (98%) rename guide/Trigger/scheduled_event.md => content/docs/Trigger/scheduled_event.mdx (96%) rename guide/Trigger/serverboost.md => content/docs/Trigger/serverboost.mdx (88%) rename guide/Trigger/slash.md => content/docs/Trigger/slash.mdx (87%) rename guide/Trigger/time.md => content/docs/Trigger/time.mdx (87%) rename guide/Trigger/timeout.md => content/docs/Trigger/timeout.mdx (88%) rename guide/Trigger/upvote.md => content/docs/Trigger/upvote.mdx (92%) rename guide/Trigger/voicecondecon.md => content/docs/Trigger/voicecondecon.mdx (81%) rename guide/Trigger/word.md => content/docs/Trigger/word.mdx (61%) rename guide/Tutorials/1.ping.md => content/docs/Tutorials/1.ping.mdx (86%) rename guide/Tutorials/2.staff-app.md => content/docs/Tutorials/2.staff-app.mdx (92%) rename guide/Tutorials/3.report.md => content/docs/Tutorials/3.report.mdx (61%) rename guide/Tutorials/4.collect.md => content/docs/Tutorials/4.collect.mdx (70%) rename guide/Tutorials/5.confession.md => content/docs/Tutorials/5.confession.mdx (90%) rename guide/Tutorials/5.poll.md => content/docs/Tutorials/5.poll.mdx (83%) create mode 100644 content/docs/Tutorials/meta.json rename guide/README.md => content/docs/index.mdx (90%) create mode 100644 content/docs/meta.json create mode 100644 content/docs/notUsed/perms-privacy.mdx rename {guide/.vuepress => data}/cooldowns.json (100%) delete mode 100644 guide/.vuepress/client.js delete mode 100644 guide/.vuepress/components/Arg.vue delete mode 100644 guide/.vuepress/config.js delete mode 100644 guide/.vuepress/parseTags.js delete mode 100644 guide/.vuepress/replacements.js delete mode 100644 guide/.vuepress/replacements/cooldownAddition.js delete mode 100644 guide/.vuepress/replacements/functionLinkReference.js delete mode 100644 guide/.vuepress/replacements/imageReplacement.js delete mode 100644 guide/.vuepress/sidebar.js delete mode 100644 guide/.vuepress/styles/index.scss delete mode 100644 guide/.vuepress/styles/prism-coldark-dark.css delete mode 100644 guide/Bot/botCount.md delete mode 100644 guide/Bot/botTier.md delete mode 100644 guide/Bot/clientID.md delete mode 100644 guide/Bot/getBotInvite.md delete mode 100644 guide/Bot/ping.md delete mode 100644 guide/Bot/ram.md delete mode 100644 guide/Bot/serverCount.md delete mode 100644 guide/Bot/uptime.md delete mode 100644 guide/Channel/channelCount.md delete mode 100644 guide/Channel/channelName.md delete mode 100644 guide/Channel/channelType.md delete mode 100644 guide/Channel/channelUsed.md delete mode 100644 guide/Channel/clear.md delete mode 100644 guide/Channel/findChannel.md delete mode 100644 guide/CodeReferences/ref.embed.colors.md delete mode 100644 guide/Cooldown/clearCoolDown.md delete mode 100644 guide/Date/dateStamp.md delete mode 100644 guide/Date/day.md delete mode 100644 guide/Date/hour.md delete mode 100644 guide/Date/minute.md delete mode 100644 guide/Date/parseDate.md delete mode 100644 guide/Date/parseTime.md delete mode 100644 guide/Date/second.md delete mode 100644 guide/Date/year.md delete mode 100644 guide/Image/imageCrop.md delete mode 100644 guide/Image/imageFill.md delete mode 100644 guide/Image/imageLoadEmoji.md delete mode 100644 guide/Image/imageStrokeWidth.md delete mode 100644 guide/Image/imageTextFill.md delete mode 100644 guide/Interaction/interactionEdit.md delete mode 100644 guide/Member/authorAvatar.md delete mode 100644 guide/Member/authorID.md delete mode 100644 guide/Member/ban.md delete mode 100644 guide/Member/boostingSince.md delete mode 100644 guide/Member/changeNickname.md delete mode 100644 guide/Member/discriminator.md delete mode 100644 guide/Member/displayName.md delete mode 100644 guide/Member/findMember.md delete mode 100644 guide/Member/getUserBadges.md delete mode 100644 guide/Member/globalName.md delete mode 100644 guide/Member/hasAnyPerm.md delete mode 100644 guide/Member/hasAnyRole.md delete mode 100644 guide/Member/hasPerms.md delete mode 100644 guide/Member/hasRoles.md delete mode 100644 guide/Member/isBanned.md delete mode 100644 guide/Member/isUserDMEnabled.md delete mode 100644 guide/Member/kick.md delete mode 100644 guide/Member/memberSearch.md delete mode 100644 guide/Member/membersWithStatus.md delete mode 100644 guide/Member/mention.md delete mode 100644 guide/Member/nickname.md delete mode 100644 guide/Member/status.md delete mode 100644 guide/Member/unban.md delete mode 100644 guide/Member/userAvatar.md delete mode 100644 guide/Member/userBanner.md delete mode 100644 guide/Member/userConnectedVC.md delete mode 100644 guide/Member/userExists.md delete mode 100644 guide/Member/userID.md delete mode 100644 guide/Member/userPerms.md delete mode 100644 guide/Member/userRoleColor.md delete mode 100644 guide/Member/userTag.md delete mode 100644 guide/Member/username.md delete mode 100644 guide/Member/usersBanned.md delete mode 100644 guide/Message/messageAttachment.md delete mode 100644 guide/Message/messageExists.md delete mode 100644 guide/Message/messageType.md delete mode 100644 guide/Message/messageWebhookID.md delete mode 100644 guide/Message/noEscapingMessage.md delete mode 100644 guide/Message/noMentionMessage.md delete mode 100644 guide/Message/sendDM.md delete mode 100644 guide/Message/sendMessage.md delete mode 100644 guide/Message/webhookExists.md delete mode 100644 guide/Random/randomMention.md delete mode 100644 guide/Random/randomRoleID.md delete mode 100644 guide/Random/randomString.md delete mode 100644 guide/Random/randomUserID.md delete mode 100644 guide/Request/httpRequestHeader.md delete mode 100644 guide/Request/httpRequestStatus.md delete mode 100644 guide/Role/colorRole.md delete mode 100644 guide/Role/findRole.md delete mode 100644 guide/Role/guildRoles.md delete mode 100644 guide/Role/hasRole.md delete mode 100644 guide/Role/highestRole.md delete mode 100644 guide/Role/roleCount.md delete mode 100644 guide/Role/roleID.md delete mode 100644 guide/Role/roleName.md delete mode 100644 guide/Role/rolePerms.md delete mode 100644 guide/Server/allMembersCount.md delete mode 100644 guide/Server/getServerInvite.md delete mode 100644 guide/Server/membersCount.md delete mode 100644 guide/Server/ownerID.md delete mode 100644 guide/Server/serverBoostCount.md delete mode 100644 guide/Server/serverBoostLevel.md delete mode 100644 guide/Server/serverContentFilter.md delete mode 100644 guide/Server/serverDescription.md delete mode 100644 guide/Server/serverEmojis.md delete mode 100644 guide/Server/serverFeatures.md delete mode 100644 guide/Server/serverIcon.md delete mode 100644 guide/Server/serverName.md delete mode 100644 guide/Server/serverRegion.md delete mode 100644 guide/Server/serverSplash.md delete mode 100644 guide/Server/serverVerificationLevel.md delete mode 100644 guide/Server/setGuildIcon.md delete mode 100644 guide/Server/setGuildName.md delete mode 100644 guide/Server/systemChannelID.md delete mode 100644 guide/Stickers/messageStickers.md delete mode 100644 guide/Stickers/sticker.md delete mode 100644 guide/Templates/eco_bal.md delete mode 100644 guide/Templates/eco_rob.md delete mode 100644 guide/Templates/mod_ban.md delete mode 100644 guide/Templates/mod_joinGate.md delete mode 100644 guide/Templates/mod_mute.md delete mode 100644 guide/Templates/mod_warn.md delete mode 100644 guide/Text/Array/arrayClear.md delete mode 100644 guide/Text/Array/arrayConcat.md delete mode 100644 guide/Text/Array/arrayCount.md delete mode 100644 guide/Text/Array/arrayCreate.md delete mode 100644 guide/Text/Array/arrayElementCount.md delete mode 100644 guide/Text/Array/arrayGet.md delete mode 100644 guide/Text/Array/arrayInclude.md delete mode 100644 guide/Text/Array/arrayJoin.md delete mode 100644 guide/Text/Array/arrayLength.md delete mode 100644 guide/Text/Array/arrayPop.md delete mode 100644 guide/Text/Array/arrayPush.md delete mode 100644 guide/Text/Array/arrayRemove.md delete mode 100644 guide/Text/Array/arrayReverse.md delete mode 100644 guide/Text/Array/arraySearch.md delete mode 100644 guide/Text/Array/arraySet.md delete mode 100644 guide/Text/Array/arrayShift.md delete mode 100644 guide/Text/Array/arrayShuffle.md delete mode 100644 guide/Text/Array/arraySlice.md delete mode 100644 guide/Text/Array/arraySort.md delete mode 100644 guide/Text/Array/arrayUnique.md delete mode 100644 guide/Text/Array/arrayUnshift.md delete mode 100644 guide/Text/Components/removeButton.md delete mode 100644 guide/Text/Components/removeButtons.md delete mode 100644 guide/Text/Condition/checkCondition.md delete mode 100644 guide/Text/Condition/conditional.md delete mode 100644 guide/Text/Condition/if.md delete mode 100644 guide/Text/Embed/addField.md delete mode 100644 guide/Text/Embed/addTimestamp.md delete mode 100644 guide/Text/Embed/author.md delete mode 100644 guide/Text/Embed/color.md delete mode 100644 guide/Text/Embed/description.md delete mode 100644 guide/Text/Embed/footer.md delete mode 100644 guide/Text/Embed/image.md delete mode 100644 guide/Text/Embed/thumbnail.md delete mode 100644 guide/Text/Embed/title.md delete mode 100644 guide/Text/Math/abbreviate.md delete mode 100644 guide/Text/Math/abs.md delete mode 100644 guide/Text/Math/ceil.md delete mode 100644 guide/Text/Math/divide.md delete mode 100644 guide/Text/Math/floor.md delete mode 100644 guide/Text/Math/math.md delete mode 100644 guide/Text/Math/mathMax.md delete mode 100644 guide/Text/Math/mathMin.md delete mode 100644 guide/Text/Math/modulo.md delete mode 100644 guide/Text/Math/multi.md delete mode 100644 guide/Text/Math/ordinal.md delete mode 100644 guide/Text/Math/round.md delete mode 100644 guide/Text/Math/roundTenth.md delete mode 100644 guide/Text/Math/sub.md delete mode 100644 guide/Text/Math/sum.md delete mode 100644 guide/Text/Math/truncate.md delete mode 100644 guide/Text/Object/ObjectGet.md delete mode 100644 guide/Text/Object/ObjectIncrease.md delete mode 100644 guide/Text/Object/ObjectKeyExists.md delete mode 100644 guide/Text/Object/ObjectKeys.md delete mode 100644 guide/Text/Object/ObjectMerge.md delete mode 100644 guide/Text/Object/ObjectRemove.md delete mode 100644 guide/Text/Object/ObjectRenameKey.md delete mode 100644 guide/Text/Object/ObjectValues.md delete mode 100644 guide/Text/Object/createObject.md delete mode 100644 guide/Text/Object/getObject.md delete mode 100644 guide/Text/Regex/regexCheck.md delete mode 100644 guide/Text/Regex/regexMatch.md delete mode 100644 guide/Text/Regex/regexReplace.md delete mode 100644 guide/Text/Regex/replaceTextWithRegex.md delete mode 100644 guide/Text/channelNSFW.md delete mode 100644 guide/Text/charCount.md delete mode 100644 guide/Text/checkContains.md delete mode 100644 guide/Text/customEmoji.md delete mode 100644 guide/Text/disableMentions.md delete mode 100644 guide/Text/filterMessage.md delete mode 100644 guide/Text/findChars.md delete mode 100644 guide/Text/findNumbers.md delete mode 100644 guide/Text/findSpecialChars.md delete mode 100644 guide/Text/isChannelMention.md delete mode 100644 guide/Text/isUserMention.md delete mode 100644 guide/Text/isandhas/isBoosting.md delete mode 100644 guide/Text/isandhas/isBot.md delete mode 100644 guide/Text/isandhas/isConnected.md delete mode 100644 guide/Text/isandhas/isDeafened.md delete mode 100644 guide/Text/isandhas/isEmoji.md delete mode 100644 guide/Text/isandhas/isHoisted.md delete mode 100644 guide/Text/isandhas/isManaged.md delete mode 100644 guide/Text/isandhas/isMentionable.md delete mode 100644 guide/Text/isandhas/isMentioned.md delete mode 100644 guide/Text/isandhas/isMuted.md delete mode 100644 guide/Text/isandhas/isNumber.md delete mode 100644 guide/Text/isandhas/isStreaming.md delete mode 100644 guide/Text/isandhas/isTicket.md delete mode 100644 guide/Text/isandhas/isValidHex.md delete mode 100644 guide/Text/isandhas/isValidInvite.md delete mode 100644 guide/Text/isandhas/isValidLink.md delete mode 100644 guide/Text/isandhas/isValidObject.md delete mode 100644 guide/Text/mentioned.md delete mode 100644 guide/Text/mentionedChannels.md delete mode 100644 guide/Text/mentionedRoles.md delete mode 100644 guide/Text/noMentionMessage.md delete mode 100644 guide/Text/numToWord.md delete mode 100644 guide/Text/numberSeparator.md delete mode 100644 guide/Text/only/onlyBotPerms.md delete mode 100644 guide/Text/only/onlyForCategories.md delete mode 100644 guide/Text/only/onlyForIDs.md delete mode 100644 guide/Text/only/onlyForRoles.md delete mode 100644 guide/Text/only/onlyIf.md delete mode 100644 guide/Text/only/onlyIfMessageContains.md delete mode 100644 guide/Text/only/onlyNSFW.md delete mode 100644 guide/Text/only/onlyPerms.md delete mode 100644 guide/Text/padLeft.md delete mode 100644 guide/Text/padRight.md delete mode 100644 guide/Text/repeatMessage.md delete mode 100644 guide/Text/replaceText.md delete mode 100644 guide/Text/stringEndsWith.md delete mode 100644 guide/Text/stringStartsWith.md delete mode 100644 guide/Text/textLength.md delete mode 100644 guide/Text/textShuffle.md delete mode 100644 guide/Text/textSlice.md delete mode 100644 guide/Text/textSplit/advancedTextSplit.md delete mode 100644 guide/Text/textSplit/concatTextSplit.md delete mode 100644 guide/Text/textSplit/editTextSplitElement.md delete mode 100644 guide/Text/textSplit/findTextSplitIndex.md delete mode 100644 guide/Text/textSplit/getTextSplitLength.md delete mode 100644 guide/Text/textSplit/joinSplitText.md delete mode 100644 guide/Text/textSplit/removeTextSplitElement.md delete mode 100644 guide/Text/textSplit/spliceTextJoin.md delete mode 100644 guide/Text/textSplit/splitText.md delete mode 100644 guide/Text/textSplit/textSplit.md delete mode 100644 guide/Text/textTrim.md delete mode 100644 guide/Text/toLocaleUpperCase.md delete mode 100644 guide/Text/toLowercase.md delete mode 100644 guide/Text/toUppercase.md delete mode 100644 guide/Text/uri.md delete mode 100644 guide/Text/void.md delete mode 100644 guide/Threads/deleteThreads.md delete mode 100644 guide/Threads/getThreads.md delete mode 100644 guide/Threads/joinThreads.md delete mode 100644 guide/Threads/leaveThreads.md delete mode 100644 guide/Threads/thread.md delete mode 100644 guide/Trigger/1.triggers.md delete mode 100644 guide/Useful/callFunction.md delete mode 100644 guide/Useful/error.md delete mode 100644 guide/Useful/forEach.md delete mode 100644 guide/Useful/function.md delete mode 100644 guide/Useful/redirectErrors.md delete mode 100644 guide/Useful/seq.md delete mode 100644 guide/Useful/setTimeout.md delete mode 100644 guide/Useful/spread.md delete mode 100644 guide/Useful/stop.md delete mode 100644 guide/Useful/suppressErrors.md delete mode 100644 guide/Useful/triggerExists.md delete mode 100644 guide/Useful/wait.md delete mode 100644 guide/Variables/deleteChannelVar.md delete mode 100644 guide/Variables/deleteMessageVar.md delete mode 100644 guide/Variables/deleteServerVar.md delete mode 100644 guide/Variables/deleteUserVar.md delete mode 100644 guide/Variables/get.md delete mode 100644 guide/Variables/getChannelVar.md delete mode 100644 guide/Variables/getMessageVar.md delete mode 100644 guide/Variables/getServerVar.md delete mode 100644 guide/Variables/getUserVar.md delete mode 100644 guide/Variables/increaseChannelVar.md delete mode 100644 guide/Variables/increaseServerVar.md delete mode 100644 guide/Variables/increaseUserVar.md delete mode 100644 guide/Variables/resetUserVar.md delete mode 100644 guide/Variables/setChannelVar.md delete mode 100644 guide/Variables/setMessageVar.md delete mode 100644 guide/Variables/setServerVar.md delete mode 100644 guide/Variables/setUserVar.md delete mode 100644 guide/Variables/userLeaderboard.md delete mode 100644 guide/Variables/userVarRank.md delete mode 100644 guide/Variables/viewChannelVars.md delete mode 100644 guide/Variables/viewServerVars.md delete mode 100644 guide/Variables/viewUserVars.md delete mode 100644 guide/notUsed/perms&privacy.md create mode 100644 lib/cn.ts create mode 100644 lib/layout.shared.tsx create mode 100644 lib/remark/cooldowns.ts create mode 100644 lib/remark/function-links.ts create mode 100644 lib/remark/images.ts create mode 100644 lib/shared.ts create mode 100644 lib/source.ts create mode 100644 next.config.mjs delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 postcss.config.mjs rename {guide/.vuepress/public => public}/bot-profile.png (100%) rename {guide/.vuepress/public => public}/favicon.ico (100%) rename {guide/.vuepress/public => public}/images/guide/creating-cc/0.png (100%) rename {guide/.vuepress/public => public}/images/guide/creating-cc/1.png (100%) rename {guide/.vuepress/public => public}/images/guide/creating-cc/2.png (100%) rename {guide/.vuepress/public => public}/images/guide/get-started/get-started-join-event.png (100%) rename {guide/.vuepress/public => public}/images/guide/get-started/get-started-slash-cmd.png (100%) rename {guide/.vuepress/public => public}/images/guide/get-started/get-started-word.png (100%) rename {guide/.vuepress/public => public}/images/guide/templates/0.png (100%) rename {guide/.vuepress/public => public}/images/guide/templates/1.png (100%) rename {guide/.vuepress/public => public}/images/guide/templates/2.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/1.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/2.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/3.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/4.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/5.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/6.png (100%) rename {guide/Other/images => public/images/other}/embedBuilder/embedInfo.png (100%) rename {guide/Other/images => public/images/other}/welcomer/1.png (100%) rename {guide/Other/images => public/images/other}/welcomer/2.png (100%) rename {guide/Other/images => public/images/other}/welcomer/3.png (100%) rename {guide/Other/images => public/images/other}/welcomer/4.png (100%) rename {guide/Other/images => public/images/other}/welcomer/5.png (100%) rename {guide/Other/images => public/images/other}/welcomer/6.png (100%) rename {guide/.vuepress/public => public}/images/triggers/boost/0.png (100%) rename {guide/.vuepress/public => public}/images/triggers/join-leave/0.png (100%) create mode 100644 scripts/build-docs-pages.mjs create mode 100644 source.config.ts create mode 100644 tsconfig.json diff --git a/.dockerignore b/.dockerignore index 8d777f3e..f7e03dd2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,16 @@ **/* !package.json -!package-lock.json -!guide -!nginx.conf \ No newline at end of file +!pnpm-lock.yaml +!pnpm-workspace.yaml +!next.config.mjs +!postcss.config.mjs +!source.config.ts +!tsconfig.json +!app +!components +!lib +!content +!data +!public +!scripts +!nginx.conf diff --git a/.gitignore b/.gitignore index 6893e072..2b0ac7f5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,17 @@ data.json build*.sh ignore/* .DS_Store -guide/.vuepress/public/images/*.* .vscode OnTemplate.md .env -guide/.vuepress/public/docs-pages.json \ No newline at end of file + +# next / fumadocs +.source +/.next/ +/out/ +*.tsbuildinfo +next-env.d.ts +.vercel + +# remote images cached locally by lib/remark/images.ts +public/images/*.* diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 521a9f7c..00000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -legacy-peer-deps=true diff --git a/Dockerfile b/Dockerfile index 30b05357..1b0e5234 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,16 +2,17 @@ FROM node:24-alpine AS builder WORKDIR /app -COPY package*.json ./ -RUN npm ci --legacy-peer-deps +RUN npm i -g pnpm@11 + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +RUN pnpm install --frozen-lockfile COPY . . -# adjust the build command if your project uses a different script -RUN npm run build +RUN pnpm build # Stage 2 — serve with nginx FROM nginx:1.25-alpine -ARG BUILD_DIR=guide/.vuepress/dist +ARG BUILD_DIR=out # Remove default config and add a simple SPA-friendly config COPY nginx.conf /etc/nginx/conf.d/default.conf @@ -20,4 +21,4 @@ COPY nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /app/${BUILD_DIR} /usr/share/nginx/html EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file +CMD ["nginx", "-g", "daemon off;"] diff --git a/DockerfileDev b/DockerfileDev index 702f1aa0..943ec713 100644 --- a/DockerfileDev +++ b/DockerfileDev @@ -1,10 +1,11 @@ -# Stage 1 — build the static assets -FROM node:24-alpine3.21 AS builder +FROM node:24-alpine3.21 WORKDIR /app -COPY package*.json ./ -RUN npm i --legacy-peer-deps +RUN npm i -g pnpm@11 + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +RUN pnpm install --frozen-lockfile COPY . . -CMD ["npm", "run", "dev"] \ No newline at end of file +CMD ["pnpm", "dev"] diff --git a/README.md b/README.md index 006a3f46..81528147 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ For larger changes involving many files, we recommend using your IDE and the dev ### Requirements [Git](https://git-scm.com/install/), -[Node.js](https://nodejs.org/en/download/current) `>=22.18.0` or [Docker Desktop](https://www.docker.com/products/docker-desktop/) +[Node.js](https://nodejs.org/en/download/current) `>=22.18.0` and [pnpm](https://pnpm.io/installation), or [Docker Desktop](https://www.docker.com/products/docker-desktop/) ### Steps @@ -43,13 +43,13 @@ git clone git@github.com:YOUR_USERNAME/ccdoc.git 3\. Install dependencies: ```bash -npm i +pnpm install ``` 4\. Start the dev server and go to [localhost:8080](http://localhost:8080): ```bash -npm run dev +pnpm dev ``` ### Docker Compose @@ -83,3 +83,36 @@ git push ``` To send these changes for review, open your cloned fork on GitHub and click the `Open Pull Request` button. + +## Where Things Live + +The site runs on [Fumadocs](https://fumadocs.dev) (Next.js), exported as a static build. + +| Path | What it is | +| --- | --- | +| `content/docs/` | Every page, as MDX. The URL matches the file path. | +| `content/docs/(functions)/` | Function reference. The `(functions)` folder groups them in the sidebar without appearing in the URL — `Member/kick.mdx` is served at `/Member/kick`. | +| `content/docs/**/meta.json` | Sidebar titles and page ordering for that folder. | +| `components/` | `Badge`, `Arg`, and the Discord message components used in pages. | +| `lib/remark/` | Build-time content rules: cooldown sections, `$function` auto-linking, cached remote images. | +| `data/cooldowns.json` | Drives the generated "Function Cooldown" section on function pages. | + +### Writing a page + +Each page needs a `title` in its frontmatter — it renders as the page heading, so don't repeat it as an `# H1` in the body: + +```mdx +--- +title: "$myFunction" +--- + +What the function does. + +::: is not available — use `` and `` instead: + + +Something worth knowing. + +``` + +Because pages are MDX, a literal `{` or a stray `<` in prose must be escaped as `\{` and `\<`. diff --git a/app/(docs)/[[...slug]]/page.tsx b/app/(docs)/[[...slug]]/page.tsx new file mode 100644 index 00000000..329c7f30 --- /dev/null +++ b/app/(docs)/[[...slug]]/page.tsx @@ -0,0 +1,73 @@ +import { getPageMarkdownUrl, source } from '@/lib/source'; +import { + DocsBody, + DocsDescription, + DocsPage, + DocsTitle, + MarkdownCopyButton, + ViewOptionsPopover, +} from 'fumadocs-ui/layouts/docs/page'; +import { notFound } from 'next/navigation'; +import { getMDXComponents } from '@/components/mdx'; +import type { Metadata } from 'next'; +import { createRelativeLink } from 'fumadocs-ui/mdx'; +import { appName, gitConfig, socialImage } from '@/lib/shared'; + +export default async function Page(props: PageProps<'/[[...slug]]'>) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + const MDX = page.data.body; + const markdownUrl = getPageMarkdownUrl(page).url; + + return ( + + {page.data.title} + {page.data.description} +
+ + +
+ + + +
+ ); +} + +export async function generateStaticParams() { + return source.generateParams(); +} + +export async function generateMetadata(props: PageProps<'/[[...slug]]'>): Promise { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + // Mirrors the old VuePress `dynamic-meta-plugin`: " | Custom Command". + const social = page.data.title ? `${page.data.title} | ${appName}` : `${appName} Documentation`; + + return { + title: page.data.title, + description: page.data.description, + openGraph: { + title: social, + description: page.data.description, + images: socialImage, + }, + twitter: { + title: social, + description: page.data.description, + images: socialImage, + }, + }; +} diff --git a/app/(docs)/layout.tsx b/app/(docs)/layout.tsx new file mode 100644 index 00000000..0c2bf056 --- /dev/null +++ b/app/(docs)/layout.tsx @@ -0,0 +1,11 @@ +import { source } from '@/lib/source'; +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import { baseOptions } from '@/lib/layout.shared'; + +export default function Layout({ children }: LayoutProps<'/'>) { + return ( + + {children} + + ); +} diff --git a/app/api/search/route.ts b/app/api/search/route.ts new file mode 100644 index 00000000..a0365102 --- /dev/null +++ b/app/api/search/route.ts @@ -0,0 +1,53 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { source } from '@/lib/source'; +import { createFromSource } from 'fumadocs-core/search/server'; + +export const revalidate = false; + +/** difficulty labels were never treated as tags */ +const NOT_A_TAG = /Easy|Difficult|Read Below|Medium|Bugged/i; + +/** + * The old VuePress search fed `` values into the index via + * `parseTags.js`, which is how searching "kick" or "reactions" finds a + * function. Badge props are JSX attributes, so they never reach the structured + * content Fumadocs indexes by default — read them back off the source file. + */ +function tagsFor(filePath: string, title: string) { + const raw = fs.readFileSync(path.join(process.cwd(), 'content/docs', filePath), 'utf8'); + + const tags: string[] = []; + for (const [, text] of raw.matchAll(/]*\btext="([^"]*)"/g)) { + if (text.length > 1 && !NOT_A_TAG.test(text)) tags.push(text); + } + // the old plugin also indexed the bare function name + if (title.startsWith('$')) tags.push(title.slice(1)); + + return [...new Set(tags)]; +} + +export const { staticGET: GET } = createFromSource(source, { + // https://docs.orama.com/docs/orama-js/supported-languages + language: 'english', + buildIndex(page) { + const structuredData = page.data.structuredData; + const tags = tagsFor(page.path, page.data.title); + + return { + id: page.url, + title: page.data.title, + description: page.data.description, + url: page.url, + structuredData: tags.length + ? { + ...structuredData, + contents: [ + ...structuredData.contents, + { heading: undefined, content: tags.join(' ') }, + ], + } + : structuredData, + }; + }, +}); diff --git a/app/global.css b/app/global.css new file mode 100644 index 00000000..03f36b6e --- /dev/null +++ b/app/global.css @@ -0,0 +1,24 @@ +@import 'tailwindcss'; +@import 'fumadocs-ui/css/neutral.css'; +@import 'fumadocs-ui/css/preset.css'; + +html { + scrollbar-gutter: stable; +} + +html > body[data-scroll-locked] { + margin-right: 0px !important; + --removed-body-scroll-bar-size: 0px !important; +} + +/* + * Discord message blocks. Skyra renders into a shadow root, so only the host + * element is reachable from here — theme colours are handled by the + * `lightTheme` prop in components/discord.tsx instead. + */ +discord-messages { + display: block; + margin: 1rem 0; + border-radius: 8px; + overflow: hidden; +} diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 00000000..a2ef9a85 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,44 @@ +import { Inter } from 'next/font/google'; +import type { Metadata, Viewport } from 'next'; +import { Provider } from '@/components/provider'; +import { appDescription, appName, siteUrl, socialImage } from '@/lib/shared'; +import './global.css'; + +const inter = Inter({ + subsets: ['latin'], +}); + +export const metadata: Metadata = { + metadataBase: new URL(siteUrl), + title: { + // Matches the old VuePress `dynamic-meta-plugin` output. + template: `%s | ${appName}`, + default: `${appName} Documentation`, + }, + description: appDescription, + icons: { + icon: socialImage, + }, + openGraph: { + description: appDescription, + images: socialImage, + }, + twitter: { + description: appDescription, + images: socialImage, + }, +}; + +export const viewport: Viewport = { + themeColor: '#74b0f7', +}; + +export default function Layout({ children }: LayoutProps<'/'>) { + return ( + + + {children} + + + ); +} diff --git a/app/llms-full.txt/route.ts b/app/llms-full.txt/route.ts new file mode 100644 index 00000000..d494d2cb --- /dev/null +++ b/app/llms-full.txt/route.ts @@ -0,0 +1,10 @@ +import { getLLMText, source } from '@/lib/source'; + +export const revalidate = false; + +export async function GET() { + const scan = source.getPages().map(getLLMText); + const scanned = await Promise.all(scan); + + return new Response(scanned.join('\n\n')); +} diff --git a/app/llms.mdx/[[...slug]]/route.ts b/app/llms.mdx/[[...slug]]/route.ts new file mode 100644 index 00000000..4485752e --- /dev/null +++ b/app/llms.mdx/[[...slug]]/route.ts @@ -0,0 +1,23 @@ +import { getLLMText, getPageMarkdownUrl, source } from '@/lib/source'; +import { notFound } from 'next/navigation'; + +export const revalidate = false; + +export async function GET(_req: Request, { params }: RouteContext<'/llms.mdx/[[...slug]]'>) { + const { slug } = await params; + // remove the appended "content.md" + const page = source.getPage(slug?.slice(0, -1)); + if (!page) notFound(); + + return new Response(await getLLMText(page), { + headers: { + 'Content-Type': 'text/markdown', + }, + }); +} + +export function generateStaticParams() { + return source.getPages().map((page) => ({ + slug: getPageMarkdownUrl(page).segments, + })); +} diff --git a/app/llms.txt/route.ts b/app/llms.txt/route.ts new file mode 100644 index 00000000..fc80cb65 --- /dev/null +++ b/app/llms.txt/route.ts @@ -0,0 +1,8 @@ +import { source } from '@/lib/source'; +import { llms } from 'fumadocs-core/source'; + +export const revalidate = false; + +export function GET() { + return new Response(llms(source).index()); +} diff --git a/components/arg.tsx b/components/arg.tsx new file mode 100644 index 00000000..4adba3f7 --- /dev/null +++ b/components/arg.tsx @@ -0,0 +1,54 @@ +/** + * Port of the VuePress `Arg.vue` single-file component. Marks a function + * argument as required (no default) or optional (with its default value), + * with a CSS-only hover tooltip. + */ +export function Arg({ + name = 'Argument', + default: defaultValue = '', + code = false, +}: { + name?: string; + default?: string; + code?: string | boolean; +}) { + const isRequired = defaultValue === ''; + const isCode = code === 'true' || code === true; + + return ( + + + + {isRequired ? ( + 'Required Argument' + ) : ( + <> + Optional Argument + + Default:{' '} + {isCode ? {defaultValue} : defaultValue} + + + )} + + + Tooltip + + + + {name} + + ); +} diff --git a/components/badge.tsx b/components/badge.tsx new file mode 100644 index 00000000..67159ee0 --- /dev/null +++ b/components/badge.tsx @@ -0,0 +1,35 @@ +import type { ReactNode } from 'react'; + +type BadgeType = 'tip' | 'info' | 'warning' | 'danger'; + +const styles: Record = { + tip: 'bg-emerald-500/12 text-emerald-700 ring-emerald-500/25 dark:text-emerald-300', + info: 'bg-sky-500/12 text-sky-700 ring-sky-500/25 dark:text-sky-300', + warning: 'bg-amber-500/12 text-amber-700 ring-amber-500/25 dark:text-amber-300', + danger: 'bg-rose-500/12 text-rose-700 ring-rose-500/25 dark:text-rose-300', +}; + +/** + * Drop-in replacement for the VuePress ``, kept prop-compatible so the + * ~1000 existing usages in content did not need rewriting. + */ +export function Badge({ + type = 'tip', + text, + vertical = 'middle', + children, +}: { + type?: BadgeType; + text?: string; + vertical?: 'top' | 'middle' | 'bottom'; + children?: ReactNode; +}) { + return ( + + {text ?? children} + + ); +} diff --git a/components/discord.tsx b/components/discord.tsx new file mode 100644 index 00000000..8baf02bd --- /dev/null +++ b/components/discord.tsx @@ -0,0 +1,68 @@ +'use client'; + +import type { ComponentProps, ElementType, ReactNode } from 'react'; +import { useTheme } from 'next-themes'; +import { + DiscordActionRow, + DiscordButton, + DiscordEmbed as RawEmbed, + DiscordEmbedDescription, + DiscordEmbedField as RawEmbedField, + DiscordEmbedFields, + DiscordEmbedFooter, + DiscordMention as RawMention, + DiscordMessage as RawMessage, + DiscordMessages as RawMessages, + DiscordReaction as RawReaction, + DiscordReactions, +} from '@skyra/discord-components-react'; + +/** + * Discord message mock-ups. + * + * The old site used `@discord-message-components/vue`, which has no maintained + * React counterpart (its React twin was last published in 2022). `@skyra/*` is + * the actively maintained successor and covers every component the docs use, + * with one exception: `DiscordMarkdown`, shimmed below. + * + * These are Lit web components, so they render on the client only. + */ + +/** + * The old site kept these blocks in step with the site theme via CSS overrides. + * Skyra renders into a shadow root, so external CSS can't reach it — the + * supported route is the per-component `lightTheme` prop. + */ +function withSiteTheme(Component: T) { + return function Themed(props: ComponentProps & { lightTheme?: boolean }) { + const { resolvedTheme } = useTheme(); + const Rendered = Component as ElementType; + return ; + }; +} + +export const DiscordMessages = withSiteTheme(RawMessages); +export const DiscordMessage = withSiteTheme(RawMessage); +export const DiscordEmbed = withSiteTheme(RawEmbed); +export const DiscordEmbedField = withSiteTheme(RawEmbedField); +export const DiscordMention = withSiteTheme(RawMention); +export const DiscordReaction = withSiteTheme(RawReaction); + +// these have no `lightTheme` of their own — they inherit from their parent +export { + DiscordActionRow, + DiscordButton, + DiscordEmbedDescription, + DiscordEmbedFields, + DiscordEmbedFooter, + DiscordReactions, +}; + +/** + * `@skyra/*` dropped the `DiscordMarkdown` wrapper — message bodies handle + * their own formatting now. Kept as a passthrough so existing content renders + * unchanged. + */ +export function DiscordMarkdown({ children }: { children?: ReactNode }) { + return {children}; +} diff --git a/components/mdx.tsx b/components/mdx.tsx new file mode 100644 index 00000000..f0d50cfe --- /dev/null +++ b/components/mdx.tsx @@ -0,0 +1,24 @@ +import defaultMdxComponents from 'fumadocs-ui/mdx'; +import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; +import type { MDXComponents } from 'mdx/types'; +import { Badge } from '@/components/badge'; +import { Arg } from '@/components/arg'; +import * as Discord from '@/components/discord'; + +export function getMDXComponents(components?: MDXComponents) { + return { + ...defaultMdxComponents, + Accordion, + Accordions, + Badge, + Arg, + ...Discord, + ...components, + } satisfies MDXComponents; +} + +export const useMDXComponents = getMDXComponents; + +declare global { + type MDXProvidedComponents = ReturnType; +} diff --git a/components/provider.tsx b/components/provider.tsx new file mode 100644 index 00000000..522282b2 --- /dev/null +++ b/components/provider.tsx @@ -0,0 +1,8 @@ +'use client'; +import SearchDialog from '@/components/search'; +import { RootProvider } from 'fumadocs-ui/provider/next'; +import { type ReactNode } from 'react'; + +export function Provider({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/components/search.tsx b/components/search.tsx new file mode 100644 index 00000000..b0417eb9 --- /dev/null +++ b/components/search.tsx @@ -0,0 +1,38 @@ +'use client'; +import { + SearchDialog, + SearchDialogClose, + SearchDialogContent, + SearchDialogHeader, + SearchDialogIcon, + SearchDialogInput, + SearchDialogList, + SearchDialogOverlay, + type SharedProps, +} from 'fumadocs-ui/components/dialog/search'; +import { useDocsSearch } from 'fumadocs-core/search/client'; +import { staticClient } from 'fumadocs-core/search/client/orama-static'; +import { useI18n } from 'fumadocs-ui/contexts/i18n'; + +export default function DefaultSearchDialog(props: SharedProps) { + const { locale } = useI18n(); // (optional) for i18n + const { search, setSearch, query } = useDocsSearch({ + client: staticClient({ + locale, + }), + }); + + return ( + + + + + + + + + + + + ); +} diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx new file mode 100644 index 00000000..44d8139e --- /dev/null +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -0,0 +1,35 @@ +--- +title: "$botCount" +--- + +This function returns the total number of bots present in your Discord server (guild). + +#### Usage: `$botCount` + +Here's how you can use the `$botCount` function: + +``` +!!exec There are $botCount bots in the server! +``` + +This command, when executed, will display a message showing the bot count in the server. See the example below: + + + +!!exec There are $botCount bots in the server! + + +There are 2 bots in the server! + + + + + +The bot count is retrieved from the bot's cache, not directly from the Discord API. This means the count might not be perfectly accurate, especially if all server members haven't been fully cached. Full caching is typically achieved at higher bot tiers (Tier 5). + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Bot/botOwnerID.md b/content/docs/(functions)/Bot/botOwnerID.mdx similarity index 97% rename from guide/Bot/botOwnerID.md rename to content/docs/(functions)/Bot/botOwnerID.mdx index b659a395..a3f6e50b 100644 --- a/guide/Bot/botOwnerID.md +++ b/content/docs/(functions)/Bot/botOwnerID.mdx @@ -1,4 +1,6 @@ -# $botOwnerID +--- +title: "$botOwnerID" +--- Retrieves the ID(s) of the bot owner(s). diff --git a/guide/Bot/botPing.md b/content/docs/(functions)/Bot/botPing.mdx similarity index 95% rename from guide/Bot/botPing.md rename to content/docs/(functions)/Bot/botPing.mdx index 158471a9..445f1e9e 100644 --- a/guide/Bot/botPing.md +++ b/content/docs/(functions)/Bot/botPing.mdx @@ -1,4 +1,6 @@ -# $botPing +--- +title: "$botPing" +--- This function retrieves and returns the bot's current message ping (latency). This is a measure of the time it takes for the bot to send and receive a message. diff --git a/content/docs/(functions)/Bot/botTier.mdx b/content/docs/(functions)/Bot/botTier.mdx new file mode 100644 index 00000000..4dccd6e6 --- /dev/null +++ b/content/docs/(functions)/Bot/botTier.mdx @@ -0,0 +1,18 @@ +--- +title: "$botTier" +--- + +This command retrieves the current tier level of your bot. + +The standard, free version of the bot operates at **Tier 0**. + + + +!!exec $botTier + + +0 + + + +The command will then return the tier level of your bot. \ No newline at end of file diff --git a/guide/Bot/botTyping.md b/content/docs/(functions)/Bot/botTyping.mdx similarity index 95% rename from guide/Bot/botTyping.md rename to content/docs/(functions)/Bot/botTyping.mdx index 21aeb537..39d5bf24 100644 --- a/guide/Bot/botTyping.md +++ b/content/docs/(functions)/Bot/botTyping.mdx @@ -1,4 +1,6 @@ -# $botTyping +--- +title: "$botTyping" +--- Simulates the bot typing in the current channel. This will display the "Bot is typing..." indicator to users in the channel for approximately 10 seconds. diff --git a/guide/Bot/botVerified.md b/content/docs/(functions)/Bot/botVerified.mdx similarity index 50% rename from guide/Bot/botVerified.md rename to content/docs/(functions)/Bot/botVerified.mdx index 5209ba3e..97597afa 100644 --- a/guide/Bot/botVerified.md +++ b/content/docs/(functions)/Bot/botVerified.mdx @@ -1,4 +1,6 @@ -# $botVerified +--- +title: "$botVerified" +--- This function checks if a Discord bot is verified. A verified bot has been reviewed and approved by Discord. @@ -18,14 +20,14 @@ Here are a couple of examples demonstrating how `$botVerified` works. In this example, we check if the bot with the ID `725721249652670555` is verified. - - - !!exec $botVerified[725721249652670555] - - - true - - + + +!!exec $botVerified[725721249652670555] + + +true + + The function returns `true` because the bot with ID `725721249652670555` is verified. @@ -33,13 +35,13 @@ The function returns `true` because the bot with ID `725721249652670555` is veri In this example, we check if the bot with the ID `582019849073590274` is verified. - - - !!exec $botVerified[582019849073590274] - - - false - - + + +!!exec $botVerified[582019849073590274] + + +false + + The function returns `false` because the bot with ID `582019849073590274` is not verified. \ No newline at end of file diff --git a/guide/Bot/botVersion.md b/content/docs/(functions)/Bot/botVersion.mdx similarity index 92% rename from guide/Bot/botVersion.md rename to content/docs/(functions)/Bot/botVersion.mdx index 3406a8e5..a5e388c1 100644 --- a/guide/Bot/botVersion.md +++ b/content/docs/(functions)/Bot/botVersion.mdx @@ -1,4 +1,6 @@ -# $botVersion +--- +title: "$botVersion" +--- This function returns the version of your bot. diff --git a/guide/Bot/cacheMember.md b/content/docs/(functions)/Bot/cacheMember.mdx similarity index 79% rename from guide/Bot/cacheMember.md rename to content/docs/(functions)/Bot/cacheMember.mdx index 8df4d2b5..ceb69f12 100644 --- a/guide/Bot/cacheMember.md +++ b/content/docs/(functions)/Bot/cacheMember.mdx @@ -1,4 +1,6 @@ -# $cacheMember +--- +title: "$cacheMember" +--- This function caches a member in the bot's memory. This is useful for functions like `$usersWithRole` that rely on having members already cached, especially if you're using them frequently *without* cooldowns. @@ -16,10 +18,13 @@ This function caches a member in the bot's memory. This is useful for functions `$cacheMember` - Caches the user who executed the command. -::: tip + + **Automatic Caching:** When a user executes a command, they are automatically cached. You typically only need to use `$cacheMember` if you're dealing with users who haven't recently interacted with the bot or if you need to ensure a user is cached *before* a specific function is called. -::: -##### Difficulty: + + +**Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx new file mode 100644 index 00000000..a39aa9d4 --- /dev/null +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -0,0 +1,28 @@ +--- +title: "$clientID" +--- + +Retrieves the bot's User ID, also referred to as the Client ID. This is a unique identifier for your bot on Discord. + +#### Usage: `$clientID` + +
+ +This function is commonly used to programmatically access the bot's ID within custom commands or other bot logic. + +Here's an example of how it works in practice: + + + +!!exec $clientID + + +725721249652670555 + + + +As you can see, the command `!!exec $clientID` returns the bot's ID: `725721249652670555`. + +**Function difficulty:** + +**Tags:** diff --git a/guide/Bot/cpu.md b/content/docs/(functions)/Bot/cpu.mdx similarity index 92% rename from guide/Bot/cpu.md rename to content/docs/(functions)/Bot/cpu.mdx index e5e48650..a6f76d0f 100644 --- a/guide/Bot/cpu.md +++ b/content/docs/(functions)/Bot/cpu.mdx @@ -1,4 +1,6 @@ -# $cpu +--- +title: "$cpu" +--- This function provides real-time information about the bot's current CPU usage. diff --git a/guide/Bot/executionTime.md b/content/docs/(functions)/Bot/executionTime.mdx similarity index 95% rename from guide/Bot/executionTime.md rename to content/docs/(functions)/Bot/executionTime.mdx index cf751f81..dba1cb3b 100644 --- a/guide/Bot/executionTime.md +++ b/content/docs/(functions)/Bot/executionTime.mdx @@ -1,4 +1,6 @@ -# $executionTime +--- +title: "$executionTime" +--- This function returns the time it took for the interpreter to execute the code *before* this function, measured in milliseconds. diff --git a/guide/Bot/getBotActivity.md b/content/docs/(functions)/Bot/getBotActivity.mdx similarity index 55% rename from guide/Bot/getBotActivity.md rename to content/docs/(functions)/Bot/getBotActivity.mdx index 61921c23..023b63a6 100644 --- a/guide/Bot/getBotActivity.md +++ b/content/docs/(functions)/Bot/getBotActivity.mdx @@ -1,4 +1,8 @@ -# $getBotActivity +--- +title: "$getBotActivity" +--- + + Retrieves the bot's current activity status (e.g., "Playing...", "Listening to...", "Watching...", "Competing in..."). @@ -19,11 +23,11 @@ This example demonstrates how to use `$getBotActivity[text]` to display the bot' ![Example Screenshot](https://i.imgur.com/KyYqUGU.png) - - - !!exec $getBotActivity[text] - - - The Cosmos - - \ No newline at end of file + + +!!exec $getBotActivity[text] + + +The Cosmos + + \ No newline at end of file diff --git a/content/docs/(functions)/Bot/getBotInvite.mdx b/content/docs/(functions)/Bot/getBotInvite.mdx new file mode 100644 index 00000000..e084b313 --- /dev/null +++ b/content/docs/(functions)/Bot/getBotInvite.mdx @@ -0,0 +1,40 @@ +--- +title: "$getBotInvite" +--- + +Generate an invite link for your bot. + +## Usage + +```bash +$getBotInvite[permission;permission;permission...] +``` + +**Parameters:** + +* `permission` - (Optional) A list of permissions to request in the invite link. Separate multiple permissions with a semicolon (;). If no permissions are specified, the invite will request the default permissions. + +## Example + +``` +!!exec $getBotInvite[admin] +``` + +This will output an invite link for your bot with administrator permissions. + +**Example Output:** + + + +!!exec $getBotInvite[admin] + + +https://discord.com/oauth2/authorize?client_id=725721249652670555&scope=bot+applications.commands&permissions=8 + + + + + +Refer to the [Permissions List](/CodeReferences/ref.permissions_list) for a comprehensive list of permission names and their corresponding integer values. + + \ No newline at end of file diff --git a/guide/Bot/maxRam.md b/content/docs/(functions)/Bot/maxRam.mdx similarity index 94% rename from guide/Bot/maxRam.md rename to content/docs/(functions)/Bot/maxRam.mdx index e179c169..ba6e5efd 100644 --- a/guide/Bot/maxRam.md +++ b/content/docs/(functions)/Bot/maxRam.mdx @@ -1,4 +1,6 @@ -# $maxRam +--- +title: "$maxRam" +--- This function returns the maximum amount of RAM (memory) allocated to the current shard of your bot. It's helpful for monitoring resource usage and potentially optimizing performance. diff --git a/content/docs/(functions)/Bot/meta.json b/content/docs/(functions)/Bot/meta.json new file mode 100644 index 00000000..243ead13 --- /dev/null +++ b/content/docs/(functions)/Bot/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Bot Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx new file mode 100644 index 00000000..b752b680 --- /dev/null +++ b/content/docs/(functions)/Bot/ping.mdx @@ -0,0 +1,27 @@ +--- +title: "$ping" +--- + +This command provides the bot's ping (latency) in milliseconds. It's a quick and easy way to check if the bot is online, responsive, and functioning correctly. Think of it like a simple "health check" for the bot! + +#### Usage: `$ping` + +
+ +Here's an example of how to use the `$ping` command in Discord: + + + +!!exec $ping ms + + +20 ms + + + +In this example, the bot responded with `20 ms`, indicating a ping of 20 milliseconds. A lower ping generally means the bot is more responsive. + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx new file mode 100644 index 00000000..66971d7b --- /dev/null +++ b/content/docs/(functions)/Bot/ram.mdx @@ -0,0 +1,28 @@ +--- +title: "$ram" +--- + +Displays the amount of RAM (Random Access Memory) currently being used by the bot. This command provides insight into the bot's resource consumption. + +#### Usage: `$ram` + +
+ +**Example:** + +``` +!!exec $ram MB +``` + +**Bot Response:** + +``` +2143.55 MB +``` + +This indicates that the bot is currently using approximately 2143.55 MB of RAM. + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx new file mode 100644 index 00000000..07e5923f --- /dev/null +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -0,0 +1,24 @@ +--- +title: "$serverCount" +--- + +This function returns the total number of servers (guilds) the bot is currently in. It's a simple way to display the bot's reach. + +#### Usage: `$serverCount` + +This function doesn't require any arguments. Just include it in your command response. +
+**Example:** + + +!!exec I am in $serverCount servers. + + +I am in 15000 servers. + + + +**Difficulty:** + + +**Tags:** diff --git a/guide/Bot/setBotActivity.md b/content/docs/(functions)/Bot/setBotActivity.mdx similarity index 84% rename from guide/Bot/setBotActivity.md rename to content/docs/(functions)/Bot/setBotActivity.mdx index 85537434..334fee7a 100644 --- a/guide/Bot/setBotActivity.md +++ b/content/docs/(functions)/Bot/setBotActivity.mdx @@ -1,4 +1,8 @@ -# $setBotActivity +--- +title: "$setBotActivity" +--- + + Set your bot's activity status (the text displayed under the bot's name). diff --git a/content/docs/(functions)/Bot/uptime.mdx b/content/docs/(functions)/Bot/uptime.mdx new file mode 100644 index 00000000..13180c67 --- /dev/null +++ b/content/docs/(functions)/Bot/uptime.mdx @@ -0,0 +1,27 @@ +--- +title: "$uptime" +--- + +This command displays how long the bot has been running since it was last started. + +#### Usage: `$uptime` + +
+ +Here's an example of how it works: + + + +!!exec $uptime + + +3d 17h 53m 27s + + + +In this example, the bot has been running for 3 days, 17 hours, 53 minutes, and 27 seconds. + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Channel/blackListChannelIDs.md b/content/docs/(functions)/Channel/blackListChannelIDs.mdx similarity index 98% rename from guide/Channel/blackListChannelIDs.md rename to content/docs/(functions)/Channel/blackListChannelIDs.mdx index b606f906..85e4daf5 100644 --- a/guide/Channel/blackListChannelIDs.md +++ b/content/docs/(functions)/Channel/blackListChannelIDs.mdx @@ -1,4 +1,6 @@ -# $blackListChannelIDs +--- +title: "$blackListChannelIDs" +--- Prevent command execution within specified channels and display a custom error message. diff --git a/guide/Channel/cacheChannelMessages.md b/content/docs/(functions)/Channel/cacheChannelMessages.mdx similarity index 96% rename from guide/Channel/cacheChannelMessages.md rename to content/docs/(functions)/Channel/cacheChannelMessages.mdx index 9de5797e..7908ef32 100644 --- a/guide/Channel/cacheChannelMessages.md +++ b/content/docs/(functions)/Channel/cacheChannelMessages.mdx @@ -1,4 +1,6 @@ -# $cacheChannelMessages +--- +title: "$cacheChannelMessages" +--- This command forces the bot to cache the latest messages from a channel. Caching messages allows the bot to access them faster, which can be useful for other commands. diff --git a/guide/Channel/categoryChannels.md b/content/docs/(functions)/Channel/categoryChannels.mdx similarity index 96% rename from guide/Channel/categoryChannels.md rename to content/docs/(functions)/Channel/categoryChannels.mdx index 44b8df02..13ff82b4 100644 --- a/guide/Channel/categoryChannels.md +++ b/content/docs/(functions)/Channel/categoryChannels.mdx @@ -1,4 +1,6 @@ -# $categoryChannels +--- +title: "$categoryChannels" +--- This function retrieves information about channels within a specified category. diff --git a/guide/Channel/channel.md b/content/docs/(functions)/Channel/channel.mdx similarity index 75% rename from guide/Channel/channel.md rename to content/docs/(functions)/Channel/channel.mdx index 25324b00..effde317 100644 --- a/guide/Channel/channel.md +++ b/content/docs/(functions)/Channel/channel.mdx @@ -1,4 +1,6 @@ -# $channel +--- +title: "$channel" +--- Retrieves information about a specific channel. @@ -42,18 +44,21 @@ auto, brazil, hongkong, india, japan, rotterdam, russia, singapore, southafrica, This example retrieves the name of the channel with the ID stored in the variable `$channelID`. - - - !!exec #$channel[$channelID;name] - - - #custom-command-is-the-best - - - -::: tip Note -The `type` option returns the channel's type. Refer to this [list](../CodeReferences/ref.channel_types.md) for possible channel types. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file + + +!!exec #$channel[$channelID;name] + + +#custom-command-is-the-best + + + + + +The `type` option returns the channel's type. Refer to this [list](/CodeReferences/ref.channel_types) for possible channel types. + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/channelCategoryID.md b/content/docs/(functions)/Channel/channelCategoryID.mdx similarity index 55% rename from guide/Channel/channelCategoryID.md rename to content/docs/(functions)/Channel/channelCategoryID.mdx index f4a62a1c..5adcef48 100644 --- a/guide/Channel/channelCategoryID.md +++ b/content/docs/(functions)/Channel/channelCategoryID.mdx @@ -1,4 +1,6 @@ -# $channelCategoryID +--- +title: "$channelCategoryID" +--- Retrieves the ID of the category channel the current channel or a specified channel belongs to. @@ -13,17 +15,18 @@ Retrieves the ID of the category channel the current channel or a specified chan **Example:** - - - !!exec $channelCategoryID - - - 83975894758938799 - - + + +!!exec $channelCategoryID + + +83975894758938799 + + In this example, the command `!!exec $channelCategoryID` is used in a channel that is within the category channel with the ID `83975894758938799`. The bot returns the ID of the category channel. -##### Difficulty: +**Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx new file mode 100644 index 00000000..08140317 --- /dev/null +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -0,0 +1,31 @@ +--- +title: "$channelCount" +--- + +This function returns the total number of channels present in the server. + +#### Usage: `$channelCount[Channel Type (optional)]` + +You can optionally specify a channel type to count only channels of that specific type. Refer to this [list](/CodeReferences/ref.channel_types) for valid channel types. + +#### Parameters: + +* **`Channel Type` (optional):** The type of channel to count. If omitted, the function will count all channels. Valid types can be found in the [Channel Types Reference](/CodeReferences/ref.channel_types). + +#### Example: + +Counts the number of public threads in the server: + +
+ + +!!exec There are $channelCount[threads_public] threads in the server! + + +There are 13 threads in the server! + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/channelExists.md b/content/docs/(functions)/Channel/channelExists.mdx similarity index 54% rename from guide/Channel/channelExists.md rename to content/docs/(functions)/Channel/channelExists.mdx index b9b88128..1f38520f 100644 --- a/guide/Channel/channelExists.md +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -1,4 +1,6 @@ -# $channelExists +--- +title: "$channelExists" +--- Checks if a channel with the provided ID exists. Returns `true` if the channel exists, and `false` if it doesn't. @@ -22,18 +24,25 @@ Checks if a channel with the provided ID exists. Returns `true` if the channel e true ``` -::: tip Example Breakdown + + This example checks if a channel with the ID `889102524727058463` exists. Since a channel with that ID exists, the function returns `true`. -::: -::: tip Useful Tip + + + + You can use the `$channelID` function to retrieve the ID of a channel based on its name. This is helpful if you don't already know the channel's ID. -::: -::: tip Related Functions + + + + * `$findChannel`: Finds a channel by its name. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Channel/channelID.md b/content/docs/(functions)/Channel/channelID.mdx similarity index 71% rename from guide/Channel/channelID.md rename to content/docs/(functions)/Channel/channelID.mdx index 0053e798..527de10c 100644 --- a/guide/Channel/channelID.md +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -1,4 +1,6 @@ -# $channelID +--- +title: "$channelID" +--- Returns the ID of the channel where the command is executed. You can also use it to find the ID of another channel by providing its name. @@ -33,11 +35,14 @@ Let's say you have a channel named `#general`. You can get its ID like this: If a channel named `general` exists, the output will be its ID. -::: warning + + This function will **not** work with the voice channel join/leave trigger. Use `$voiceChannelID` instead. This function will **not** work with the channel creation/deletion trigger. Use `$eventChannelID` instead. -::: -##### Function Difficulty: -###### Tags: \ No newline at end of file + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx new file mode 100644 index 00000000..b04ce7a6 --- /dev/null +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -0,0 +1,45 @@ +--- +title: "$channelName" +--- + +Retrieves the name of a Discord channel. + +#### Usage: `$channelName[channelID]` + +`` (Required): The ID of the channel you want to get the name of. + +
+ +**Example:** + + + +!!exec $channelName[123456789012345678] + + +The channel's name is... (Assuming the channel ID 123456789012345678 is a channel named "help") + + + + + +* If a channel with the specified ID is not found, the function will return an empty string. +* Make sure your bot has the necessary permissions to access the channel. + + + + + +Use `$channelID` to get the ID of a channel by its name or to get the ID of the channel where the command was executed. + + + + + +Use `$findChannel` to find a channel using its name. + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/channelPermissionsFor.md b/content/docs/(functions)/Channel/channelPermissionsFor.mdx similarity index 53% rename from guide/Channel/channelPermissionsFor.md rename to content/docs/(functions)/Channel/channelPermissionsFor.mdx index 6893f910..2d456a6d 100644 --- a/guide/Channel/channelPermissionsFor.md +++ b/content/docs/(functions)/Channel/channelPermissionsFor.mdx @@ -1,4 +1,6 @@ -# $channelPermissionsFor +--- +title: "$channelPermissionsFor" +--- This function retrieves the permissions a specific user or role has within a given channel. It returns a comma-separated list of those permissions. @@ -23,13 +25,13 @@ $channelPermissionsFor[channelID;userID/roleID] Here's an example demonstrating how to use `$channelPermissionsFor`: - - - !!exec $channelPermissionsFor[$channelID;$authorID] - - - Create Instant Invite, Kick Members, Ban Members, Administrator, Manage Channels, Manage Guild, Add Reactions, View Audit Log, Priority Speaker, Stream, View Channel, Send Messages, Send Tts Messages, Manage Messages, Embed Links, Attach Files, Read Message History, Mention Everyone, Use External Emojis, View Guild Insights, Connect, Speak, Mute Members, Deafen Members, Move Members, Use Vad, Change Nickname, Manage Nicknames, Manage Roles, Manage Webhooks, Manage Emojis And Stickers, Use Application Commands, Request To Speak, Manage Events, Manage Threads, Use Public Threads, Create Public Threads, Use Private Threads, Create Private Threads, Use External Stickers, Send Messages In Threads, Start Embedded Activities, Moderate Members - - + + +!!exec $channelPermissionsFor[$channelID;$authorID] + + +Create Instant Invite, Kick Members, Ban Members, Administrator, Manage Channels, Manage Guild, Add Reactions, View Audit Log, Priority Speaker, Stream, View Channel, Send Messages, Send Tts Messages, Manage Messages, Embed Links, Attach Files, Read Message History, Mention Everyone, Use External Emojis, View Guild Insights, Connect, Speak, Mute Members, Deafen Members, Move Members, Use Vad, Change Nickname, Manage Nicknames, Manage Roles, Manage Webhooks, Manage Emojis And Stickers, Use Application Commands, Request To Speak, Manage Events, Manage Threads, Use Public Threads, Create Public Threads, Use Private Threads, Create Private Threads, Use External Stickers, Send Messages In Threads, Start Embedded Activities, Moderate Members + + In this example, the command `!!exec $channelPermissionsFor[$channelID;$authorID]` retrieves and displays the permissions of the command author (`$authorID`) within the current channel (`$channelID`). The bot then responds with a comma-separated list of the user's permissions in that channel. \ No newline at end of file diff --git a/guide/Channel/channelTopic.md b/content/docs/(functions)/Channel/channelTopic.mdx similarity index 93% rename from guide/Channel/channelTopic.md rename to content/docs/(functions)/Channel/channelTopic.mdx index 8dcb30fe..eea5115d 100644 --- a/guide/Channel/channelTopic.md +++ b/content/docs/(functions)/Channel/channelTopic.mdx @@ -1,4 +1,6 @@ -# $channelTopic +--- +title: "$channelTopic" +--- Retrieves the topic (or description) of a channel. diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx new file mode 100644 index 00000000..579ffb9e --- /dev/null +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -0,0 +1,32 @@ +--- +title: "$channelType" +--- + +Retrieves the type of a channel based on its ID. + +#### Usage: `$channelType[channelID]` + +This function allows you to determine the type of a specific channel using its unique ID. + +
+ +**Example:** + + + +!!exec $channelType[$channelID] + + +text + + + + + +The `$channelType` function returns a string representing the channel type. Refer to this [list](/CodeReferences/ref.channel_types) for possible channel types and their meanings. + + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx new file mode 100644 index 00000000..1f4e044e --- /dev/null +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -0,0 +1,39 @@ +--- +title: "$channelUsed" +--- + +Returns the ID of the channel used. If no channel ID is specified, it defaults to the current channel where the command was executed. + +#### Usage: `$channelUsed[channelID (optional)]` + +**Parameters:** + +* `channelID (optional)`: The ID of the channel you want to be set as the channel used. If omitted, the function returns the ID of the channel where the command is run. + +**Example:** + +Here are a few examples showcasing the `$channelUsed` function: + + + +!!exec $channelUsed[839090554205241394] + + +!!exec $channelUsed + + +839090554205241394 + + + +In the first example, the bot set the specified channel ID `839090554205241394` as the channel used. In the second example, because no channel ID is provided, the bot returns the channel ID where the `!!exec` command was executed. + + + +* `$channelID` returns the channel ID where the command was executed. See the `$channelID` documentation for more information. + + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Channel/clear.mdx b/content/docs/(functions)/Channel/clear.mdx new file mode 100644 index 00000000..0ae0c156 --- /dev/null +++ b/content/docs/(functions)/Channel/clear.mdx @@ -0,0 +1,60 @@ +--- +title: "$clear" +--- + +Clears messages from a channel. You can clear messages from a specific user, or clear all messages in the channel. + +#### Usage: + +`$clear[amount;userID or everyone (optional);channelID (optional);skip pinned messages (optional)]` + +**Parameters:** + +* `amount`: The number of messages to clear (maximum 100). +* `userID` (optional): The ID of the user whose messages you want to clear. If omitted, or set to `everyone`, all messages will be cleared. +* `channelID` (optional): The ID of the channel to clear messages from. If omitted, the current channel is used. +* `skip pinned messages` (optional): default is 'no' +**Example:** + +**Before:** + + + +I'm a spammer, everyone shut up! + + +I'm a spammer, everyone shut up! + + +I'm a spammer, everyone shut up! + + +I'm a spammer, everyone shut up! + + +I'm a spammer, everyone shut up! + + +I'm a spammer, everyone shut up! + + +!!exec $clear[10;everyone] $sendMessage[Channel has been purged] + + + +**After:** + + + +Channel has been purged. + + + + + +You can clear a maximum of 100 messages at a time. Messages older than 2 weeks cannot be cleared. + + + +**Function Difficulty:** + diff --git a/guide/Channel/cloneChannel.md b/content/docs/(functions)/Channel/cloneChannel.mdx similarity index 97% rename from guide/Channel/cloneChannel.md rename to content/docs/(functions)/Channel/cloneChannel.mdx index 9e3877e6..abfd096f 100644 --- a/guide/Channel/cloneChannel.md +++ b/content/docs/(functions)/Channel/cloneChannel.mdx @@ -1,4 +1,6 @@ -# $cloneChannel +--- +title: "$cloneChannel" +--- Clones a channel, duplicating its permissions. diff --git a/guide/Channel/closeTicket.md b/content/docs/(functions)/Channel/closeTicket.mdx similarity index 82% rename from guide/Channel/closeTicket.md rename to content/docs/(functions)/Channel/closeTicket.mdx index 1ab950f1..c3e73815 100644 --- a/guide/Channel/closeTicket.md +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -1,4 +1,6 @@ -# $closeTicket +--- +title: "$closeTicket" +--- Closes a ticket that was previously created by the bot using the `$newTicket` command. This is used to finalize and close a support or request ticket channel. @@ -24,6 +26,7 @@ $closeTicket * `$wait[5s]`: Pauses the script execution for 5 seconds, giving the user a chance to read the message. * `$closeTicket`: Closes the ticket channel. -##### Difficulty: +**Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Channel/createChannel.md b/content/docs/(functions)/Channel/createChannel.mdx similarity index 80% rename from guide/Channel/createChannel.md rename to content/docs/(functions)/Channel/createChannel.mdx index e3b6beb8..54c4b574 100644 --- a/guide/Channel/createChannel.md +++ b/content/docs/(functions)/Channel/createChannel.mdx @@ -1,4 +1,6 @@ -# $createChannel +--- +title: "$createChannel" +--- Creates a new channel within your Discord server. @@ -36,14 +38,19 @@ $createChannel[general;text;no] This will create a text channel named "general" in the server. -::: tip Available Channel Types -For a complete list of valid channel types, see [this reference page](../CodeReferences/ref.channel_types.md). -::: + + +For a complete list of valid channel types, see [this reference page](/CodeReferences/ref.channel_types). + + + + -::: tip Related Functions * `$createThread`: Use this function to create a new thread. * `$createRole`: Use this function to create a new role. -::: -##### Function Difficulty: -###### Tags: \ No newline at end of file + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/createForum.md b/content/docs/(functions)/Channel/createForum.mdx similarity index 99% rename from guide/Channel/createForum.md rename to content/docs/(functions)/Channel/createForum.mdx index 56d39f8a..6663250a 100644 --- a/guide/Channel/createForum.md +++ b/content/docs/(functions)/Channel/createForum.mdx @@ -1,4 +1,6 @@ -# $createForum +--- +title: "$createForum" +--- Create a new forum channel within your Discord server. diff --git a/guide/Channel/deleteChannels.md b/content/docs/(functions)/Channel/deleteChannels.mdx similarity index 61% rename from guide/Channel/deleteChannels.md rename to content/docs/(functions)/Channel/deleteChannels.mdx index 4113a07f..5607d32e 100644 --- a/guide/Channel/deleteChannels.md +++ b/content/docs/(functions)/Channel/deleteChannels.mdx @@ -1,4 +1,6 @@ -# $deleteChannels +--- +title: "$deleteChannels" +--- Deletes one or more channels from the server. @@ -22,11 +24,14 @@ This example will delete the channel the command is executed in. `$channelID` r This example will delete the channels with IDs 123456789012345678 and 987654321098765432. -::: tip Related Functions + + * Use `$deleteRoles` to delete roles. * Use `$deleteThreads` to delete threads. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Channel/editChannel.md b/content/docs/(functions)/Channel/editChannel.mdx similarity index 77% rename from guide/Channel/editChannel.md rename to content/docs/(functions)/Channel/editChannel.mdx index 33345610..48bc421a 100644 --- a/guide/Channel/editChannel.md +++ b/content/docs/(functions)/Channel/editChannel.mdx @@ -1,4 +1,6 @@ -# $editChannel +--- +title: "$editChannel" +--- Edits the properties of a channel. @@ -21,9 +23,11 @@ Edits the properties of a channel. * `reason`: (Optional) The reason for editing the channel. This will be visible in the audit log. * `RTC Region`: (Optional) The new RTC Region for a voice channel, defaults to 'auto' -::: tip Channel Types -Refer to [this list](../CodeReferences/ref.channel_types.md) for all valid channel types and their properties. -::: + + +Refer to [this list](/CodeReferences/ref.channel_types) for all valid channel types and their properties. + + #### RTC Region List: default is `auto`, but you can specify one of those: @@ -35,9 +39,12 @@ default is `auto`, but you can specify one of those: This example changes the channel name to "new-channel-name", syncs permissions with category and provides a reason for audit logs. All other channel properties will remain unchanged. -::: tip Related Functions + + Use `$modifyChannelPerms` to manage channel permissions in more detail. -::: -##### Function Difficulty: -###### Tags: \ No newline at end of file + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/editForum.md b/content/docs/(functions)/Channel/editForum.mdx similarity index 99% rename from guide/Channel/editForum.md rename to content/docs/(functions)/Channel/editForum.mdx index e1e6b639..efb652ea 100644 --- a/guide/Channel/editForum.md +++ b/content/docs/(functions)/Channel/editForum.mdx @@ -1,4 +1,6 @@ -# $editForum +--- +title: "$editForum" +--- Edits an existing forum channel. This allows you to modify various aspects of the forum, such as its name, topic, layout, and available tags. diff --git a/guide/Channel/eventChannelID.md b/content/docs/(functions)/Channel/eventChannelID.mdx similarity index 52% rename from guide/Channel/eventChannelID.md rename to content/docs/(functions)/Channel/eventChannelID.mdx index 4ad7e45f..fdf20c19 100644 --- a/guide/Channel/eventChannelID.md +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -1,17 +1,22 @@ -# $eventChannelID +--- +title: "$eventChannelID" +--- Returns the ID of the channel that was created or deleted. This function is used specifically for the **Channel Creation** or **Channel Deletion** triggers. #### Usage: `$eventChannelID` -::: warning + + **Important Considerations:** * This function is exclusively for the **Channel Creation** and **Channel Deletion** triggers. * For **Voice Channel Join/Leave** events, use `$voiceChannelID` instead. * This function will **not** work in regular command triggers. For those triggers, use `$channelID`. -::: -##### Difficulty: + + +**Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Channel/eventChannelParent.md b/content/docs/(functions)/Channel/eventChannelParent.mdx similarity index 96% rename from guide/Channel/eventChannelParent.md rename to content/docs/(functions)/Channel/eventChannelParent.mdx index aca7e77e..780d30a2 100644 --- a/guide/Channel/eventChannelParent.md +++ b/content/docs/(functions)/Channel/eventChannelParent.mdx @@ -1,4 +1,6 @@ -# $eventChannelParent +--- +title: "$eventChannelParent" +--- Returns the ID of the category/forum channel under which a channel or thread was created or deleted. This is **only applicable and useful within channel triggers** (e.g., `channelCreate` or `channelDelete`). diff --git a/content/docs/(functions)/Channel/findChannel.mdx b/content/docs/(functions)/Channel/findChannel.mdx new file mode 100644 index 00000000..a55bcd8e --- /dev/null +++ b/content/docs/(functions)/Channel/findChannel.mdx @@ -0,0 +1,54 @@ +--- +title: "$findChannel" +--- + +Searches for a channel by its ID, mention, or name. + +#### Usage: + +`$findChannel[ID/mention/name;returnCurrentChannel (yes/no) (optional)]` + +**Parameters:** + +* `ID/mention/name`: The ID, mention, or name of the channel to search for. +* `returnCurrentChannel (yes/no) (optional)`: Determines the behavior when a channel isn't found: + * `yes`: (Default) Returns the current channel's ID if no match is found. + * `no`: Returns `undefined` if no match is found. + +**Example Scenarios:** + +**Scenario 1: Channel Found (using channel name)** + + + +!!exec $findChannel[bot-commands;no] + + +869243919697846379 + + + +In this example, the bot searches for a channel named "bot-commands". If found, it returns the channel's ID (869243919697846379). The `;no` tells the function to return undefined if the channel isn't found. + +**Scenario 2: Channel Not Found (with `returnCurrentChannel` set to `no`)** + + + +!!exec $findChannel[bot-cmnds;no] + + +undefined + + + +Here, the bot attempts to find a channel named "bot-cmnds" (note the typo). Since no such channel exists, and the second argument is set to `no`, the function returns `undefined`. + + + +`$channelExists` is useful for verifying if a channel ID exists before using it. + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/findServerChannel.md b/content/docs/(functions)/Channel/findServerChannel.mdx similarity index 69% rename from guide/Channel/findServerChannel.md rename to content/docs/(functions)/Channel/findServerChannel.mdx index e376bc5e..610c2c23 100644 --- a/guide/Channel/findServerChannel.md +++ b/content/docs/(functions)/Channel/findServerChannel.mdx @@ -1,4 +1,6 @@ -# $findServerChannel +--- +title: "$findServerChannel" +--- This function allows you to search for a specific channel within your Discord server. You can identify the channel by its **name**, **mention**, or **ID**. @@ -21,19 +23,21 @@ $findServerChannel[query;returnCurrentChannel (yes/no) (optional)] In this example, we're searching for a channel named "general" and telling the function *not* to return anything if the channel is not found. - - - !!exec $findServerChannel[general;no] - - - 802179504147136552 - - + + +!!exec $findServerChannel[general;no] + + +802179504147136552 + + + + -::: tip Related functions * `$findMember`: Find a member in the server. * `$findRole`: Find a role in the server. * `$findChannel`: Find a channel (works across servers if the bot is in multiple). -::: \ No newline at end of file + + \ No newline at end of file diff --git a/guide/Channel/getChannelMessages.md b/content/docs/(functions)/Channel/getChannelMessages.mdx similarity index 75% rename from guide/Channel/getChannelMessages.md rename to content/docs/(functions)/Channel/getChannelMessages.mdx index 3fc48d70..1119c799 100644 --- a/guide/Channel/getChannelMessages.md +++ b/content/docs/(functions)/Channel/getChannelMessages.mdx @@ -1,4 +1,6 @@ -# $getChannelMessages +--- +title: "$getChannelMessages" +--- Retrieves the most recent messages from a specified channel. @@ -21,11 +23,11 @@ $getChannelMessages[Channel ID;userID or everyone (default is everyone);ids/cont This example demonstrates how to retrieve the IDs of the 2 most recent messages sent by the command invoker in the channel where the command was executed, separating them with a forward slash. - - - !!exec $getChannelMessages[$channelID;$authorID;ids;/;2] - - - 982807194485555300/982807196318457918 - - \ No newline at end of file + + +!!exec $getChannelMessages[$channelID;$authorID;ids;/;2] + + +982807194485555300/982807196318457918 + + \ No newline at end of file diff --git a/guide/Channel/getChannelSlowmode.md b/content/docs/(functions)/Channel/getChannelSlowmode.mdx similarity index 96% rename from guide/Channel/getChannelSlowmode.md rename to content/docs/(functions)/Channel/getChannelSlowmode.mdx index 1f976a7e..17ab5818 100644 --- a/guide/Channel/getChannelSlowmode.md +++ b/content/docs/(functions)/Channel/getChannelSlowmode.mdx @@ -1,4 +1,6 @@ -# $getChannelSlowmode +--- +title: "$getChannelSlowmode" +--- Retrieves the slow mode duration (in seconds) of a specified channel. If no slow mode is active, it returns `0`. diff --git a/guide/Channel/latestMessage.md b/content/docs/(functions)/Channel/latestMessage.mdx similarity index 56% rename from guide/Channel/latestMessage.md rename to content/docs/(functions)/Channel/latestMessage.mdx index d420af92..210081dc 100644 --- a/guide/Channel/latestMessage.md +++ b/content/docs/(functions)/Channel/latestMessage.mdx @@ -1,4 +1,6 @@ -# $latestMessage +--- +title: "$latestMessage" +--- Retrieves the most recent message content or ID from a channel, utilizing the cache for efficiency. @@ -20,24 +22,24 @@ $latestMessage[Channel ID (defaults to current channel);User ID (defaults to all This example retrieves the content of the most recent message in the current channel. - - - !!exec $latestMessage[$channelID] - - - Hello World - - + + +!!exec $latestMessage[$channelID] + + +Hello World + + ### Example 2: Return the Latest Message ID This example retrieves the ID of the most recent message from any user in the current channel. - - - !!exec $latestMessage[$channelID;everyone;yes] - - - 1234567890 - - \ No newline at end of file + + +!!exec $latestMessage[$channelID;everyone;yes] + + +1234567890 + + \ No newline at end of file diff --git a/guide/Channel/mentionChannel.md b/content/docs/(functions)/Channel/mentionChannel.mdx similarity index 85% rename from guide/Channel/mentionChannel.md rename to content/docs/(functions)/Channel/mentionChannel.mdx index ea840990..2c905018 100644 --- a/guide/Channel/mentionChannel.md +++ b/content/docs/(functions)/Channel/mentionChannel.mdx @@ -1,4 +1,6 @@ -# $mentionChannel +--- +title: "$mentionChannel" +--- mention a channel, threads by name or id diff --git a/content/docs/(functions)/Channel/meta.json b/content/docs/(functions)/Channel/meta.json new file mode 100644 index 00000000..e0730803 --- /dev/null +++ b/content/docs/(functions)/Channel/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Channel Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Channel/modifyChannelPerms.md b/content/docs/(functions)/Channel/modifyChannelPerms.mdx similarity index 72% rename from guide/Channel/modifyChannelPerms.md rename to content/docs/(functions)/Channel/modifyChannelPerms.mdx index bd8276c8..e126f53a 100644 --- a/guide/Channel/modifyChannelPerms.md +++ b/content/docs/(functions)/Channel/modifyChannelPerms.mdx @@ -1,4 +1,6 @@ -# $modifyChannelPerms +--- +title: "$modifyChannelPerms" +--- Modifies channel permissions, including those for categories. This function allows you to grant, deny, or set permissions to neutral for specific roles or users within a channel. @@ -27,23 +29,30 @@ This example restricts users with the role "muted" from sending messages in the * `-sendmessages`: Denies the `sendmessages` permission. * `$roleID[muted]`: Represents the ID of the role named "muted". -:::tip Information + + * Use `+` to **grant** a permission. * Use `-` to **deny** a permission. * Use `/` to set a permission to **neutral** (inherit from parent). -::: -::: tip Permissions + + + + + +A comprehensive list of all available permissions can be found [here](/CodeReferences/ref.permissions_list). -A comprehensive list of all available permissions can be found [here](../CodeReferences/ref.permissions_list.md). -::: + + + -::: tip Related Functions * `$editChannel`: Can be used to modify other channel properties (name, topic, etc.). -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Channel/newTicket.md b/content/docs/(functions)/Channel/newTicket.mdx similarity index 79% rename from guide/Channel/newTicket.md rename to content/docs/(functions)/Channel/newTicket.mdx index 9787faaa..1fcfbd10 100644 --- a/guide/Channel/newTicket.md +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -1,4 +1,6 @@ -# $newTicket +--- +title: "$newTicket" +--- Create a new support ticket. This function allows users to easily open tickets for assistance, which can be closed later using the `$closeTicket` function. @@ -25,17 +27,24 @@ This command will: **Tips & Important Information:** -::: tip Ticket System + + Take advantage of pre-built ticket system templates! You can find and clone highly customizable button-based ticket systems directly from the [dashboard](https://ccommandbot.com/dashboard). These templates simplify the process of setting up a robust ticket system. -::: -::: warning Category Permissions + + + + By default, everyone can view the newly created ticket channel. To restrict access and maintain privacy, adjust the permissions of the ticket category. Specifically, **deny** the `View Channel` permission for the `@everyone` role within the ticket category. -::: -::: tip Note -Enhance your ticket messages by using embeds! Utilize the [Message Curl Format](../CodeReferences/ref.message_curl_format.md) to create rich, visually appealing messages within the ticket channel. -::: + + + + +Enhance your ticket messages by using embeds! Utilize the [Message Curl Format](/CodeReferences/ref.message_curl_format) to create rich, visually appealing messages within the ticket channel. + + + +**Function Difficulty:** -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Channel/removeContains.md b/content/docs/(functions)/Channel/removeContains.mdx similarity index 98% rename from guide/Channel/removeContains.md rename to content/docs/(functions)/Channel/removeContains.mdx index 45162088..34ea55bd 100644 --- a/guide/Channel/removeContains.md +++ b/content/docs/(functions)/Channel/removeContains.mdx @@ -1,4 +1,6 @@ -# $removeContains +--- +title: "$removeContains" +--- This function allows you to delete messages within a specified channel that contain certain words. It's useful for moderation and removing unwanted content. diff --git a/guide/Channel/serverChannels.md b/content/docs/(functions)/Channel/serverChannels.mdx similarity index 72% rename from guide/Channel/serverChannels.md rename to content/docs/(functions)/Channel/serverChannels.mdx index e8fb2eeb..48ced272 100644 --- a/guide/Channel/serverChannels.md +++ b/content/docs/(functions)/Channel/serverChannels.mdx @@ -1,4 +1,6 @@ -# $serverChannels +--- +title: "$serverChannels" +--- This function retrieves a list of all channels within the current server (guild). @@ -28,29 +30,35 @@ $serverChannels[info (optional, default: name); type (optional, default: all); s This example retrieves the names of all text channels in the server, separated by forward slashes. - - - !!exec $serverChannels[name;text;/] - - - channel1/channel2/channel3/channel4 - - + + +!!exec $serverChannels[name;text;/] + + +channel1/channel2/channel3/channel4 + + + + -::: tip Info * The `info` parameter determines what information you get for each channel. * The `type` parameter lets you filter the channels returned. -::: -::: tip Channel Types: + + + + * **all**: Returns all channels. * **text**: Returns only text channels. * **voice**: Returns only voice channels. * **category**: Returns only category channels. -::: -::: tip Related Functions + + + + * `$categoryChannels`: Get channels within a specific category. -::: \ No newline at end of file + + \ No newline at end of file diff --git a/guide/Channel/setChannelTopic.md b/content/docs/(functions)/Channel/setChannelTopic.mdx similarity index 96% rename from guide/Channel/setChannelTopic.md rename to content/docs/(functions)/Channel/setChannelTopic.mdx index 7a920415..6390e666 100644 --- a/guide/Channel/setChannelTopic.md +++ b/content/docs/(functions)/Channel/setChannelTopic.mdx @@ -1,4 +1,6 @@ -# $setChannelTopic +--- +title: "$setChannelTopic" +--- This command allows you to change the topic (also known as the channel description) of a text channel. diff --git a/guide/Channel/slowmode.md b/content/docs/(functions)/Channel/slowmode.mdx similarity index 97% rename from guide/Channel/slowmode.md rename to content/docs/(functions)/Channel/slowmode.mdx index 7978c0ca..0abe7fca 100644 --- a/guide/Channel/slowmode.md +++ b/content/docs/(functions)/Channel/slowmode.mdx @@ -1,4 +1,6 @@ -# $slowmode +--- +title: "$slowmode" +--- This command allows you to set or remove the slowmode in a specified channel. Slowmode limits how frequently users can send messages in that channel. diff --git a/guide/Channel/transcriptChannel.md b/content/docs/(functions)/Channel/transcriptChannel.mdx similarity index 98% rename from guide/Channel/transcriptChannel.md rename to content/docs/(functions)/Channel/transcriptChannel.mdx index 228ce5b9..7b6e36e2 100644 --- a/guide/Channel/transcriptChannel.md +++ b/content/docs/(functions)/Channel/transcriptChannel.mdx @@ -1,4 +1,6 @@ -# $transcriptChannel +--- +title: "$transcriptChannel" +--- This function generates an HTML file containing a transcript of the latest 100 messages from a specified channel and can optionally send the generated file to another channel. diff --git a/guide/Channel/useChannel.md b/content/docs/(functions)/Channel/useChannel.mdx similarity index 55% rename from guide/Channel/useChannel.md rename to content/docs/(functions)/Channel/useChannel.mdx index 6c670b7a..63223dee 100644 --- a/guide/Channel/useChannel.md +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -1,4 +1,6 @@ -# $useChannel +--- +title: "$useChannel" +--- This function allows you to specify a different channel for subsequent actions within your command. It essentially redirects where the following functions will execute. @@ -12,14 +14,14 @@ This example demonstrates how to send "Bye!" to a specific channel ID (802179504
- - - !!exec $sendMessage[Hi!] $useChannel[802179504147136552] $sendMessage[Bye!] /* Bye! will be sent in the channel ID provided. */ - - - Hi! - - + + +!!exec $sendMessage[Hi!] $useChannel[802179504147136552] $sendMessage[Bye!] /* Bye! will be sent in the channel ID provided. */ + + +Hi! + + **Explanation:** @@ -27,5 +29,6 @@ This example demonstrates how to send "Bye!" to a specific channel ID (802179504 2. `$useChannel[802179504147136552]`: Sets the channel to the one with the ID 802179504147136552. 3. `$sendMessage[Bye!]`: Sends the message "Bye!" to the channel specified by `$useChannel` (channel ID 802179504147136552). -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Function Difficulty:** + +**Tags:** diff --git a/guide/Channel/vcAfter.md b/content/docs/(functions)/Channel/vcAfter.mdx similarity index 93% rename from guide/Channel/vcAfter.md rename to content/docs/(functions)/Channel/vcAfter.mdx index e767f04c..3a677954 100644 --- a/guide/Channel/vcAfter.md +++ b/content/docs/(functions)/Channel/vcAfter.mdx @@ -1,4 +1,6 @@ -# $vcAfter +--- +title: "$vcAfter" +--- Returns the ID of the voice channel a user **joined** or **switched to**. This function is triggered **after** a user changes voice channels or joins a voice channel for the first time. diff --git a/guide/Channel/vcBefore.md b/content/docs/(functions)/Channel/vcBefore.mdx similarity index 98% rename from guide/Channel/vcBefore.md rename to content/docs/(functions)/Channel/vcBefore.mdx index 2968de91..3ab58574 100644 --- a/guide/Channel/vcBefore.md +++ b/content/docs/(functions)/Channel/vcBefore.mdx @@ -1,4 +1,6 @@ -# $vcBefore +--- +title: "$vcBefore" +--- The `$vcBefore` function returns the ID of the voice channel a user was previously in *before* a voice channel event occurred. This is particularly useful for voice channel join and leave triggers. diff --git a/guide/Channel/voiceChannelID.md b/content/docs/(functions)/Channel/voiceChannelID.mdx similarity index 81% rename from guide/Channel/voiceChannelID.md rename to content/docs/(functions)/Channel/voiceChannelID.mdx index 9f5ebc5a..be5a6121 100644 --- a/guide/Channel/voiceChannelID.md +++ b/content/docs/(functions)/Channel/voiceChannelID.mdx @@ -1,10 +1,16 @@ -# $voiceChannelID +--- +title: "$voiceChannelID" +--- + + + + -::: danger **This function is deprecated and should no longer be used!** Please use `$vcBefore` and `$vcAfter` instead. These functions provide more control and flexibility. -::: + + Returns the ID of the voice channel a user joined or left in a voice trigger event. If a user switches channels, this function will return the ID of the *new* channel they joined. @@ -16,7 +22,9 @@ $voiceChannelID ## Important Considerations -::: warning + + * This function **will not work** in the `Channel Creation/Deletion` trigger. Use `$eventChannelID` for those events. * `$voiceChannelID` is specifically designed for the `Voice Join/Leave` trigger. Using it in other triggers will not produce the desired result. For other triggers, use the more general `$channelID`. -::: \ No newline at end of file + + \ No newline at end of file diff --git a/guide/Cooldown/channelCooldown.md b/content/docs/(functions)/Cooldown/channelCooldown.mdx similarity index 58% rename from guide/Cooldown/channelCooldown.md rename to content/docs/(functions)/Cooldown/channelCooldown.mdx index 7d4be1ab..dbfd80f8 100644 --- a/guide/Cooldown/channelCooldown.md +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -1,4 +1,6 @@ -# $channelCooldown +--- +title: "$channelCooldown" +--- Sets a cooldown for a command in channel. @@ -16,22 +18,22 @@ $channelCooldown[time;error message] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - - - !!exec $channelCooldown[5m;You're on cooldown!]
- You're not on cooldown! -
- - You're not on cooldown! - - - !!exec $channelCooldown[5m;You're on cooldown! Still %mins%m remaining!]
- You're not on cooldown! -
- - You're on cooldown! Still 4m remaining! - -
+ + +!!exec $channelCooldown[5m;You're on cooldown!]
+You're not on cooldown! +
+ +You're not on cooldown! + + +!!exec $channelCooldown[5m;You're on cooldown! Still %mins%m remaining!]
+You're not on cooldown! +
+ +You're on cooldown! Still 4m remaining! + +
## Placeholders @@ -47,15 +49,20 @@ Available placeholders you can use in error message | `%timestamp%` | Timestamp of cooldown expiration in seconds | `1735689600` | | `%relative%` | Shows Discord relative timestamp (Automatically Updates) | `` - Displays: `in 1 day` | -::: warning Warning + + Place this function above the code you want to use cooldown for. All code before this function will be executed. -::: -::: tip Suggestion -You can send embeds, select menus and buttons by using the [message curl format](../CodeReferences/ref.message_curl_format.md). -::: + + + + +You can send embeds, select menus and buttons by using the [message curl format](/CodeReferences/ref.message_curl_format). + + ##### Related functions: `$cooldown` `$serverCooldown` -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx new file mode 100644 index 00000000..2f514ea9 --- /dev/null +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -0,0 +1,46 @@ +--- +title: "$clearCooldown" +--- + +Clears a cooldown set by cooldown function. + +**Type:** Clears or resets a pre-existing cooldown. + +## Usage + +```bash +$clearCooldown[type;id;token] +``` +1. **type** - (Optional) default value: `user`. Can be `user`, `channel` or `server`. The type of cooldown to clear. +2. **id** - (Optional) default value: `$authorID` if type is user. The ID of a user or channel to clear cooldown from. +3. **token** - (Optional) default value is the current command token, changing it means clearing another command cooldown +## Example + +#### Remove cooldown from a user + +How to remove cooldown from a user + + + +!!exec $cooldown[5m]
+$clearCooldown
+No cooldown +
+ +No cooldown + + +!!exec $cooldown[5m]
+$clearCooldown
+No cooldown 2nd try +
+ +No cooldown 2nd try + +
+ +##### Related functions: `$getCooldownTime` + +**Function difficulty:** + +**Tags:** diff --git a/guide/Cooldown/cooldown.md b/content/docs/(functions)/Cooldown/cooldown.mdx similarity index 61% rename from guide/Cooldown/cooldown.md rename to content/docs/(functions)/Cooldown/cooldown.mdx index 81860ff3..14172f2a 100644 --- a/guide/Cooldown/cooldown.md +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -1,4 +1,6 @@ -# $cooldown +--- +title: "$cooldown" +--- Sets a cooldown in a command for user. @@ -17,22 +19,22 @@ $cooldown[time;error message;userID] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - - - !!exec $cooldown[5m;You're on cooldown!]
- You're not on cooldown! -
- - You're not on cooldown! - - - !!exec $cooldown[5m;You're on cooldown! Still %mins%m remaining!]
- You're not on cooldown! -
- - You're on cooldown! Still 4m remaining! - -
+ + +!!exec $cooldown[5m;You're on cooldown!]
+You're not on cooldown! +
+ +You're not on cooldown! + + +!!exec $cooldown[5m;You're on cooldown! Still %mins%m remaining!]
+You're not on cooldown! +
+ +You're on cooldown! Still 4m remaining! + +
## Placeholders @@ -48,15 +50,20 @@ Available placeholders you can use in error message | `%timestamp%` | Timestamp of cooldown expiration in seconds | `1735689600` | | `%relative%` | Shows Discord relative timestamp (Automatically Updates) | `` - Displays: `in 1 day` | -::: warning Warning + + Place this function above the code you want to use cooldown for. All code before this function will be executed. -::: -::: tip Suggestion -You can send embeds, select menus and buttons by using the [message curl format](../CodeReferences/ref.message_curl_format.md). -::: + + + + +You can send embeds, select menus and buttons by using the [message curl format](/CodeReferences/ref.message_curl_format). + + ##### Related functions: `$channelCooldown` `$serverCooldown` -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Function Difficulty:** + +**Tags:** diff --git a/guide/Cooldown/getCooldownTime.md b/content/docs/(functions)/Cooldown/getCooldownTime.mdx similarity index 55% rename from guide/Cooldown/getCooldownTime.md rename to content/docs/(functions)/Cooldown/getCooldownTime.mdx index b9601dbf..1fe352c1 100644 --- a/guide/Cooldown/getCooldownTime.md +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -1,4 +1,6 @@ -# $getCooldownTime +--- +title: "$getCooldownTime" +--- Returns remaining time of a cooldown in miliseconds. @@ -17,21 +19,24 @@ $getCooldownTime[time;type;id;token] How to use $getCooldownTime - - - !!exec $channelCooldown[5m]
- $getCooldownTime[5m;channel;$channelID] -
- - 299937 - -
- -::: warning Note + + +!!exec $channelCooldown[5m]
+$getCooldownTime[5m;channel;$channelID] +
+ +299937 + +
+ + + The `time` argument in must exactly match the time in the original cooldown function used. Mismatched durations will result in incorrect cooldown checks. -::: + + ##### Related functions: `$clearCooldown` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Cooldown/meta.json b/content/docs/(functions)/Cooldown/meta.json new file mode 100644 index 00000000..11bfeecc --- /dev/null +++ b/content/docs/(functions)/Cooldown/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Cooldown functions", + "pages": [ + "..." + ] +} diff --git a/guide/Cooldown/serverCooldown.md b/content/docs/(functions)/Cooldown/serverCooldown.mdx similarity index 58% rename from guide/Cooldown/serverCooldown.md rename to content/docs/(functions)/Cooldown/serverCooldown.mdx index 2f038a55..c6f850a4 100644 --- a/guide/Cooldown/serverCooldown.md +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -1,4 +1,6 @@ -# $serverCooldown +--- +title: "$serverCooldown" +--- Sets a cooldown in a command for the whole server. @@ -16,22 +18,22 @@ $serverCooldown[time;error message] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - - - !!exec $serverCooldown[5m;You're on cooldown!]
- You're not on cooldown! -
- - You're not on cooldown! - - - !!exec $serverCooldown[5m;You're on cooldown! Still %mins%m remaining!]
- You're not on cooldown! -
- - You're on cooldown! Still 4m remaining! - -
+ + +!!exec $serverCooldown[5m;You're on cooldown!]
+You're not on cooldown! +
+ +You're not on cooldown! + + +!!exec $serverCooldown[5m;You're on cooldown! Still %mins%m remaining!]
+You're not on cooldown! +
+ +You're on cooldown! Still 4m remaining! + +
## Placeholders @@ -47,15 +49,20 @@ Available placeholders you can use in error message | `%timestamp%` | Timestamp of cooldown expiration in seconds | `1735689600` | | `%relative%` | Shows Discord relative timestamp (Automatically Updates) | `` - Displays: `in 1 day` | -::: warning Warning + + Place this function above the code you want to use cooldown for. All code before this function will be executed. -::: -::: tip Suggestion -You can send embeds, select menus and buttons by using the [message curl format](../CodeReferences/ref.message_curl_format.md). -::: + + + + +You can send embeds, select menus and buttons by using the [message curl format](/CodeReferences/ref.message_curl_format). + + ##### Related functions: `$serverCooldown` `$cooldown` -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Function Difficulty:** + +**Tags:** diff --git a/guide/Date/creationDate.md b/content/docs/(functions)/Date/creationDate.mdx similarity index 52% rename from guide/Date/creationDate.md rename to content/docs/(functions)/Date/creationDate.mdx index ce1c2d2c..e97bb03e 100644 --- a/guide/Date/creationDate.md +++ b/content/docs/(functions)/Date/creationDate.mdx @@ -1,4 +1,6 @@ -# $creationDate +--- +title: "$creationDate" +--- Retrieves the creation date of a Discord entity (channel, guild, emoji, user, or role) based on its ID. @@ -13,17 +15,20 @@ Retrieves the creation date of a Discord entity (channel, guild, emoji, user, or **Example:** - - - !!exec $creationDate[725721249652670555;date] - - - Thursday, June 25, 2020 02:37 PM - - + + +!!exec $creationDate[725721249652670555;date] + + +Thursday, June 25, 2020 02:37 PM + + -::: tip Timezone Information -Date functions default to the UTC timezone. To change this, see the [Timezone Configuration](./timezone.md) guide. -::: + + +Date functions default to the UTC timezone. To change this, see the [Timezone Configuration](/Date/timezone) guide. + + + +**Function Difficulty:** -##### Function Difficulty: diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx new file mode 100644 index 00000000..7bf2d4d5 --- /dev/null +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -0,0 +1,31 @@ +--- +title: "$dateStamp" +--- + +Returns the current Unix timestamp (the number of milliseconds that have elapsed since January 1, 1970 UTC). + +#### Usage: `$dateStamp[Return in Seconds (Yes/No)]` + +This function allows you to retrieve the current timestamp in either milliseconds or seconds. + +* **`Return in Seconds (Yes/No)`:** Specify whether you want the timestamp returned in seconds (enter `Yes`) or milliseconds (enter `No` or leave blank). + +
+ +**Example:** + + + +!!exec $dateStamp, $dateStamp[yes] + + +1630841854895, 1630841854 + + + +In this example, the first `$dateStamp` call returns the timestamp in milliseconds, while the second `$dateStamp[yes]` call returns the timestamp in seconds. + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Date/dateToTime.md b/content/docs/(functions)/Date/dateToTime.mdx similarity index 77% rename from guide/Date/dateToTime.md rename to content/docs/(functions)/Date/dateToTime.mdx index 6466c792..a4cf85e0 100644 --- a/guide/Date/dateToTime.md +++ b/content/docs/(functions)/Date/dateToTime.mdx @@ -1,4 +1,6 @@ -# $dateToTime +--- +title: "$dateToTime" +--- Converts a human-readable date string to milliseconds since the Unix epoch (January 1, 1970, 00:00:00 UTC). You can optionally use `$timezone` to specify a custom timezone for accurate conversion. @@ -16,15 +18,15 @@ $dateToTime[Date] This example converts the date `12-05-2000` to its corresponding timestamp in milliseconds. - - - !!exec $dateToTime[12-05-2000] - + + +!!exec $dateToTime[12-05-2000] + - - 975974400000 - - + +975974400000 + + **Explanation:** diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx new file mode 100644 index 00000000..6950d56c --- /dev/null +++ b/content/docs/(functions)/Date/day.mdx @@ -0,0 +1,34 @@ +--- +title: "$day" +--- + +Returns the current date. Optionally, you can also retrieve the day of the week. + +#### Usage: `$day[yes/no (optional)]` + +* **`$day`**: Returns the current date (day of the month). +* **`$day[yes]`**: Returns the current date (day of the month) followed by the day of the week. + +**Example:** + +
+ + + +!!exec $day $day[yes] + + +25 Saturday + + + + + +Date functions default to the UTC timezone. You can customize the timezone used by your bot. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Date/formatDate.md b/content/docs/(functions)/Date/formatDate.mdx similarity index 65% rename from guide/Date/formatDate.md rename to content/docs/(functions)/Date/formatDate.mdx index 1c0ee3cc..83e3fd2b 100644 --- a/guide/Date/formatDate.md +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -1,4 +1,6 @@ -# $formatDate +--- +title: "$formatDate" +--- Formats a date provided as milliseconds, a string, or an ISO string into a specified format. You can find a detailed explanation of the formatting syntax [here](https://momentjs.com/docs/#/parsing/string-format/). @@ -15,18 +17,18 @@ Formats a date provided as milliseconds, a string, or an ISO string into a speci
- - - !!exec $formatDate[$dateStamp] - $formatDate[$dateStamp;LLLL] - $formatDate[$dateStamp;dddd at hour HH] - - - Sunday, March 15 2020 - March 15 2020 1:00 PM - Sunday at hour 10 - - + + +!!exec $formatDate[$dateStamp] +$formatDate[$dateStamp;LLLL] +$formatDate[$dateStamp;dddd at hour HH] + + +Sunday, March 15 2020 +March 15 2020 1:00 PM +Sunday at hour 10 + + #### Date Input Options: @@ -48,9 +50,12 @@ Here are some common formatting options: * `dddd` - Day - Example: `Friday` * `HH` - Hour (24-hour format) - Example: `15` -::: tip Other Timezone -Date functions use the default UTC timezone. You can change this. [Learn More](./timezone.md) -::: + -##### Function difficulty: -###### Tags: \ No newline at end of file +Date functions use the default UTC timezone. You can change this. [Learn More](/Date/timezone) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx new file mode 100644 index 00000000..589c9c16 --- /dev/null +++ b/content/docs/(functions)/Date/hour.mdx @@ -0,0 +1,33 @@ +--- +title: "$hour" +--- + +This command returns the current hour (in 24-hour format). + +#### Usage: `$hour` + +**Example:** + +This example shows how to use the `$hour` command in a custom command. + +
+ + + +!!exec $hour + + +19 + + + + + +Date functions use the UTC timezone by default. You can change the timezone for your bot. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Date/humanizeMS.md b/content/docs/(functions)/Date/humanizeMS.mdx similarity index 83% rename from guide/Date/humanizeMS.md rename to content/docs/(functions)/Date/humanizeMS.mdx index 853aff9c..7f78b160 100644 --- a/guide/Date/humanizeMS.md +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -1,4 +1,6 @@ -# $humanizeMS +--- +title: "$humanizeMS" +--- Converts milliseconds into a human-readable duration string. This function is useful for displaying elapsed time or time remaining in a user-friendly format. @@ -46,9 +48,12 @@ In this example: 1 year and 0 months ``` -::: tip Other Timezones -Date functions by default use the UTC timezone, but you can change it. [Learn More](./timezone.md) -::: + -##### Function Difficulty: -###### Tags: \ No newline at end of file +Date functions by default use the UTC timezone, but you can change it. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Date/memberJoinedCode.md b/content/docs/(functions)/Date/memberJoinedCode.mdx similarity index 51% rename from guide/Date/memberJoinedCode.md rename to content/docs/(functions)/Date/memberJoinedCode.mdx index f6b03b08..b69ca293 100644 --- a/guide/Date/memberJoinedCode.md +++ b/content/docs/(functions)/Date/memberJoinedCode.mdx @@ -1,4 +1,6 @@ -# $memberJoinedCode +--- +title: "$memberJoinedCode" +--- retrieve the invite code, which the user join from @@ -17,11 +19,11 @@ $memberJoinedCode[User ID;Info Type (default code)] * `inviter`: return the inviter id if exists ### Example: - - - !!exec You were invited by $memberJoinedCode[$userID;inviter]

-
- - You were invited by 123456789987654 - -
\ No newline at end of file + + +!!exec You were invited by $memberJoinedCode[$userID;inviter]

+
+ +You were invited by 123456789987654 + +
\ No newline at end of file diff --git a/guide/Date/memberJoinedDate.md b/content/docs/(functions)/Date/memberJoinedDate.mdx similarity index 82% rename from guide/Date/memberJoinedDate.md rename to content/docs/(functions)/Date/memberJoinedDate.mdx index bff587ae..3d447f94 100644 --- a/guide/Date/memberJoinedDate.md +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -1,4 +1,6 @@ -# $memberJoinedDate +--- +title: "$memberJoinedDate" +--- Retrieves the date and time a member joined the server. You can specify a user ID or use it without any arguments to get the join date of the command executor. @@ -35,10 +37,13 @@ Retrieves the date and time a member joined the server. You can specify a user I ``` -::: tip Timezone Information -Date functions default to UTC timezone. You can customize the timezone by following the instructions [here](./timezone.md). -::: + -##### Function Difficulty: +Date functions default to UTC timezone. You can customize the timezone by following the instructions [here](/Date/timezone). -###### Tags: \ No newline at end of file + + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Date/meta.json b/content/docs/(functions)/Date/meta.json new file mode 100644 index 00000000..5a89dd04 --- /dev/null +++ b/content/docs/(functions)/Date/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Date Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx new file mode 100644 index 00000000..e641004b --- /dev/null +++ b/content/docs/(functions)/Date/minute.mdx @@ -0,0 +1,35 @@ +--- +title: "$minute" +--- + +Returns the current minute (0-59). + +#### Usage: + +```php +$minute +``` + +**Example:** + +This example demonstrates how to use the `$minute` function to display the current minute. + + + +!!exec $minute + + +23 + + + + + +By default, date and time functions use the UTC timezone. You can change the timezone used. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Date/month.md b/content/docs/(functions)/Date/month.mdx similarity index 79% rename from guide/Date/month.md rename to content/docs/(functions)/Date/month.mdx index 5e506f86..853740e9 100644 --- a/guide/Date/month.md +++ b/content/docs/(functions)/Date/month.mdx @@ -1,4 +1,6 @@ -# $month +--- +title: "$month" +--- Returns the current month's number or name. @@ -27,9 +29,12 @@ This function allows you to retrieve the current month in either its numerical r * The first `$month` returns the numerical representation of the current month (in this case, 11 for November). * The second `$month[yes]` returns the name of the current month (November). -::: tip Timezone Information -Date functions default to using the UTC timezone. You can change the timezone used by the bot. [Learn More](./timezone.md) -::: + -##### Function Difficulty: -###### Tags: \ No newline at end of file +Date functions default to using the UTC timezone. You can change the timezone used by the bot. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx new file mode 100644 index 00000000..064fc846 --- /dev/null +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -0,0 +1,36 @@ +--- +title: "$parseDate" +--- + +Converts milliseconds into a human-readable date or time format. + +#### Usage: `$parseDate[milliseconds; format]` + +**Arguments:** + +* `milliseconds`: The number of milliseconds to convert. +* `format`: Specifies the desired output format. Use `date` to get a formatted date or `time` to get a formatted time duration. + +
+ +**Example:** + +This example demonstrates converting 1000 milliseconds to a time duration. + + + +!!exec $parseDate[1000;time] + + +1 second + + + +**Explanation:** + +The command `$parseDate[1000;time]` converts 1000 milliseconds to a time format, resulting in the output "1 second". + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Date/parseTime.mdx b/content/docs/(functions)/Date/parseTime.mdx new file mode 100644 index 00000000..406463a6 --- /dev/null +++ b/content/docs/(functions)/Date/parseTime.mdx @@ -0,0 +1,73 @@ +--- +title: "$parseTime" +--- + +Convert human-readable time strings into a duration. This function accepts a single duration or multiple durations combined into one expression, and can optionally return the result in a different unit. + +## Usage + +```php +$parseTime[time;unit?] +``` + +**Arguments:** + +* `time`: A time duration to convert. Supported units include: + + * `ms` — milliseconds + * `s` — seconds + * `m` — minutes + * `h` — hours + * `d` — days + * `w` — weeks + * `M` — months (30 days) + * `y` — years (365 days) + +* `unit` *(optional)*: The unit to return. Supported values are `ms`, `s`, `m`, `h`, `d`, `w`, `M`, `y`, or their full names (such as `seconds`, `hours`, and `days`). Defaults to `ms`. + +Multiple durations can be combined by separating them with spaces. As a convenience, compact expressions without spaces are also supported. + +## Examples + + + +!!exec $parseTime[1m] + + +60000 + + + + + +!!exec $parseTime[1h 30m] + + +5400000 + + + + + +!!exec $parseTime[1h30m] + + +5400000 + + + + + +!!exec $parseTime[1h30m;m] + + +90 + + + +**Explanation:** + +* `$parseTime[1m]` converts 1 minute into `60000` milliseconds. +* `$parseTime[1h 30m]` converts 1 hour and 30 minutes into `5400000` milliseconds. +* `$parseTime[1h30m]` is interpreted the same way as `1h 30m` for convenience. +* `$parseTime[1h30m;m]` returns the result in minutes instead of milliseconds. diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx new file mode 100644 index 00000000..e6d60e67 --- /dev/null +++ b/content/docs/(functions)/Date/second.mdx @@ -0,0 +1,32 @@ +--- +title: "$second" +--- + +Returns the current second (0-59). + +#### Usage: `$second` + +This function is simple! It just retrieves the current second of the minute. + +**Example:** + +
+ + + +!!exec $second + + +56 + + + + + +Date functions default to using UTC timezone. You can change this if needed. [Learn More about Timezones](/Date/timezone) + + + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Date/timeStamp.md b/content/docs/(functions)/Date/timeStamp.mdx similarity index 56% rename from guide/Date/timeStamp.md rename to content/docs/(functions)/Date/timeStamp.mdx index 3702d0be..92d7fe3a 100644 --- a/guide/Date/timeStamp.md +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -1,4 +1,6 @@ -# $timeStamp +--- +title: "$timeStamp" +--- Returns the current Unix timestamp (the number of milliseconds that have elapsed since January 1, 1970, 00:00:00 UTC). @@ -16,20 +18,21 @@ Returns the current Unix timestamp (the number of milliseconds that have elapsed **Example:** - - - !!exec $timeStamp, $timestamp[yes] - - - 1630841854895, 1630841854 - - + + +!!exec $timeStamp, $timestamp[yes] + + +1630841854895, 1630841854 + + **Explanation of the example:** * The first value `1630841854895` is the current time in milliseconds. * The second value `1630841854` is the current time in seconds because we specified `yes` in the function call. -##### Function difficulty: +**Function difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Date/timeToDate.md b/content/docs/(functions)/Date/timeToDate.mdx similarity index 51% rename from guide/Date/timeToDate.md rename to content/docs/(functions)/Date/timeToDate.mdx index 46380835..b0f50fd5 100644 --- a/guide/Date/timeToDate.md +++ b/content/docs/(functions)/Date/timeToDate.mdx @@ -1,4 +1,6 @@ -# $timeToDate +--- +title: "$timeToDate" +--- Convert a Unix timestamp (milliseconds since January 1, 1970 UTC) into a formatted date string. This function respects the timezone configured via the `$timeZone` function. @@ -17,15 +19,17 @@ $timeToDate[Timestamp;Format (optional)] This example converts the current timestamp (obtained using `$timeStamp`) to a `YYYY-MM-DD` format. - - - !!exec $timeToDate[$timeStamp;%y%-%m%-%d%] - - - 2022-03-12 - - - -::: tip Accepted Time Formats -For a comprehensive list of accepted time format specifiers, refer to [this reference](../CodeReferences/ref.time_format.md). These specifiers allow you to customize the output to display the date and time in various formats. -::: \ No newline at end of file + + +!!exec $timeToDate[$timeStamp;%y%-%m%-%d%] + + +2022-03-12 + + + + + +For a comprehensive list of accepted time format specifiers, refer to [this reference](/CodeReferences/ref.time_format). These specifiers allow you to customize the output to display the date and time in various formats. + + \ No newline at end of file diff --git a/guide/Date/timezone.md b/content/docs/(functions)/Date/timezone.mdx similarity index 69% rename from guide/Date/timezone.md rename to content/docs/(functions)/Date/timezone.mdx index ab0ca61f..3b80247c 100644 --- a/guide/Date/timezone.md +++ b/content/docs/(functions)/Date/timezone.mdx @@ -1,4 +1,6 @@ -# $timezone +--- +title: "$timezone" +--- This function sets the timezone used by subsequent date and time functions within your command. Think of it as changing the "local time" for your bot's calculations. @@ -19,18 +21,18 @@ Or you can use `UTC+hh:mm` or `UTC-hh:mm` to specify a certain offset like `UTC+ This example demonstrates how `$timezone` changes the output of the `$hour` function. - - - !!exec - UTC $hour - after Change $timezone[Europe/Zurich] - Europe/Zurich $hour - - - UTC 10 - after Change Europe/Zurich 12 - - + + +!!exec +UTC $hour +after Change $timezone[Europe/Zurich] +Europe/Zurich $hour + + +UTC 10 +after Change Europe/Zurich 12 + + In this example: @@ -39,4 +41,5 @@ In this example: * Then, `$timezone[Europe/Zurich]` sets the timezone to Zurich. * Finally, `$hour` is called again, now returning the hour in the Europe/Zurich timezone, which is UTC+2 (or UTC+1 during standard time). -##### Function difficulty: +**Function difficulty:** + diff --git a/guide/Date/upvoteTime.md b/content/docs/(functions)/Date/upvoteTime.mdx similarity index 87% rename from guide/Date/upvoteTime.md rename to content/docs/(functions)/Date/upvoteTime.mdx index 27a674c0..e21a85f4 100644 --- a/guide/Date/upvoteTime.md +++ b/content/docs/(functions)/Date/upvoteTime.mdx @@ -1,4 +1,6 @@ -# $upvoteTime +--- +title: "$upvoteTime" +--- Returns the time when the current upvote was received. diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx new file mode 100644 index 00000000..43bfe0f1 --- /dev/null +++ b/content/docs/(functions)/Date/year.mdx @@ -0,0 +1,37 @@ +--- +title: "$year" +--- + +Get the current year. + +This command returns the current year based on the configured timezone (default is UTC). + +#### Usage: + +```php +$year +``` + +**Example:** + +Here's how to use the `$year` command in a Discord message: + + + +!!exec $year + + +2021 + + + + + +Date functions default to the UTC timezone. You can customize the timezone used by your commands. [Learn More](/Date/timezone) + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Events/eventCreate.md b/content/docs/(functions)/Events/eventCreate.mdx similarity index 98% rename from guide/Events/eventCreate.md rename to content/docs/(functions)/Events/eventCreate.mdx index 4e6e21a7..7df5293a 100644 --- a/guide/Events/eventCreate.md +++ b/content/docs/(functions)/Events/eventCreate.mdx @@ -1,4 +1,6 @@ -# $eventCreate +--- +title: "$eventCreate" +--- Creates a scheduled event on your server. diff --git a/guide/Events/eventDelete.md b/content/docs/(functions)/Events/eventDelete.mdx similarity index 97% rename from guide/Events/eventDelete.md rename to content/docs/(functions)/Events/eventDelete.mdx index 99099d26..305148d4 100644 --- a/guide/Events/eventDelete.md +++ b/content/docs/(functions)/Events/eventDelete.mdx @@ -1,4 +1,6 @@ -# $eventDelete +--- +title: "$eventDelete" +--- Deletes an existing scheduled event. diff --git a/guide/Events/eventEdit.md b/content/docs/(functions)/Events/eventEdit.mdx similarity index 98% rename from guide/Events/eventEdit.md rename to content/docs/(functions)/Events/eventEdit.mdx index fc1a9ffc..3b7614bf 100644 --- a/guide/Events/eventEdit.md +++ b/content/docs/(functions)/Events/eventEdit.mdx @@ -1,4 +1,6 @@ -# $eventEdit +--- +title: "$eventEdit" +--- Edit an existing scheduled event using its ID. diff --git a/guide/Events/eventEnd.md b/content/docs/(functions)/Events/eventEnd.mdx similarity index 96% rename from guide/Events/eventEnd.md rename to content/docs/(functions)/Events/eventEnd.mdx index 34929f36..65ad2129 100644 --- a/guide/Events/eventEnd.md +++ b/content/docs/(functions)/Events/eventEnd.mdx @@ -1,4 +1,6 @@ -# $eventEnd +--- +title: "$eventEnd" +--- Ends an active event using its unique ID. diff --git a/guide/Events/eventExists.md b/content/docs/(functions)/Events/eventExists.mdx similarity index 60% rename from guide/Events/eventExists.md rename to content/docs/(functions)/Events/eventExists.mdx index d62e3503..cc215ce6 100644 --- a/guide/Events/eventExists.md +++ b/content/docs/(functions)/Events/eventExists.mdx @@ -1,4 +1,6 @@ -# $eventExists +--- +title: "$eventExists" +--- Checks if an event with the specified ID exists. @@ -16,14 +18,14 @@ $eventExists[event id] This example demonstrates using `$eventExists` to check for an event with an invalid ID. - - - !!exec $eventExists[Invalid event id] - - - false - - + + +!!exec $eventExists[Invalid event id] + + +false + + **Explanation:** diff --git a/guide/Events/eventStart.md b/content/docs/(functions)/Events/eventStart.mdx similarity index 96% rename from guide/Events/eventStart.md rename to content/docs/(functions)/Events/eventStart.mdx index 11197c69..1f9f9774 100644 --- a/guide/Events/eventStart.md +++ b/content/docs/(functions)/Events/eventStart.mdx @@ -1,4 +1,6 @@ -# $eventStart +--- +title: "$eventStart" +--- Starts a scheduled event using its ID. diff --git a/guide/Events/getEventInfo.md b/content/docs/(functions)/Events/getEventInfo.mdx similarity index 92% rename from guide/Events/getEventInfo.md rename to content/docs/(functions)/Events/getEventInfo.mdx index 35d71962..fec8fd8f 100644 --- a/guide/Events/getEventInfo.md +++ b/content/docs/(functions)/Events/getEventInfo.mdx @@ -1,4 +1,6 @@ -# $getEventInfo +--- +title: "$getEventInfo" +--- Retrieves information about a specific event within a guild (server). @@ -39,11 +41,11 @@ $getEventInfo[event id;info type] !!exec $getEventinfo[123456789123456789;name] ``` - - - !!exec $getEventinfo[123456789123456789;name] - - - Event Name - - + + +!!exec $getEventinfo[123456789123456789;name] + + +Event Name + + diff --git a/guide/Events/getEventUsers.md b/content/docs/(functions)/Events/getEventUsers.mdx similarity index 66% rename from guide/Events/getEventUsers.md rename to content/docs/(functions)/Events/getEventUsers.mdx index 4ec6769c..6d28d440 100644 --- a/guide/Events/getEventUsers.md +++ b/content/docs/(functions)/Events/getEventUsers.mdx @@ -1,4 +1,6 @@ -# $getEventUsers +--- +title: "$getEventUsers" +--- Retrieves a list of users who have expressed interest in a specific event. @@ -17,14 +19,14 @@ $getEventUsers[event id;separator (default is ', ')] This example demonstrates how to retrieve the users interested in an event with the ID `123456789123456789`. - - - !!exec $getEventUsers[123456789123456789] - - - 123456789, 987654321 - - + + +!!exec $getEventUsers[123456789123456789] + + +123456789, 987654321 + + **Explanation:** diff --git a/guide/Events/guildEvents.md b/content/docs/(functions)/Events/guildEvents.mdx similarity index 70% rename from guide/Events/guildEvents.md rename to content/docs/(functions)/Events/guildEvents.mdx index 794d6088..650e10e0 100644 --- a/guide/Events/guildEvents.md +++ b/content/docs/(functions)/Events/guildEvents.mdx @@ -1,4 +1,6 @@ -# $guildEvents +--- +title: "$guildEvents" +--- Retrieve a list of events happening in your Discord server. @@ -36,11 +38,11 @@ This example retrieves the names of all active events in the server, separated b **Result:** - - - !!exec $guildEvents[name;active;/] - - - Event 1/Event 2 - - \ No newline at end of file + + +!!exec $guildEvents[name;active;/] + + +Event 1/Event 2 + + \ No newline at end of file diff --git a/content/docs/(functions)/Events/meta.json b/content/docs/(functions)/Events/meta.json new file mode 100644 index 00000000..22d35ce3 --- /dev/null +++ b/content/docs/(functions)/Events/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Event Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Image/imageBorderRad.md b/content/docs/(functions)/Image/imageBorderRad.mdx similarity index 74% rename from guide/Image/imageBorderRad.md rename to content/docs/(functions)/Image/imageBorderRad.mdx index 474e0c7b..6d2fb2b9 100644 --- a/guide/Image/imageBorderRad.md +++ b/content/docs/(functions)/Image/imageBorderRad.mdx @@ -1,4 +1,6 @@ -# $imageBorderRad +--- +title: "$imageBorderRad" +--- Control the border radius of a filled box created with $imageFill. This allows you to round the corners of your shapes for softer, more visually appealing designs. @@ -24,15 +26,15 @@ $imageBorderRad[top-left corner radius; top-right corner radius; bottom-right co This example demonstrates how to draw a red circle in the center of a 300x300 pixel image using `$imageBorderRad` in conjunction with `$imageCreate` and `$imageFill`. - - - !!exec $imageCreate[300;300]
$imageBorderRad[50]
$imageFill[red;100;100;100;100]
$image[$imageOutput]

-
- - - - -
+ + +!!exec $imageCreate[300;300]
$imageBorderRad[50]
$imageFill[red;100;100;100;100]
$image[$imageOutput]

+
+ + + + +
**Breakdown of the command:** diff --git a/guide/Image/imageCreate.md b/content/docs/(functions)/Image/imageCreate.mdx similarity index 54% rename from guide/Image/imageCreate.md rename to content/docs/(functions)/Image/imageCreate.mdx index bd05959e..867bf28d 100644 --- a/guide/Image/imageCreate.md +++ b/content/docs/(functions)/Image/imageCreate.mdx @@ -1,4 +1,6 @@ -# $imageCreate +--- +title: "$imageCreate" +--- Creates a new, blank image with specified dimensions. @@ -27,12 +29,12 @@ $imageFill[red] $image[$imageOutput] ``` - - - !!exec $imageCreate[300;300]
$imageFill[red]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300]
$imageFill[red]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/content/docs/(functions)/Image/imageCrop.mdx b/content/docs/(functions)/Image/imageCrop.mdx new file mode 100644 index 00000000..3163497d --- /dev/null +++ b/content/docs/(functions)/Image/imageCrop.mdx @@ -0,0 +1,21 @@ +--- +title: "$imageCrop" +--- + +Crop a defined image from image builder + +## Usage + +```bash +$imageCrop[image name;x;y;width;height] +``` + +### Example: + + +!!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
$imageCrop[avatar;0;0;100;100] // crop the image from position (0, 0) with size 100
$imageDraw[avatar]
$image[$imageOutput]

+
+ +[image] + +
\ No newline at end of file diff --git a/guide/Image/imageDraw.md b/content/docs/(functions)/Image/imageDraw.mdx similarity index 59% rename from guide/Image/imageDraw.md rename to content/docs/(functions)/Image/imageDraw.mdx index c48b30c1..5abd829d 100644 --- a/guide/Image/imageDraw.md +++ b/content/docs/(functions)/Image/imageDraw.mdx @@ -1,4 +1,6 @@ -# $imageDraw +--- +title: "$imageDraw" +--- Draws a loaded image onto the current image. This allows you to composite images together. @@ -19,22 +21,22 @@ $imageDraw[image name;x;y;width;height;opacity] # Position: X & Y -For more detailed information on how X and Y coordinates work within image manipulation, please see: [Position (X & Y)](./../CodeReferences/ref.imgbuild.position.md) +For more detailed information on how X and Y coordinates work within image manipulation, please see: [Position (X & Y)](/CodeReferences/ref.imgbuild.position) # Size: Width & Height -For more detailed information on how Width and Height work within image manipulation (including scaling), please see: [Size (Width & Height)](./../CodeReferences/ref.imgbuild.size.md) +For more detailed information on how Width and Height work within image manipulation (including scaling), please see: [Size (Width & Height)](/CodeReferences/ref.imgbuild.size) ### Example: This example creates a 300x300 image, loads the author's avatar, draws it onto the created image, and then outputs the result. - - - !!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load Avatar as "avatar"
$imageDraw[avatar;0;0;300;300] // Draw "avatar" at (0,0) with width 300 and height 300
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load Avatar as "avatar"
$imageDraw[avatar;0;0;300;300] // Draw "avatar" at (0,0) with width 300 and height 300
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageDrawBack.md b/content/docs/(functions)/Image/imageDrawBack.mdx similarity index 63% rename from guide/Image/imageDrawBack.md rename to content/docs/(functions)/Image/imageDrawBack.mdx index 63822716..c21c7e57 100644 --- a/guide/Image/imageDrawBack.md +++ b/content/docs/(functions)/Image/imageDrawBack.mdx @@ -1,4 +1,6 @@ -# $imageDrawBack +--- +title: "$imageDrawBack" +--- Draws a loaded image behind the current image. This allows you to layer images and create more complex visuals. @@ -19,11 +21,11 @@ $imageDrawBack[image name;x;y;width;height;opacity] # Position: X & Y -For a more detailed explanation of X and Y coordinates, refer to this resource: [X & Y Position Reference](./../CodeReferences/ref.imgbuild.position.md) +For a more detailed explanation of X and Y coordinates, refer to this resource: [X & Y Position Reference](/CodeReferences/ref.imgbuild.position) # Size: Width & Height -For a more detailed explanation of Width and Height, refer to this resource: [Width & Height Reference](./../CodeReferences/ref.imgbuild.size.md) +For a more detailed explanation of Width and Height, refer to this resource: [Width & Height Reference](/CodeReferences/ref.imgbuild.size) ### Example: @@ -38,12 +40,12 @@ $imageDrawBack[avatar;50;50;200;200] $image[$imageOutput] ``` - - - !!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
$imageFill[gray]
$imageFill[transparent;100;100;100;100]
$imageDrawBack[avatar;50;50;200;200]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
$imageFill[gray]
$imageFill[transparent;100;100;100;100]
$imageDrawBack[avatar;50;50;200;200]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/content/docs/(functions)/Image/imageFill.mdx b/content/docs/(functions)/Image/imageFill.mdx new file mode 100644 index 00000000..dc56d269 --- /dev/null +++ b/content/docs/(functions)/Image/imageFill.mdx @@ -0,0 +1,59 @@ +--- +title: "$imageFill" +--- + +Fill a portion of an image with a specified color. + +## Usage + +```bash +$imageFill[color;x;y;width;height;opacity] +``` + +| Parameter | Description | Required | +| :-------- | :---------------------------------------------------------------------------------------------------------------------------- | :------- | +| `color` | The color to fill with. Can be a hex code (e.g., `#FF0000`) or a common color name (e.g., `gray`, `black`, `red`). | Yes | +| `x` | The x-coordinate of the top-left corner of the rectangle to fill. See [Positioning](/CodeReferences/ref.imgbuild.position) for more details. | No | +| `y` | The y-coordinate of the top-left corner of the rectangle to fill. See [Positioning](/CodeReferences/ref.imgbuild.position) for more details. | No | +| `width` | The width of the rectangle to fill. See [Sizing](/CodeReferences/ref.imgbuild.size) for more details. | No | +| `height` | The height of the rectangle to fill. See [Sizing](/CodeReferences/ref.imgbuild.size) for more details. | No | +| `opacity` | The opacity of the fill color (0-1, where 0 is fully transparent and 1 is fully opaque). Defaults to 1 if omitted. | No | + +## Examples + +### Example 1: Fill the entire image with gray. + +``` +!!exec $imageCreate[300;300] +$imageFill[gray] +$image[$imageOutput] +``` + + + +!!exec $imageCreate[300;300]
$imageFill[gray]
$image[$imageOutput]

+
+ + + + +
+ +### Example 2: Fill a 50x50 rectangle at (100, 100) with red. + +``` +!!exec $imageCreate[300;300] +$imageFill[gray] +$imageFill[red;100;100;50;50] +$image[$imageOutput] +``` + + + +!!exec $imageCreate[300;300]
$imageFill[gray]
$imageFill[red;100;100;50;50]
$image[$imageOutput]

+
+ + + + +
diff --git a/guide/Image/imageHeight.md b/content/docs/(functions)/Image/imageHeight.mdx similarity index 95% rename from guide/Image/imageHeight.md rename to content/docs/(functions)/Image/imageHeight.mdx index 3e748f40..0e9dad40 100644 --- a/guide/Image/imageHeight.md +++ b/content/docs/(functions)/Image/imageHeight.mdx @@ -1,4 +1,6 @@ -# $imageHeight +--- +title: "$imageHeight" +--- Retrieves the height of an image stored within the bot's memory. This function allows you to dynamically access the height of images based on their assigned name. diff --git a/guide/Image/imageLineHeight.md b/content/docs/(functions)/Image/imageLineHeight.mdx similarity index 69% rename from guide/Image/imageLineHeight.md rename to content/docs/(functions)/Image/imageLineHeight.mdx index 5f1f1011..bbea4f8b 100644 --- a/guide/Image/imageLineHeight.md +++ b/content/docs/(functions)/Image/imageLineHeight.mdx @@ -1,4 +1,6 @@ -# $imageLineHeight +--- +title: "$imageLineHeight" +--- Adjust the line height used when drawing text within the image builder. The default line height is 1.5. @@ -31,11 +33,11 @@ This will change the line height used for text in future image builder commands. To retrieve the current line height, use the command without any parameters: - - - !!exec $imageLineHeight - - - 1.3 - - \ No newline at end of file + + +!!exec $imageLineHeight + + +1.3 + + \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageLoadEmoji.mdx b/content/docs/(functions)/Image/imageLoadEmoji.mdx new file mode 100644 index 00000000..e609826e --- /dev/null +++ b/content/docs/(functions)/Image/imageLoadEmoji.mdx @@ -0,0 +1,48 @@ +--- +title: "$imageLoadEmoji" +--- + +Loads an emoji (either a standard Unicode emoji or a custom Discord emoji) for use in image drawing. This allows you to easily add emojis to your images. + +## Usage + +```bash +$imageLoadEmoji[id;Emoji] +``` + +**Parameters:** + +* `id`: A unique identifier for the loaded emoji. You'll use this ID in the `$imageDraw` function to reference the emoji. Choose something descriptive and easy to remember. +* `Emoji`: The emoji you want to load. This can be either: + * A standard Unicode emoji (e.g., `:smile:`, `:heart:`) + * A custom Discord emoji in the format `<:emoji_name:emoji_id>` (e.g., `<:custom_emoji:123456789012345678>`). You can get the custom emoji format by typing the emoji in Discord and escaping it with a backslash (`\`), like this: `\:custom_emoji:` + +## Examples + +**Example 1: Loading and drawing a standard Unicode emoji** + +This example creates a 300x300 image, loads the `:cheese:` emoji, fills a gray rectangle, and then draws the cheese emoji on top. + + + +!!exec $imageCreate[300;300]
$imageLoadEmoji[mycheese;:cheese:]
$imageBorderRad[100]
$imageFill[gray;50;50;200;200]
$imageDraw[mycheese;100;100;100;100]
$image[$imageOutput]

+
+ + + + +
+ +**Example 2: Loading and drawing both a standard and a custom emoji** + +This example creates a 600x600 image, loads both a custom Discord emoji (using its ID) and the `:cheese:` emoji, and draws them both. + + + +!!exec $imageCreate[600;600]
$imageLoadEmoji[seed;<:seed:1149808771888062605>]
$imageLoadEmoji[cheese;:cheese:]
$imageBorderRad[100]
$imageFill[gray;50;200;200;200]
$imageFill[gray;350;200;200;200]
$imageDraw[cheese;100;250;100;100]
$imageDraw[seed;400;250;100;100]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageLoadFromURL.md b/content/docs/(functions)/Image/imageLoadFromURL.mdx similarity index 73% rename from guide/Image/imageLoadFromURL.md rename to content/docs/(functions)/Image/imageLoadFromURL.mdx index 8ea0f49b..bd26d807 100644 --- a/guide/Image/imageLoadFromURL.md +++ b/content/docs/(functions)/Image/imageLoadFromURL.mdx @@ -1,4 +1,6 @@ -# $imageLoadFromURL +--- +title: "$imageLoadFromURL" +--- Loads an image from a URL and saves it with a reference name for later use in other image manipulation functions. @@ -15,18 +17,18 @@ $imageLoadFromURL[name;URL] This example creates a 300x300 image, loads the author's avatar from their profile picture, and then draws the avatar onto the newly created image. - - - !!exec $imageCreate[300;300] // Create Image Frame
- $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load the author's avatar
- $imageDraw[avatar;0;0;300;300] // Draw the avatar onto the image frame
- $image[$imageOutput] // Output the resulting image

-
- - - - -
+ + +!!exec $imageCreate[300;300] // Create Image Frame
+$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load the author's avatar
+$imageDraw[avatar;0;0;300;300] // Draw the avatar onto the image frame
+$image[$imageOutput] // Output the resulting image

+
+ + + + +
**Explanation:** diff --git a/guide/Image/imageOutput.md b/content/docs/(functions)/Image/imageOutput.mdx similarity index 98% rename from guide/Image/imageOutput.md rename to content/docs/(functions)/Image/imageOutput.mdx index d5501a38..8b369ff8 100644 --- a/guide/Image/imageOutput.md +++ b/content/docs/(functions)/Image/imageOutput.mdx @@ -1,4 +1,6 @@ -# $imageOutput +--- +title: "$imageOutput" +--- This function saves the current image being drawn into a file and returns the filename. This filename can then be used within other functions like `$image` or within the `{image:...}` tag in functions like `$sendMessage`. diff --git a/guide/Image/imagePositionBase.md b/content/docs/(functions)/Image/imagePositionBase.mdx similarity index 57% rename from guide/Image/imagePositionBase.md rename to content/docs/(functions)/Image/imagePositionBase.mdx index 5ab12aa3..ad06ee0c 100644 --- a/guide/Image/imagePositionBase.md +++ b/content/docs/(functions)/Image/imagePositionBase.mdx @@ -1,4 +1,6 @@ -# $imagePositionBase +--- +title: "$imagePositionBase" +--- Control the base position for drawing images or objects. By default, the base position is `topleft`. This allows you to easily position elements relative to the top-left, center, or bottom-right of your image. @@ -30,11 +32,12 @@ The following values are accepted for the `Base` parameter: This example creates an image, sets the base position to `centerleft`, draws a white square, then sets the base position to `centerright` and draws a red square. - - - !!exec $imageCreate[300;300]
$imagePositionBase[centerleft]
$imageFill[white;center;center;100;100]
$imagePositionBase[centerright]
$imageFill[red;center;center;100;100]
$image[$imageOutput]

-
- - - -
+ + +!!exec $imageCreate[300;300]
$imagePositionBase[centerleft]
$imageFill[white;center;center;100;100]
$imagePositionBase[centerright]
$imageFill[red;center;center;100;100]
$image[$imageOutput]

+
+ + + + +
diff --git a/guide/Image/imageSetOpacity.md b/content/docs/(functions)/Image/imageSetOpacity.mdx similarity index 61% rename from guide/Image/imageSetOpacity.md rename to content/docs/(functions)/Image/imageSetOpacity.mdx index af6efc23..ce4c4603 100644 --- a/guide/Image/imageSetOpacity.md +++ b/content/docs/(functions)/Image/imageSetOpacity.mdx @@ -1,4 +1,6 @@ -# $imageSetOpacity +--- +title: "$imageSetOpacity" +--- Sets the global opacity for all subsequent drawing operations performed by the image builder. This allows you to control the transparency of elements added to your image. @@ -38,12 +40,12 @@ $imageDraw[avatar;100;190;100;100] $image[$imageOutput] ``` - - - !!exec ?exec $let[avatar;$replaceText[$authoravatar;.webp;.png]]
$imageCreate[300;300]
$imageLoadFromURL[avatar;$avatar]
$imageDraw[avatar;100;10;100;100]
$imageSetOpacity[50]
$imageDraw[avatar;100;190;100;100]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + +!!exec ?exec $let[avatar;$replaceText[$authoravatar;.webp;.png]]
$imageCreate[300;300]
$imageLoadFromURL[avatar;$avatar]
$imageDraw[avatar;100;10;100;100]
$imageSetOpacity[50]
$imageDraw[avatar;100;190;100;100]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageStroke.md b/content/docs/(functions)/Image/imageStroke.mdx similarity index 65% rename from guide/Image/imageStroke.md rename to content/docs/(functions)/Image/imageStroke.mdx index 1c5217f5..1b580b36 100644 --- a/guide/Image/imageStroke.md +++ b/content/docs/(functions)/Image/imageStroke.mdx @@ -1,4 +1,6 @@ -# $imageStroke +--- +title: "$imageStroke" +--- Draws a rectangle outline (stroke) on the canvas. @@ -25,23 +27,24 @@ The thickness of the stroke is controlled by the `$imageStrokeWidth` command. The `x` and `y` parameters define the position of the rectangle's top-left corner. You can change the reference point (origin) for these coordinates using the `$imagePositionBase` command. -[Learn more about X and Y positioning](./../CodeReferences/ref.imgbuild.position.md) +[Learn more about X and Y positioning](/CodeReferences/ref.imgbuild.position) ## Size (Width & Height) The `width` and `height` parameters define the dimensions of the rectangle. -[Learn more about Width and Height sizing](./../CodeReferences/ref.imgbuild.size.md) +[Learn more about Width and Height sizing](/CodeReferences/ref.imgbuild.size) ### Example: This example creates a 300x300 canvas, sets the position base to `center`, sets the stroke width to 10, and then draws a red rectangle with a width and height of 50, centered on the canvas. - - - !!exec $imageCreate[300;300]
$imagePositionBase[center]
$imageStrokeWidth[10]
$imageStroke[red;center;center;50;50]
$image[$imageOutput]

-
- - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300]
$imagePositionBase[center]
$imageStrokeWidth[10]
$imageStroke[red;center;center;50;50]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/content/docs/(functions)/Image/imageStrokeWidth.mdx b/content/docs/(functions)/Image/imageStrokeWidth.mdx new file mode 100644 index 00000000..6ab5db10 --- /dev/null +++ b/content/docs/(functions)/Image/imageStrokeWidth.mdx @@ -0,0 +1,37 @@ +--- +title: "$imageStrokeWidth" +--- + +Controls the thickness of the stroke line used by the `$imageStroke` function. This allows you to customize the appearance of shapes and lines drawn on your images. + +## Usage + +```bash +$imageStrokeWidth[width] +``` + +### Parameters: + +* **`width`**: The desired thickness of the stroke line, measured in pixels. The default value is `1`. A higher number results in a thicker line. + +# Understanding Position (X & Y) + +For a deeper understanding of how to position elements using X and Y coordinates, refer to this resource: [Positioning Guide](/CodeReferences/ref.imgbuild.position) + +# Understanding Size (Width & Height) + +To learn more about defining the size of elements using Width and Height, please see this guide: [Size Guide](/CodeReferences/ref.imgbuild.size) + +### Example: + +This example demonstrates how to create a red square with a stroke thickness of 10 pixels, centered on a 300x300 canvas. + + + +!!exec $imageCreate[300;300]
$imagePositionBase[center]
$imageStrokeWidth[10]
$imageStroke[red;center;center;50;50]
$image[$imageOutput]

+
+ +
+
+
+
\ No newline at end of file diff --git a/guide/Image/imageTextAlign.md b/content/docs/(functions)/Image/imageTextAlign.mdx similarity index 96% rename from guide/Image/imageTextAlign.md rename to content/docs/(functions)/Image/imageTextAlign.mdx index fb42cb4f..b63f6aa2 100644 --- a/guide/Image/imageTextAlign.md +++ b/content/docs/(functions)/Image/imageTextAlign.mdx @@ -1,4 +1,6 @@ -# $imageTextAlign +--- +title: "$imageTextAlign" +--- This command sets the text alignment for subsequent text written on an image. It affects how the `pos x` and `pos y` parameters are interpreted when using commands like `$imageText`. diff --git a/guide/Image/imageTextBaseline.md b/content/docs/(functions)/Image/imageTextBaseline.mdx similarity index 94% rename from guide/Image/imageTextBaseline.md rename to content/docs/(functions)/Image/imageTextBaseline.mdx index 13597ff1..d99077f1 100644 --- a/guide/Image/imageTextBaseline.md +++ b/content/docs/(functions)/Image/imageTextBaseline.mdx @@ -1,4 +1,6 @@ -# $imageTextBaseline +--- +title: "$imageTextBaseline" +--- This function allows you to control the vertical alignment (baseline) of text within an image. By default, the text aligns to the `bottom`. diff --git a/guide/Image/imageTextColor.md b/content/docs/(functions)/Image/imageTextColor.mdx similarity index 96% rename from guide/Image/imageTextColor.md rename to content/docs/(functions)/Image/imageTextColor.mdx index 5b5862b9..59b5ce02 100644 --- a/guide/Image/imageTextColor.md +++ b/content/docs/(functions)/Image/imageTextColor.mdx @@ -1,4 +1,6 @@ -# $imageTextColor +--- +title: "$imageTextColor" +--- Specifies the fill and stroke color of the text in your image. This command allows you to customize the text's appearance by setting its color. diff --git a/content/docs/(functions)/Image/imageTextFill.mdx b/content/docs/(functions)/Image/imageTextFill.mdx new file mode 100644 index 00000000..69372a6d --- /dev/null +++ b/content/docs/(functions)/Image/imageTextFill.mdx @@ -0,0 +1,38 @@ +--- +title: "$imageTextFill" +--- + +Add filled text to an image. + +## Usage + +```bash +$imageTextFill[Text;position x;position y;color;opacity] +``` + +**Parameters:** + +* **Text:** The text you want to write on the image. +* **position x:** The x-coordinate for the text's position. See [Position: X & Y](/CodeReferences/ref.imgbuild.position) for more details. +* **position y:** The y-coordinate for the text's position. See [Position: X & Y](/CodeReferences/ref.imgbuild.position) for more details. +* **color:** The color of the text fill (e.g., `#4461b3`, `red`, `rgba(255,0,0,0.5)`). +* **opacity:** *This parameter is deprecated and no longer functional*. Use a rgba color value instead to specify opacity. + +## Related Information: + +* **Position: X & Y:** Learn more about specifying the X and Y coordinates for text placement [here](/CodeReferences/ref.imgbuild.position). +* **Size: Width & Height:** Learn more about specifying width and height values related to images [here](/CodeReferences/ref.imgbuild.size). *Note this link may not be directly relevant to this specific function, but is included for general context*. + +### Example: + +This example creates a 300x300 image, sets the text size to 30, aligns the text to the center, and then writes "CC is Awesome" at position 150,150 with the color #4461b3. + + + +!!exec $imageCreate[300;300]
$imageTextSize[30]
$imageTextAlign[center]
$imageTextFill[CC is Awesome;150;150;#4461b3]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageTextFillColor.md b/content/docs/(functions)/Image/imageTextFillColor.mdx similarity index 96% rename from guide/Image/imageTextFillColor.md rename to content/docs/(functions)/Image/imageTextFillColor.mdx index 0ebc2dd4..273beb48 100644 --- a/guide/Image/imageTextFillColor.md +++ b/content/docs/(functions)/Image/imageTextFillColor.mdx @@ -1,4 +1,6 @@ -# $imageTextFillColor +--- +title: "$imageTextFillColor" +--- Set the color used to fill text in images. diff --git a/guide/Image/imageTextSize.md b/content/docs/(functions)/Image/imageTextSize.mdx similarity index 96% rename from guide/Image/imageTextSize.md rename to content/docs/(functions)/Image/imageTextSize.mdx index 8886456e..a0938a9d 100644 --- a/guide/Image/imageTextSize.md +++ b/content/docs/(functions)/Image/imageTextSize.mdx @@ -1,4 +1,6 @@ -# $imageTextSize +--- +title: "$imageTextSize" +--- Specifies the font size for text rendered in images. diff --git a/guide/Image/imageTextStroke.md b/content/docs/(functions)/Image/imageTextStroke.mdx similarity index 65% rename from guide/Image/imageTextStroke.md rename to content/docs/(functions)/Image/imageTextStroke.mdx index aa934dc6..225cff2f 100644 --- a/guide/Image/imageTextStroke.md +++ b/content/docs/(functions)/Image/imageTextStroke.mdx @@ -1,4 +1,6 @@ -# $imageTextStroke +--- +title: "$imageTextStroke" +--- Add a stroke (border) to text on an image. This effect can enhance the visibility of your text, especially when placed over complex backgrounds. @@ -18,11 +20,11 @@ $imageTextStroke[Text;position x;position y;color (optional);opacity (optional)] ## Understanding Position (X & Y) -For a deeper understanding of how to specify the X and Y coordinates for text positioning, please refer to the detailed explanation [here](./../CodeReferences/ref.imgbuild.position.md). +For a deeper understanding of how to specify the X and Y coordinates for text positioning, please refer to the detailed explanation [here](/CodeReferences/ref.imgbuild.position). ## Related: Size (Width & Height) -While not directly used in `$imageTextStroke`, understanding how to set image dimensions can be helpful when working with text. You can learn more about width and height settings [here](./../CodeReferences/ref.imgbuild.size.md). +While not directly used in `$imageTextStroke`, understanding how to set image dimensions can be helpful when working with text. You can learn more about width and height settings [here](/CodeReferences/ref.imgbuild.size). ## Example @@ -38,12 +40,12 @@ $image[$imageOutput] **Result:** - - - !!exec $imageCreate[300;300]
$imageTextSize[30]
$imageTextAlign[center]
$imageTextStroke[CC is Awesome;150;150;#4461b3]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300]
$imageTextSize[30]
$imageTextAlign[center]
$imageTextStroke[CC is Awesome;150;150;#4461b3]
$image[$imageOutput]

+
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageTextStrokeColor.md b/content/docs/(functions)/Image/imageTextStrokeColor.mdx similarity index 96% rename from guide/Image/imageTextStrokeColor.md rename to content/docs/(functions)/Image/imageTextStrokeColor.mdx index 43b1bd40..5a6f1a73 100644 --- a/guide/Image/imageTextStrokeColor.md +++ b/content/docs/(functions)/Image/imageTextStrokeColor.mdx @@ -1,4 +1,6 @@ -# $imageTextStrokeColor +--- +title: "$imageTextStrokeColor" +--- Sets the outline (stroke) color of the text in your image. diff --git a/guide/Image/imageTextWeight.md b/content/docs/(functions)/Image/imageTextWeight.mdx similarity index 96% rename from guide/Image/imageTextWeight.md rename to content/docs/(functions)/Image/imageTextWeight.mdx index 1b883dc1..526abb10 100644 --- a/guide/Image/imageTextWeight.md +++ b/content/docs/(functions)/Image/imageTextWeight.mdx @@ -1,4 +1,6 @@ -# $imageTextWeight +--- +title: "$imageTextWeight" +--- Controls the font weight (thickness) and style of text rendered on your images. Use this variable to make your text bold, italic, or both! diff --git a/guide/Image/imageUseFont.md b/content/docs/(functions)/Image/imageUseFont.mdx similarity index 52% rename from guide/Image/imageUseFont.md rename to content/docs/(functions)/Image/imageUseFont.mdx index 25d34f4b..9a45393d 100644 --- a/guide/Image/imageUseFont.md +++ b/content/docs/(functions)/Image/imageUseFont.mdx @@ -1,4 +1,6 @@ -# $imageUseFont +--- +title: "$imageUseFont" +--- Sets the font type for text rendered on images. @@ -40,11 +42,12 @@ See a preview of these fonts in the image below: This example creates a 300x300 image, sets the font to "Roboto", the text color to white, the text size to 30, and then writes "Hello World" at position 20x, 50y. - - - !!exec $imageCreate[300;300]
$imageUseFont[Roboto]
$imageTextColor[white]
$imageTextSize[30]
$imageTextFill[Hello World;20;50]
$stop[{image:$imageOutput}] -
- - - -
\ No newline at end of file + + +!!exec $imageCreate[300;300]
$imageUseFont[Roboto]
$imageTextColor[white]
$imageTextSize[30]
$imageTextFill[Hello World;20;50]
$stop[\{image:$imageOutput}] +
+ + + + +
\ No newline at end of file diff --git a/guide/Image/imageWidth.md b/content/docs/(functions)/Image/imageWidth.mdx similarity index 97% rename from guide/Image/imageWidth.md rename to content/docs/(functions)/Image/imageWidth.mdx index 72e6075f..7b82924e 100644 --- a/guide/Image/imageWidth.md +++ b/content/docs/(functions)/Image/imageWidth.mdx @@ -1,4 +1,6 @@ -# $imageWidth +--- +title: "$imageWidth" +--- Retrieves the width of an image. This function allows you to dynamically get the width of an image that has been previously loaded, referenced by its assigned name. diff --git a/content/docs/(functions)/Image/meta.json b/content/docs/(functions)/Image/meta.json new file mode 100644 index 00000000..0850c17a --- /dev/null +++ b/content/docs/(functions)/Image/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Image Builder functions", + "pages": [ + "..." + ] +} diff --git a/guide/Interaction/commandName.md b/content/docs/(functions)/Interaction/commandName.mdx similarity index 83% rename from guide/Interaction/commandName.md rename to content/docs/(functions)/Interaction/commandName.mdx index 263f37c2..213b146d 100644 --- a/guide/Interaction/commandName.md +++ b/content/docs/(functions)/Interaction/commandName.mdx @@ -1,10 +1,14 @@ -# $commandName +--- +title: "$commandName" +--- Returns the name of the slash command that triggered the current execution. -::: tip Trigger -This function only works within the context of a [slash command](../Trigger/slash.md). -::: + + +This function only works within the context of a [slash command](/Trigger/slash). + + ## Usage @@ -31,6 +35,6 @@ The bot will roll a dice and then reply with the result and the name of the comm ## Related Functions -* [Slash command](../Trigger/slash.md): Learn how to create and trigger slash commands. +* [Slash command](/Trigger/slash): Learn how to create and trigger slash commands. * `$interactionReply`: Send a reply to the interaction that triggered the command. * `$getOption`: Retrieve the value of an option provided by the user in the slash command. \ No newline at end of file diff --git a/guide/Interaction/getOption.md b/content/docs/(functions)/Interaction/getOption.mdx similarity index 97% rename from guide/Interaction/getOption.md rename to content/docs/(functions)/Interaction/getOption.mdx index 3cef3eb4..82d4b16c 100644 --- a/guide/Interaction/getOption.md +++ b/content/docs/(functions)/Interaction/getOption.mdx @@ -1,4 +1,6 @@ -# $getOption +--- +title: "$getOption" +--- Retrieves the value of a user-provided option from an interaction, such as a slash command. This function allows you to access the specific input a user has provided for a command option. diff --git a/guide/Interaction/interactionDelete.md b/content/docs/(functions)/Interaction/interactionDelete.mdx similarity index 68% rename from guide/Interaction/interactionDelete.md rename to content/docs/(functions)/Interaction/interactionDelete.mdx index 99e17b99..857ee092 100644 --- a/guide/Interaction/interactionDelete.md +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -1,4 +1,6 @@ -# $interactionDelete +--- +title: "$interactionDelete" +--- Deletes an interaction reply previously sent using `$interactionReply`. @@ -28,6 +30,7 @@ To delete a specific interaction reply by its ID: $interactionDelete[123456789012345678] ``` -##### Function difficulty: +**Function difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx new file mode 100644 index 00000000..777a486b --- /dev/null +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -0,0 +1,43 @@ +--- +title: "$interactionEdit" +--- + +Edits a previously sent interaction, typically one created using `$interactionReply`. + +#### Usage: `$interactionEdit[New Message;message id (optional, defaults to the original interaction reply)]` + +
+ + + +This function only works within interaction-based triggers (e.g., slash commands, button clicks). Do not use it in `exec` or other trigger types. + + + +
+ + + + +```php +$interactionreply[Hello world!;yes] +$wait[2s] +$interactionedit[Bye World!] +``` + +This example first sends an interaction reply ("Hello world!"). After a 2-second delay, it edits that same message to "Bye World!". + +![](https://cdn.discordapp.com/attachments/914682255346118687/937862286767435796/Screenshot_20220131210759.jpg) + + + + + + +You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_curl_format). This allows for rich message formatting including titles, descriptions, fields, and more! + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Interaction/interactionId.md b/content/docs/(functions)/Interaction/interactionId.mdx similarity index 59% rename from guide/Interaction/interactionId.md rename to content/docs/(functions)/Interaction/interactionId.mdx index e25a1c2b..46a07aab 100644 --- a/guide/Interaction/interactionId.md +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -1,4 +1,6 @@ -# $interactionId +--- +title: "$interactionId" +--- Retrieves the unique ID of an interaction (e.g., button press, menu selection). @@ -6,7 +8,9 @@ Retrieves the unique ID of an interaction (e.g., button press, menu selection). This function returns the unique identifier associated with a user interaction like pressing a button or selecting an option from a menu. This ID can be useful for tracking or logging specific interactions. -::: details Example + + + ```php $interactionReply[$interactionId;yes] /* Returns the interaction ID */ ``` @@ -14,8 +18,11 @@ $interactionReply[$interactionId;yes] /* Returns the interaction ID */ This example demonstrates how to use `$interactionId` within the `$interactionReply` function to respond to the interaction while using the interaction ID. ![](https://cdn.discordapp.com/attachments/914682255346118687/937866562159935518/unknown.jpeg) -::: -##### Function Difficulty: + + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Interaction/interactionReply.md b/content/docs/(functions)/Interaction/interactionReply.mdx similarity index 64% rename from guide/Interaction/interactionReply.md rename to content/docs/(functions)/Interaction/interactionReply.mdx index e94084c9..71e2db87 100644 --- a/guide/Interaction/interactionReply.md +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -1,4 +1,6 @@ -# $interactionReply +--- +title: "$interactionReply" +--- Sends a reply to an interaction (buttons, menus, slash commands). @@ -10,11 +12,15 @@ Sends a reply to an interaction (buttons, menus, slash commands). * `ephemeral(yes/no)` (Optional): Determines if the message should be ephemeral (only visible to the user who triggered the interaction). Defaults to `no` if not specified. Use `yes` for an ephemeral message. * `return id(yes/no)` (Optional): Determines if the function should return the message ID. Defaults to `no` if not specified. -::: tip Ephemeral Messages + + Ephemeral messages are only visible to the user who triggered the interaction. Use them when you want to send a private response. To make a message ephemeral, set the `ephemeral` parameter to `yes`. -::: -::: details Example + + + + + ```php $interactionReply[Hello World;yes] @@ -24,16 +30,23 @@ This code sends an ephemeral message to the user who triggered the interaction, ![](https://cdn.discordapp.com/attachments/914682255346118687/937856596875313212/unknown.jpeg) -::: -::: warning Important + + + + + This function **only** works within interaction-based trigger types (like button clicks, menu selections, and slash command executions). If you want to reply to a regular message, use the `$reply` function or the `{reply:messageId}` tag instead. -::: -::: tip Note -You can send embedded messages using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This allows for richer message styling, images, and more. -::: + + + + +You can send embedded messages using the [Message Curl Format](/CodeReferences/ref.message_curl_format). This allows for richer message styling, images, and more. + + + +**Function Difficulty:** -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Interaction/meta.json b/content/docs/(functions)/Interaction/meta.json new file mode 100644 index 00000000..1ee45c00 --- /dev/null +++ b/content/docs/(functions)/Interaction/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Interaction Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Interaction/modal.md b/content/docs/(functions)/Interaction/modal.mdx similarity index 84% rename from guide/Interaction/modal.md rename to content/docs/(functions)/Interaction/modal.mdx index ead346f5..cf1ca5c5 100644 --- a/guide/Interaction/modal.md +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -1,4 +1,7 @@ -# $modal +--- +title: "$modal" +--- + Used to send a modal, it must be used inside interaction like button/menu/slash triggers #### Usage: `$modal[Input]` @@ -88,7 +91,7 @@ Used to send a modal, it must be used inside interaction like button/menu/slash ##### **required** -must be `yes` or `no`, the default is `yes`
+must be `yes` or `no`, the default is `yes`
##### **type** @@ -119,13 +122,18 @@ You can include multiple input fields, up to a maximum of 5 total (for example: #### Output ![](https://i.imgur.com/chJsAth.png) -::: tip -This can only be used inside the [modal trigger](../Trigger/modal.md) -::: + + +This can only be used inside the [modal trigger](/Trigger/modal) + + + + + +Read more about the menu structure in [selectMenu](/Text/Components/selectMenu) + + -::: tip -Read more about the menu structure in [selectMenu](../Text/Components/selectMenu.md) -::: +**Function difficulty:** -##### Function difficulty: -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Interaction/modalAnswer.md b/content/docs/(functions)/Interaction/modalAnswer.mdx similarity index 82% rename from guide/Interaction/modalAnswer.md rename to content/docs/(functions)/Interaction/modalAnswer.mdx index f316f903..6c89eca5 100644 --- a/guide/Interaction/modalAnswer.md +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -1,6 +1,8 @@ -# $modalAnswer +--- +title: "$modalAnswer" +--- -Retrieves the value entered by a user in a modal. This function is used to access the data submitted through a modal triggered by the [`modal` trigger](../Trigger/modal.md). +Retrieves the value entered by a user in a modal. This function is used to access the data submitted through a modal triggered by the [`modal` trigger](/Trigger/modal). **Usage:** `$modalAnswer[Input Value;Seperator (optional)]` @@ -15,9 +17,11 @@ The following image illustrates how to use `$modalAnswer` inside the `modal` tri ![](https://i.imgur.com/SZc3371.png) -::: tip Important -`$modalAnswer` can *only* be used within the context of the [`modal` trigger](../Trigger/modal.md). Attempting to use it elsewhere will result in an error or unexpected behavior. -::: + + +`$modalAnswer` can *only* be used within the context of the [`modal` trigger](/Trigger/modal). Attempting to use it elsewhere will result in an error or unexpected behavior. + + **Difficulty:** diff --git a/guide/Interaction/modalID.md b/content/docs/(functions)/Interaction/modalID.mdx similarity index 84% rename from guide/Interaction/modalID.md rename to content/docs/(functions)/Interaction/modalID.mdx index b1e43ba5..1159f9e6 100644 --- a/guide/Interaction/modalID.md +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -1,12 +1,16 @@ -# $modalID +--- +title: "$modalID" +--- -This variable returns the unique ID of the modal that activated the [modal trigger](../Trigger/modal.md). +This variable returns the unique ID of the modal that activated the [modal trigger](/Trigger/modal). **Usage:** `$modalID` -::: tip Important -You can only use `$modalID` **within** the context of a [modal trigger](../Trigger/modal.md). It won't work anywhere else! -::: + + +You can only use `$modalID` **within** the context of a [modal trigger](/Trigger/modal). It won't work anywhere else! + + **What does it do?** diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx new file mode 100644 index 00000000..abf396ba --- /dev/null +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -0,0 +1,47 @@ +--- +title: "$authorAvatar" +--- + +Returns the avatar (profile picture) URL of the user who executed the command. + +## Usage + +```bash +$authorAvatar[serverAvatar] +``` +1. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. + +## Examples + +#### Sending avatar URL + +How is the avatar URL displayed when sent with text and without text + + + +!!exec With text: $authorAvatar + + +With text: https://cdn.discordapp.com/embed/avatars/0.png
+User Avatar +
+ +!!exec $authorAvatar + + +User Avatar + +
+ + + +You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. +To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). + + + +##### Related functions: `$attachment` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx new file mode 100644 index 00000000..a0c5119b --- /dev/null +++ b/content/docs/(functions)/Member/authorID.mdx @@ -0,0 +1,32 @@ +--- +title: "$authorID" +--- + +Returns the ID of the user who executed the command. + +## Usage + +```bash +$authorID +``` + +## Example + +#### Using $authorID + +How to use $authorID + + + +!!exec My ID is $authorID + + +My ID is 123456789123456789 + + + +##### Related functions: `$mention` + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx new file mode 100644 index 00000000..136c4da4 --- /dev/null +++ b/content/docs/(functions)/Member/ban.mdx @@ -0,0 +1,58 @@ +--- +title: "$ban" +--- + +Bans a user from the server. + +## Usage + +```bash +$ban[userID;reason;messages to delete] +``` +1. **userID** - The ID of the user to ban. +2. **reason** - The reason for the ban. +3. **messages to delete** - The number of days to delete messages from this user. Maximum is 7 days, limited by Discord. + +## Examples + +#### Sucessful ban + +Successful ban with no response + + + +!!exec $ban[123456789123456789;Spamming;7] + + + +#### Unsucessful ban + +Unsuccessful ban with error message + + + +!!exec $ban[$ownerID;Just a test;0] + + +❌ bot is missing enough permissions at line 1 + + + + + +Make sure that the bot does have sufficient permission. The bot also needs to be higher in role hierarchy then the user. + + + + + +If any member who can execute the command with this function, they will be able to ban any member below the bot's highest role. +Do not place the bot's role above Admin or Head Moderator roles to avoid banning important member. + + + +##### Related functions: `$kick` `$unban` + +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/blackListIDs.md b/content/docs/(functions)/Member/blackListIDs.mdx similarity index 51% rename from guide/Member/blackListIDs.md rename to content/docs/(functions)/Member/blackListIDs.mdx index f9c7b2d4..2a1bd7e6 100644 --- a/guide/Member/blackListIDs.md +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -1,4 +1,6 @@ -# $blackListIDs +--- +title: "$blackListIDs" +--- Prevent users from using a command by blacklisting their IDs. @@ -18,16 +20,17 @@ $blackListIDs[userID;userID;...;error message] How to blacklist a user from the command - - - !!exec $blackListIDs[$authorID;You are blacklisted from using this command!]
Message -
- - You are blacklisted from using this command! - -
+ + +!!exec $blackListIDs[$authorID;You are blacklisted from using this command!]
Message +
+ +You are blacklisted from using this command! + +
##### Related functions: `$blackListRoleIds` `$blackListChannelIDs` `$onlyForIDs` `$onlyForRoles` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx new file mode 100644 index 00000000..4c511c69 --- /dev/null +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -0,0 +1,46 @@ +--- +title: "$boostingSince" +--- + +Returns the date a user started boosting the server. + +## Usage + +```bash +$boostingSince[userID;date/ms] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of user to return boosting date +2. **date/ms** - (Optional) default value: `date`. If date, it will return text in this format: `Day(name), Month(name) Day(number), Year(YYYY) Hours(HH):Minutes(MM) PM/AM`. If ms, timestamp in miliseconds will be returned. You can later format the timestamp using `$formatDate`. + +## Example + +#### Using $boostingSince + +Multiple ways of using function $boostingSince + + + +!!exec $boostingSince + + +Wednesday, January 1, 2025 08:30 PM + + +!!exec $boostingSince[123456789123456789;ms] + + +1735763400000 + + +!!exec $formatDate[$boostingSince[123456789123456789;ms];MM-DD-YYYY] + + +01-01-2025 + + + +##### Related functions: `$formatDate` `$timeToDate` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx new file mode 100644 index 00000000..9e4b5003 --- /dev/null +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -0,0 +1,46 @@ +--- +title: "$changeNickname" +--- + +Changes the nickname of a specified member in the server. + +## Usage: + +```bash +$changeNickname[userID;nickname] +``` +1. **userID** - The ID of the member whose nickname you want to change. +2. **nickname** - The new nickname you want to assign to the member. + +## Example + +#### Using $changeNickname + +Changing the nickname of the command author + + + +!!exec $changeNickname[$authorID;Steve] + + +Hello + + + + + +The bot requires the "Manage Nicknames" permission to change nicknames and only change nicknames of members with roles lower than bots highest role. + + + + + +Discord doesn't allow others to change owners nickname. If you will try to change nickname of an invalid member or owner, error message will be shown. + + + +##### Related functions: `$nickname` + +**Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx new file mode 100644 index 00000000..db1d5643 --- /dev/null +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -0,0 +1,39 @@ +--- +title: "$discriminator" +--- + +Returns the discriminator of the user who executed the command, or a specified member. + +## Usage: + +```bash +$discriminator[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of user you want to return the discriminator from. + +## Example + +#### Using $discriminator + +Returning a discriminator from user + + + +!!exec $discriminator + + +1234 + + + + + +This feature is deprecated because Discord switched to usernames. This function will return 0 as of the username update. This still works on bots. + + + +##### Related functions: `$username` `$nickname` `$userTag` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx new file mode 100644 index 00000000..1d5aa8c9 --- /dev/null +++ b/content/docs/(functions)/Member/displayName.mdx @@ -0,0 +1,33 @@ +--- +title: "$displayName" +--- + +Returns the display name of a specified user. This is the name that's shown for the user in a specific server, which might be different from their global name. + +## Usage + +```bash +$displayName[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return display name from. + +## Example + +#### Using $displayName + +How to return display name from author + + + +!!exec $displayName + + +User + + + +##### Related functions: `$nickname` `$username` + +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/eventNewNickname.md b/content/docs/(functions)/Member/eventNewNickname.mdx similarity index 66% rename from guide/Member/eventNewNickname.md rename to content/docs/(functions)/Member/eventNewNickname.mdx index c92cbfaf..31421bdb 100644 --- a/guide/Member/eventNewNickname.md +++ b/content/docs/(functions)/Member/eventNewNickname.mdx @@ -1,4 +1,6 @@ -# $eventNewNickname +--- +title: "$eventNewNickname" +--- Returns the new nickname of a member when their nickname is updated. Works in `On Nickname Changes` trigger. @@ -20,5 +22,6 @@ $sendMessage[User $username changed their nickname from $eventOldNickname to $ev ##### Related functions: `$username` `$eventOldNickname` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/eventOldNickname.md b/content/docs/(functions)/Member/eventOldNickname.mdx similarity index 66% rename from guide/Member/eventOldNickname.md rename to content/docs/(functions)/Member/eventOldNickname.mdx index 2c18e8ac..b93274c2 100644 --- a/guide/Member/eventOldNickname.md +++ b/content/docs/(functions)/Member/eventOldNickname.mdx @@ -1,4 +1,6 @@ -# $eventOldNickname +--- +title: "$eventOldNickname" +--- Returns the old nickname of a member when their nickname is updated. Works in `On Nickname Changes` trigger. @@ -20,5 +22,6 @@ $sendMessage[User $username changed their nickname from $eventOldNickname to $ev ##### Related functions: `$username` `$eventNewNickname` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx new file mode 100644 index 00000000..6d5c1d77 --- /dev/null +++ b/content/docs/(functions)/Member/findMember.mdx @@ -0,0 +1,56 @@ +--- +title: "$findMember" +--- + +Searches for a user in the current server by their nickname, ID, mention, username, or username with discriminator. Returns userID of the found user. + +## Usage: + +```bash +$findMember[query;returnCurrentUser] +``` +1. **query** - Can be userID, nickname, mention, username, username#descriminator. +2. **returnCurrentUser** - (Optional) default value: `yes`. Can be either `yes` or `no`. If this is set to yes, when user is not found, it will return $authorID. If it's no, and user is not found, it will return undefined. + +## Example + +#### Successful search + +Searching for existing user + + + +!!exec $findMember[user2;no] + + +123456789123456789 + + + +#### Unsuccessful search + +Searching for invalid user + + + +!!exec $findMember[user123;no] + + +undefined + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$userID` `$authorID` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx new file mode 100644 index 00000000..895b7180 --- /dev/null +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -0,0 +1,39 @@ +--- +title: "$getUserBadges" +--- + +Returns the Discord badges from specified user. If none found, returns `none`. If found multiple, separated by `, `. + +## Usage + +```bash +$getUserBadges[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. Which user to return badges from. + +## Example + +#### Using $getUserBadges + +How to return badges from command author + + + +!!exec $getUserBadges + + +Active Developer + + + + + +Not all badges are 100% guranteed. + + + +##### Related functions: `$userBanner` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx new file mode 100644 index 00000000..25ebf4c7 --- /dev/null +++ b/content/docs/(functions)/Member/globalName.mdx @@ -0,0 +1,33 @@ +--- +title: "$globalName" +--- + +Returns the global name of the user + +## Usage + +```bash +$globalName[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return global name from. + +## Example + +#### Using $globalName + +How to return the global name from author + + + +!!exec $globalName + + +User + + + +##### Related functions: `$displayName` `$nickname` `$username` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx new file mode 100644 index 00000000..c5c568a9 --- /dev/null +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -0,0 +1,46 @@ +--- +title: "$hasAnyPerm" +--- + +Checks if a user has one of the given permissions. Returns `true` or `false`. + +## Usage + +```bash +$hasAnyPerm[userID;permission1;permission2;...] +``` +1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. +2. **permission N** - You can add as many permissions as needed. The available permissions are here: [Permissions List](/CodeReferences/ref.permissions_list). + +## Example + +#### Using $hasAnyPerm + +How to use $hasAnyPerm without user argument. Keep in mind that if the user does have only one of listed permissions, true will be returned. + + + +!!exec I have managechannels OR manageroles permission: $hasAnyPerm[managechannels;manageroles] + + +I have managechannels OR manageroles permission: true + + +!!exec I have managechannels permission: $hasAnyPerm[managechannels], I have manageroles permission: $hasAnyPerm[manageroles] + + +I have managechannels permission: true, I have manageroles permission: false + + + + + +To make code stop if the user doesn't have the needed permission, you can check out `$onlyIf`. For multiple actions, check `$if`. + + + +##### Related functions: `$hasPerms` `$hasAnyRole` `$hasRole` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx new file mode 100644 index 00000000..051e69f5 --- /dev/null +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -0,0 +1,46 @@ +--- +title: "$hasAnyRole" +--- + +Checks if a user has one of the given roles. Returns `true` or `false`. + +## Usage + +```bash +$hasAnyRole[userID;roleID1;roleID2;...] +``` +1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. +2. **role N** - You can add as many roles as needed. + +## Example + +#### Using $hasAnyRole + +How to use $hasAnyRole without user argument. Keep in mind that if the user does have only one of listed roles, true will be returned. + + + +!!exec I have Admin OR Manager role: $hasAnyRole[admin;manager] + + +I have Admin OR Manager role: true + + +!!exec I have Admin role: $hasAnyRole[admin], I have Manager role: $hasAnyRole[manager] + + +I have Admin role: true, I have Manager role: false + + + + + +To make code stop if the user doesn't have the needed role, you can check out `$onlyIf`. For multiple actions, check `$if`. + + + +##### Related functions: `$hasPerms` `$hasAnyPerm` `$hasRole` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx new file mode 100644 index 00000000..245a9dd8 --- /dev/null +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -0,0 +1,40 @@ +--- +title: "$hasPerms" +--- + +Checks if user has all of the given permissions. Returns `true` or `false`. + +## Usage: + +```bash +$hasPerms[userID;perm1;perm2;...] +``` +1. **userID** - User you want to check for permissions. +2. **perm N** - You can add as many permissions as needed. The available permissions are here: [Permissions List](/CodeReferences/ref.permissions_list). + +## Example + +#### Using $hasPerms + +How to use $hasPerms. Keep in mind that only if the user does have all of listed permissions, true will be returned. + + + +!!exec $hasPerms[$authorID;sendmessages] + + +true + + + + + +To make code stop if the user doesn't have the needed permission, you can check out `$onlyIf`. For multiple actions, check `$if`. + + + +##### Related functions: `$hasAnyPerm` `$hasAnyRole` `$hasRole` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx new file mode 100644 index 00000000..173e9df3 --- /dev/null +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -0,0 +1,40 @@ +--- +title: "$hasRoles" +--- + +Checks if user has all of the given roles. Returns `true` or `false`. + +## Usage: + +```bash +$hasRoles[userID;role1;role2;...] +``` +1. **userID** - User you want to check for roles. +2. **role N** - You can add as many roles as needed. + +## Example + +#### Using $hasRoles + +How to use $hasRoles. Keep in mind that only if the user does have all of listed roles, true will be returned. + + + +!!exec $hasRoles[$authorID;123456789123456789] + + +true + + + + + +To make code stop if the user doesn't have the needed role, you can check out `$onlyIf`. For multiple actions, check `$if`. + + + +##### Related functions: `$hasAnyPerm` `$hasPerms` `$hasAnyRole` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx new file mode 100644 index 00000000..821ee814 --- /dev/null +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -0,0 +1,33 @@ +--- +title: "$isBanned" +--- + +Checks if a user is banned from the guild. Returns `true` or `false`. + +## Usage + +```bash +$isBanned[userID] +``` +1. **userID** - The ID of the user to check if it's banned. + +## Example + +#### Using $isBanned + +How to use $isBanned + + + +!!exec $isBanned[123456789123456789] + + +false + + + +##### Related functions: `$kick` `$ban` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx new file mode 100644 index 00000000..608522be --- /dev/null +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -0,0 +1,33 @@ +--- +title: "$isUserDMEnabled" +--- + +This function checks if a user has direct messages (DMs) enabled. It returns `true` if DMs are enabled, and `false` if not. + +## Usage + +```bash +$isUserDMEnabled[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of the user you want to check. + +## Example + +#### Using $isUserDMEnabled + +How to use $isUserDMEnabled + + + +!!exec $isUserDMEnabled[123456789123456789] + + +true + + + +##### Related functions: `$dm` `$sendDM` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx new file mode 100644 index 00000000..e1def207 --- /dev/null +++ b/content/docs/(functions)/Member/kick.mdx @@ -0,0 +1,58 @@ +--- +title: "$kick" +--- + +Kicks a user from the server. + +## Usage + +```bash +$kick[userID;reason] +``` +1. **userID** - The ID of the user to kick. +2. **reason** - (Optional) The reason for kick. You can see this in Audit Log. + +## Example + +#### Successful kick + +Successfull kick with no response + + + +!!exec $kick[123456789123456789;Spamming] + + + +#### Unsucessful kick + +Unsuccessful kick with error message + + + +!!exec $kick[$ownerID;Spamming] + + +❌ bot is missing enough permissions at line 1 + + + + + +The most common reason is that the bot's role is lower in the role hierarchy than the member you are trying to ban. +Discord doesn't allow members and bots from kicking members with a higher or equal highest role. Ensure the bot's highest role is above the target user. + + + + + +If any member who can execute the command with this function, they will be able to kick any member below the bot's highest role. +Do not place the bot's role above Admin or Head Moderator roles to avoid kicking important member. + + + +##### Related functions: `$ban` `$unban` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/memberSearch.mdx b/content/docs/(functions)/Member/memberSearch.mdx new file mode 100644 index 00000000..8e9bbd38 --- /dev/null +++ b/content/docs/(functions)/Member/memberSearch.mdx @@ -0,0 +1,66 @@ +--- +title: "$memberSearch" +--- + +Search for members with username or nickname in the server and get their information + +## Usage + +```bash +$memberSearch[username/nickname;amount to return (Default is 1);separator (Default is ,);info to return (Default is id)] +``` + +### Info To Return: +By default it is `id`, but you can pick from: + +* `id`: to return the found user id\ +* `username`: to return the found user's username\ +* `nickname`: to return the found user's nickname in the server\ +* `name`: to return the found user's display name in the server +> You can also use combination of them, like `name (id)` to be replaced with `Mido (12345678901234567)` + +> You can know more information about the user with the use of `$user` + +### Amount to Return: +It determines how many users it will return if they match the query, by default it is 1 +> When multiple user returned, they will merged together with the `separator` + +### Example (Search and member is found): + + +!!exec $memberSearch[mido.dev]

+
+ +788361834360864808

+
+
+ +### Example (Search and multiple members are found): + + +!!exec $memberSearch[A;5;, ;name]

+
+ +Alpha, Alight, A living legend, A story in life

+
+
+ +### Example (Search but member is not found): + + +!!exec $memberSearch[bad.dev]

+
+ +
+
+
+ +### Example (Search and use the user id to retrieve join date): + + +!!exec $let[user_id;$memberSearch[mido.dev]]
Mido joined the server at: $memberJoinedDate[$user_id]

+
+ +Mido joined the server at: Wed Mar 09 2022 22:06:21 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx new file mode 100644 index 00000000..f71d16f7 --- /dev/null +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -0,0 +1,56 @@ +--- +title: "$membersWithStatus" +--- + +Returns a list of member IDs who have specified status within the server separated by comma. + +## Usage + +```bash +$membersWithStatus[Status1;Status2;...] +``` +1. **Status N** - You can add multiple statuses. Can be `online`, `idle`, `dnd` (Do Not Disturb), `offline` (Includes invisible users), `streaming` (only valid for activities), `mobile` (only valid for platforms), `desktop` (only valid for platforms), `web` (only valid for platforms) + +## Example + +#### Single status in $membersWithStatus + +How to use $membersWithStatus with one status specified + + + +!!exec $membersWithStatus[online] + + +123456789123456789,987654321987654321 + + + +#### Multiple statuses in $membersWithStatus + +How to use $membersWithStatus with multiple statuses specified + + + +!!exec $membersWithStatus[online;idle] + + +123456789123456789,987654321987654321,765432198765432198 + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$status` + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx new file mode 100644 index 00000000..6bc4733b --- /dev/null +++ b/content/docs/(functions)/Member/mention.mdx @@ -0,0 +1,35 @@ +--- +title: "$mention" +--- + +Returns a mention of a user. + +## Usage + +```bash +$mention[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of user to get mentioned. + +## Example + +#### Using $mention + +How to use $mention for author or other user + + + +!!exec Me: $mention
+Other user: $mention[123456789123456789] +
+ +Me: User
+Other user: Other User +
+
+ +##### Related functions: `$username` `$nickname` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/meta.json b/content/docs/(functions)/Member/meta.json new file mode 100644 index 00000000..16ca45bd --- /dev/null +++ b/content/docs/(functions)/Member/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Member Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Member/moveUser.md b/content/docs/(functions)/Member/moveUser.mdx similarity index 52% rename from guide/Member/moveUser.md rename to content/docs/(functions)/Member/moveUser.mdx index 69dcb32f..60623b83 100644 --- a/guide/Member/moveUser.md +++ b/content/docs/(functions)/Member/moveUser.mdx @@ -1,4 +1,6 @@ -# $moveUser +--- +title: "$moveUser" +--- Moves a user to a different voice channel, or disconnects them from their current voice channel. @@ -17,27 +19,30 @@ $moveUser[userID;channelID;reason] How to move user to another channel - - - !!exec $moveUser[123456789123456789;123456789987654321;AFK] - - + + +!!exec $moveUser[123456789123456789;123456789987654321;AFK] + + #### Disconnecting user from a channel How to diconnect user from a channel - - - !!exec $moveUser[123456789123456789;;AFK] - - + + +!!exec $moveUser[123456789123456789;;AFK] + + + + -::: tip Permission Make sure that the bot does have enough permission to move or disconnect members. The bot also needs to be higher in the role hierarchy. -::: + + ##### Related functions: `$vcBefore` `$vcAfter` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/muteUser.md b/content/docs/(functions)/Member/muteUser.mdx similarity index 50% rename from guide/Member/muteUser.md rename to content/docs/(functions)/Member/muteUser.mdx index 6ea3b391..4cf6c1ca 100644 --- a/guide/Member/muteUser.md +++ b/content/docs/(functions)/Member/muteUser.mdx @@ -1,4 +1,6 @@ -# $muteUser +--- +title: "$muteUser" +--- Mutes or unmutes a user in a voice channel. @@ -17,27 +19,30 @@ $muteUser[userID;mute;reason] How to mute a member with reason - - - !!exec $muteUser[123456789123456789;yes;AFK] - - + + +!!exec $muteUser[123456789123456789;yes;AFK] + + #### Unmuting a member How to unmute a member with reason - - - !!exec $muteUser[123456789123456789;no;Not AFK] - - + + +!!exec $muteUser[123456789123456789;no;Not AFK] + + + + -::: tip Permission Make sure that the bot does have enough permission to mute or unmute members. The bot also needs to be higher in the role hierarchy. -::: + + ##### Related functions: `$vcBefore` `$vcAfter` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx new file mode 100644 index 00000000..ab822f58 --- /dev/null +++ b/content/docs/(functions)/Member/nickname.mdx @@ -0,0 +1,33 @@ +--- +title: "$nickname" +--- + +Returns the nickname of the user or the display name if you specified the 2nd input + +## Usage + +```bash +$nickname[User ID;Return Display name if no nickname exists (yes/no, default is no)] +``` +1. **User ID** - (Optional) default value: `$authorID`. The ID of user to return nickname from. + +## Example + +#### Using $nickname + +How to use $nickname + + + +!!exec $nickname + + +ImUser + + + +##### Related functions: `$changeNickname` `$username` `$discriminator` `$userTag` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx new file mode 100644 index 00000000..b6ad9446 --- /dev/null +++ b/content/docs/(functions)/Member/status.mdx @@ -0,0 +1,41 @@ +--- +title: "$status" +--- + +
+ +Returns the status of a user. Can be `online`, `offline`, `idle` or `dnd`. + +## Usage + +```bash +$status[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of user to return the status from. + +## Example + +#### Using $status + +How to use $status + + + +!!exec $status + + +online + + + + + +This function requires the Presence Intent to be enabled. You can change that in Discord Developer Portal under your Bot settings. + + + +##### Related functions: `$membersWithStatus` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx new file mode 100644 index 00000000..deeac3d5 --- /dev/null +++ b/content/docs/(functions)/Member/unban.mdx @@ -0,0 +1,37 @@ +--- +title: "$unban" +--- + +Unbans a user from the server. + +## Usage + +```bash +$unban[userID/username;reason] +``` +1. **userID/username** - The ID or username of user to unban. +2. **reason** - (Optional) default value: (none). The reason for the unban. You can see this in Audit Log. + +## Example + +#### Using $unban + +How to unban user with a reason + + + +!!exec $unban[123456789123456789;Appeal successful] + + + + + +Make sure that the bot does have sufficient permission. + + + +##### Related functions: `$kick` `$ban` + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Member/upvoteReferralUserID.md b/content/docs/(functions)/Member/upvoteReferralUserID.mdx similarity index 80% rename from guide/Member/upvoteReferralUserID.md rename to content/docs/(functions)/Member/upvoteReferralUserID.mdx index 37797699..da84275e 100644 --- a/guide/Member/upvoteReferralUserID.md +++ b/content/docs/(functions)/Member/upvoteReferralUserID.mdx @@ -1,4 +1,6 @@ -# $upvoteReferralUserID +--- +title: "$upvoteReferralUserID" +--- Returns the ID of the user whose referral link was used for the current upvote. @@ -12,6 +14,8 @@ This function is only available in the **On Upvote** trigger. If the vote was not made using a referral link, 'unknown' value is returned. -::: tip Note + + This function will behave like `$clientID` if the upvote command is triggered by `!!emit upvote` -::: \ No newline at end of file + + \ No newline at end of file diff --git a/guide/Member/user.md b/content/docs/(functions)/Member/user.mdx similarity index 64% rename from guide/Member/user.md rename to content/docs/(functions)/Member/user.mdx index 74c4a4ef..9a9451f0 100644 --- a/guide/Member/user.md +++ b/content/docs/(functions)/Member/user.mdx @@ -1,4 +1,7 @@ -# $user +--- +title: "$user" +--- + Retrieve an information about user given his user id, like his username. Multiple options to retrive informations from user. @@ -37,17 +40,18 @@ $user[userID;option] How to show user account creation date - - - !!exec $user[;created] - - - Wednesday, January 1, 2025 08:30 PM - - + + +!!exec $user[;created] + + +Wednesday, January 1, 2025 08:30 PM + + ##### Related functions: `$nickname` -##### Function Difficulty: -###### Tags: \ No newline at end of file +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx new file mode 100644 index 00000000..e91fc98c --- /dev/null +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -0,0 +1,49 @@ +--- +title: "$userAvatar" +--- + +Returns the avatar (profile picture) URL of the user who was specified. + +## Usage +```bash +$userAvatar[userID;size;dynamic;serverAvatar] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return avatar URL from. +2. **size** - (Optional) default value: `2048`. The size of user avatar to return in pixels. +3. **dynamic** - (Optional) default value: `yes`. Can be `yes` or `no`. If yes, animated avatar URL will be returned (if they have animated). If no, static image will be returned. +4. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. + +## Examples + +#### Sending avatar URL + +How is the avatar URL displayed when sent with text and without text + + + +!!exec With text: $userAvatar + + +With text: https://cdn.discordapp.com/embed/avatars/0.png
+User Avatar +
+ +!!exec $userAvatar + + +User Avatar + +
+ + + +You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. +To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). + + + +##### Related functions: `$attachment` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx new file mode 100644 index 00000000..bea520fd --- /dev/null +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -0,0 +1,60 @@ +--- +title: "$userBanner" +--- + +Returns the banner URL of a user. + +## Usage + +```bash +$userBanner[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return banner URL from. If no banner is found, returns `undefined`. + +## Example + +#### Banner is available + +How is the banner URL displayed when sent with text and without text + + + +!!exec With text: $userBanner + + +With text: https://cdn.discordapp.com/banners/287135364127129601/a_0c1e74ef99e35d10f868bd839066e022.png
+User Banner +
+ +!!exec $userBanner + + +User Banner + +
+ +#### Banner is not available + +What shows when user does not have banner + + + +!!exec $userBanner + + +undefined + + + + + +You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. +To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). + + + +##### Related functions: `$attachment` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx new file mode 100644 index 00000000..d11e2062 --- /dev/null +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -0,0 +1,46 @@ +--- +title: "$userConnectedVC" +--- + +Returns the ID of a voice channel the user is currently connected to. + +## Usage + +```bash +$userConnectedVC[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return voice channel they are connected to. + +## Example + +#### Is connected to a voice channel + +What happens if user is connected to a voice channel + + + +!!exec $userConnectedVC + + +123456789987654321 + + + +#### Is not connected to a voice channel + +What happens if user is not connected to a voice channel + + + +!!exec $userConnectedVC + + +undefined + + + +##### Related functions: `$vcBefore` `$vcAfter` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx new file mode 100644 index 00000000..5973a4cb --- /dev/null +++ b/content/docs/(functions)/Member/userExists.mdx @@ -0,0 +1,42 @@ +--- +title: "$userExists" +--- + +Checks if a user exists in the server. Returns `true` if the user exists, and `false` if not. + +## Usage + +```bash +$userExists[userID] +``` +1. **userID** - The ID of the user to check. If left empty, false will be returned. + +## Example + +#### Using $userExists + +How to use $userExists + + + +!!exec $userExists[$authorID] + + +true + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$findMember` + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx new file mode 100644 index 00000000..ba2ae5a8 --- /dev/null +++ b/content/docs/(functions)/Member/userID.mdx @@ -0,0 +1,41 @@ +--- +title: "$userID" +--- + +Returns a user ID based on the given username. + +## Usage +```bash +$userID[username] +``` +1. **username** - (Optional) if not provided, $authorID will be returned. The username of a user you want to return ID of. + +## Example + +#### Using $userID + +How to use $userID + + + +!!exec $userID[user] + + +123456789123456789 + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$authorID` `$findMember` + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx new file mode 100644 index 00000000..1abcd0a9 --- /dev/null +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -0,0 +1,43 @@ +--- +title: "$userPerms" +--- + +Returns a list of permissions a user has across the server based on their roles. + +## Usage + +```bash +$userPerms[userID;separator] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return permissions from. +2. **separator** - (Optional) default value: `, `. The separator used for creating permission list. + +## Example + +#### Using $userPerms + +How to use $userPerms + + + +!!exec $userPerms[;/] + + +View Channel/Send Messages/Mention Everyone + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$rolePerms` `$hasPerms` + +**Function Difficulty:** + +**Tags:** diff --git a/guide/Member/userReacted.md b/content/docs/(functions)/Member/userReacted.mdx similarity index 51% rename from guide/Member/userReacted.md rename to content/docs/(functions)/Member/userReacted.mdx index 0bf95c1e..123ac8b4 100644 --- a/guide/Member/userReacted.md +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -1,4 +1,6 @@ -# $userReacted +--- +title: "$userReacted" +--- Checks if a user has reacted to a message with the given emoji. Returns `true` or `false`. @@ -18,26 +20,29 @@ $userReacted[channelID;messageID;userID;reaction] How to use $userReacted - - - !!exec $wait[5s] $userReacted[;;;DogSmile] - - - - - - true - - - -::: warning Cache + + +!!exec $wait[5s] $userReacted[;;;DogSmile] + + + + + +true + + + + + This function works on the bot's cache to find members. If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+User will be cached after they trigger any command from this bot, but eventually they will get deleted.
To have all members cached, you will need Tier 5 Bot. -::: + +
##### Related functions: `$getMessageReactions` `$getReactionCount` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx new file mode 100644 index 00000000..a70dd9dc --- /dev/null +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -0,0 +1,42 @@ +--- +title: "$userRoleColor" +--- + +Returns the hex color code of the users highest role. + +## Usage + +```bash +$userRoleColor[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return top role color from. + +## Example + +#### Using $userRoleColor + +How to use $userRoleColor + + + +!!exec $userRoleColor + + +#d6e0ff + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$userRoles` + +**Difficulty:** + +**Tags:** diff --git a/guide/Member/userRoles.md b/content/docs/(functions)/Member/userRoles.mdx similarity index 54% rename from guide/Member/userRoles.md rename to content/docs/(functions)/Member/userRoles.mdx index 547be0f6..c3f9b8dd 100644 --- a/guide/Member/userRoles.md +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -1,4 +1,6 @@ -# $userRoles +--- +title: "$userRoles" +--- Returns the list of roles from a user. @@ -17,23 +19,26 @@ $userRoles[userID;type;separator] How to return roles from message author - - - !!exec $userRoles[;ids;/] - - - 123456789987654321/123456789123456789 - - + + +!!exec $userRoles[;ids;/] + + +123456789987654321/123456789123456789 + + + + -::: warning Cache This function works on the bot's cache to find members. If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+User will be cached after they trigger any command from this bot, but eventually they will get deleted.
To have all members cached, you will need Tier 5 Bot. -::: + +
##### Related functions: `$hasRoles` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx new file mode 100644 index 00000000..11f345c1 --- /dev/null +++ b/content/docs/(functions)/Member/userTag.mdx @@ -0,0 +1,39 @@ +--- +title: "$userTag" +--- + +Returns the username and tag (discriminator) of a user. + +## Usage + +```bash +$userTag[userID] +``` +1. **userID** - (Opional) default value: `$authorID`. The ID of a user you want to return username and tag from. + +## Example + +#### Using $userTag + +How to use $userTag + + + +!!exec $userTag + + +user#1234 + + + + + +This feature is deprecated because Discord switched to usernames. This function will return only username as of the username update. This still works on bots. + + + +##### Related functions: `$nickname` `$discriminator` `$username` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx new file mode 100644 index 00000000..cd1e0b24 --- /dev/null +++ b/content/docs/(functions)/Member/username.mdx @@ -0,0 +1,42 @@ +--- +title: "$username" +--- + +Returns the username of the given user. + +## Usage + +```bash +$username[userID] +``` +1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return nickname from. + +## Example + +#### Using $nickname + +How to use $nickname + + + +!!exec $nickname + + +User + + + + + +This function works on the bot's cache to find members. +If the user is not cached, the function will not find them. +User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+To have all members cached, you will need Tier 5 Bot. + +
+ +##### Related functions: `$nickname` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx new file mode 100644 index 00000000..3e140d90 --- /dev/null +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -0,0 +1,40 @@ +--- +title: "$usersBanned" +--- + +Returns a list of users banned from the current server. + +## Usage + +```bash +$usersBanned[type;separator] +``` +1. **type** - (Optional) default value: `username`. Can be `id`, `username` or `mention`. What format of returned users do you want. +2. **separator** - (Optional) default value: `, `. The separator used for creating the list of users. + +## Example + +#### Using $usersBanned + +How to use $usersBanned + + + +!!exec $usersBanned + + +user, user1, user2 + + + + + +Make sure that the bot does have sufficient permission. + + + +##### Related functions: `$ban` `$unban` + +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/usersInChannel.md b/content/docs/(functions)/Member/usersInChannel.mdx similarity index 53% rename from guide/Member/usersInChannel.md rename to content/docs/(functions)/Member/usersInChannel.mdx index 2cb8e367..6b57bec9 100644 --- a/guide/Member/usersInChannel.md +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -1,4 +1,6 @@ -# $usersInChannel +--- +title: "$usersInChannel" +--- Returns a list of users in given text or voice channel. @@ -17,23 +19,26 @@ $usersInChannel[channelID;type;separator] How to use $usersInChannel - - - !!exec $usersInChannel - - - user, user1, user2 - - + + +!!exec $usersInChannel + + +user, user1, user2 + + + + -::: warning Cache This function works on the bot's cache to find members. If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+User will be cached after they trigger any command from this bot, but eventually they will get deleted.
To have all members cached, you will need Tier 5 Bot. -::: + +
##### Related functions: `$usersWithRole` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/usersTyping.md b/content/docs/(functions)/Member/usersTyping.mdx similarity index 52% rename from guide/Member/usersTyping.md rename to content/docs/(functions)/Member/usersTyping.mdx index b09b9b0d..449ff4ec 100644 --- a/guide/Member/usersTyping.md +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -1,4 +1,6 @@ -# $usersTyping +--- +title: "$usersTyping" +--- Returns a list of users currently typing in a channel. If no users are typing, returns an empty string. @@ -17,21 +19,24 @@ $usersTyping[channelID;type;separator] How to use $usersTyping - - - !!exec $usersTyping - - - user, user1, user2 - - + + +!!exec $usersTyping + + +user, user1, user2 + + + + -::: tip Tip The bot needs the "Read Messages/View Channels" permission in the given channel to be able to see who is typing. Rate limits may apply if this function is used excessively. -::: + + ##### Related functions: `$usersInChannel` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Member/usersWithRole.md b/content/docs/(functions)/Member/usersWithRole.mdx similarity index 52% rename from guide/Member/usersWithRole.md rename to content/docs/(functions)/Member/usersWithRole.mdx index 1643cf99..72064f04 100644 --- a/guide/Member/usersWithRole.md +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -1,4 +1,6 @@ -# $usersWithRole +--- +title: "$usersWithRole" +--- Returns a list of users who have the given role. @@ -17,23 +19,26 @@ $usersWithRole[roleID;separator;type] How to use $usersWithRole - - - !!exec $usersWithRole[;, ;username] - - - user, user1, user2 - - + + +!!exec $usersWithRole[;, ;username] + + +user, user1, user2 + + + + -::: warning Cache This function works on the bot's cache to find members. If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
+User will be cached after they trigger any command from this bot, but eventually they will get deleted.
To have all members cached, you will need Tier 5 Bot. -::: + +
##### Related functions: `$userRoles` -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Message/DM.md b/content/docs/(functions)/Message/DM.mdx similarity index 66% rename from guide/Message/DM.md rename to content/docs/(functions)/Message/DM.mdx index 8d2b8878..2bf72b1d 100644 --- a/guide/Message/DM.md +++ b/content/docs/(functions)/Message/DM.mdx @@ -1,4 +1,8 @@ -# $DM +--- +title: "$DM" +--- + + Sends the output of your code directly to the author via Discord Direct Message (DM), or to the specified user ID's DM. @@ -19,25 +23,27 @@ Sends the output of your code directly to the author via Discord Direct Message !!exec $DM[$authorID] This is a fantastic message! ``` - - - !!exec $DM[$authorID] This is a fantastic message! - - + + +!!exec $DM[$authorID] This is a fantastic message! + + **Result (Sent to the Command Author's DM):** - - - This is a fantastic message! - - + + +This is a fantastic message! + + + + -::: tip Related Functions * `$sendDM`: Send the output of the console to a DM message. (More control over the DM) * `$channelSendMessage`: Send a message to a specific channel in the server. * `$sendMessage`: Send a message to the channel where the command was used. -::: + + **Difficulty:** diff --git a/guide/Message/addCmdReactions.md b/content/docs/(functions)/Message/addCmdReactions.mdx similarity index 69% rename from guide/Message/addCmdReactions.md rename to content/docs/(functions)/Message/addCmdReactions.mdx index 74faf516..fa852941 100644 --- a/guide/Message/addCmdReactions.md +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -1,4 +1,6 @@ -# $addCmdReactions +--- +title: "$addCmdReactions" +--- Reacts to the user's message with multiple emojis. @@ -12,7 +14,8 @@ This function allows you to add multiple reactions to the message that triggered
-::: tip Example + + This example adds a checkmark and a cross emoji as reactions to the user's command message. @@ -22,8 +25,10 @@ $addCmdReactions[✅;❌] ![](https://cdn.discordapp.com/attachments/914682255346118687/940710840892551189/Screenshot_20220208174856.jpg) -::: -##### Function difficulty: + + +**Function difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/addMessageReactions.md b/content/docs/(functions)/Message/addMessageReactions.mdx similarity index 69% rename from guide/Message/addMessageReactions.md rename to content/docs/(functions)/Message/addMessageReactions.mdx index 2118cb37..4fa9b85d 100644 --- a/guide/Message/addMessageReactions.md +++ b/content/docs/(functions)/Message/addMessageReactions.mdx @@ -1,4 +1,6 @@ -# $addMessageReactions +--- +title: "$addMessageReactions" +--- Adds reactions (emojis) to a message by its ID. @@ -10,7 +12,8 @@ Adds reactions (emojis) to a message by its ID.
-::: tip Example + + This example demonstrates adding multiple reactions to a message using its ID. @@ -18,8 +21,10 @@ This example demonstrates adding multiple reactions to a message using its ID. You can use the function format `{reactions}` (formatted as `curl`) to use inside functions like `$sendMessage` to easily apply reactions. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/addReactions.md b/content/docs/(functions)/Message/addReactions.mdx similarity index 62% rename from guide/Message/addReactions.md rename to content/docs/(functions)/Message/addReactions.mdx index d7a4f29d..30cf028b 100644 --- a/guide/Message/addReactions.md +++ b/content/docs/(functions)/Message/addReactions.mdx @@ -1,4 +1,6 @@ -# $addReactions +--- +title: "$addReactions" +--- Adds reactions to the bot's response. @@ -8,14 +10,17 @@ Adds reactions to the bot's response. This function allows you to add multiple reactions to the message the bot just sent. Simply list the emojis you want to use, separated by semicolons. -::: tip Examples + + This example shows how to react to a message with specific emojis. ![Example of $addReactions usage](https://cdn.discordapp.com/attachments/914682255346118687/940730743804551198/Screenshot_20220208190803.jpg) -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/argsCheck.md b/content/docs/(functions)/Message/argsCheck.mdx similarity index 94% rename from guide/Message/argsCheck.md rename to content/docs/(functions)/Message/argsCheck.mdx index 513d6357..469482a1 100644 --- a/guide/Message/argsCheck.md +++ b/content/docs/(functions)/Message/argsCheck.mdx @@ -1,4 +1,6 @@ -# $argsCheck +--- +title: "$argsCheck" +--- This function checks if the user has provided the correct number of arguments. It's useful for ensuring your commands receive the expected input. @@ -14,7 +16,7 @@ $argsCheck[(>//none)**: This specifies the type of comparison. Choose one of the following: +* **(\/none)**: This specifies the type of comparison. Choose one of the following: * `<`: Less than the specified `number`. * `>`: Greater than the specified `number`. * `none`: (optional - if omitted, this is the default). Equal to the specified `number`. Using no comparator means it expects *exactly* the specified number of arguments. diff --git a/guide/Message/argsCount.md b/content/docs/(functions)/Message/argsCount.mdx similarity index 87% rename from guide/Message/argsCount.md rename to content/docs/(functions)/Message/argsCount.mdx index f0bab947..c15cd004 100644 --- a/guide/Message/argsCount.md +++ b/content/docs/(functions)/Message/argsCount.mdx @@ -1,4 +1,6 @@ -# $argsCount +--- +title: "$argsCount" +--- This function returns the number of arguments a user has provided to your bot's command. It's useful for validating if the correct number of arguments has been given. diff --git a/guide/Message/awaitMessage.md b/content/docs/(functions)/Message/awaitMessage.mdx similarity index 70% rename from guide/Message/awaitMessage.md rename to content/docs/(functions)/Message/awaitMessage.mdx index e7cdb5ba..518e1e2e 100644 --- a/guide/Message/awaitMessage.md +++ b/content/docs/(functions)/Message/awaitMessage.mdx @@ -1,4 +1,6 @@ -# $awaitMessage +--- +title: "$awaitMessage" +--- The `$awaitMessage` function allows your bot to wait for a specific user's message or any message within a channel and then retrieve the message ID or content. @@ -37,17 +39,17 @@ This example sends the message "Are you tall?" and waits for the user who execut !!exec Your answer is: $awaitMessage[Are you tall?;$authorID] ``` - - - !!exec Your answer is: $awaitMessage[Are you tall?;$authorID] - - - Are you tall? - - - YES - - - Your answer is: YES - - \ No newline at end of file + + +!!exec Your answer is: $awaitMessage[Are you tall?;$authorID] + + +Are you tall? + + +YES + + +Your answer is: YES + + \ No newline at end of file diff --git a/guide/Message/channelSendMessage.md b/content/docs/(functions)/Message/channelSendMessage.mdx similarity index 68% rename from guide/Message/channelSendMessage.md rename to content/docs/(functions)/Message/channelSendMessage.mdx index b87e0ed4..b76db89e 100644 --- a/guide/Message/channelSendMessage.md +++ b/content/docs/(functions)/Message/channelSendMessage.mdx @@ -1,4 +1,6 @@ -# $channelSendMessage +--- +title: "$channelSendMessage" +--- Sends a message to a specified channel. This function allows you to send messages to any channel your bot has access to. @@ -11,14 +13,14 @@ Sends a message to a specified channel. This function allows you to send message | `return ID` | `yes` or `no`. If `yes`, the ID of the sent message will be returned. Defaults to `no`. This is useful if you need to edit or delete the message later. | No | `no` |
- - - !!exec $channelSendMessage[879431439299543040;This is a fantastic message!;no] - - - This is a fantastic message! - - + + +!!exec $channelSendMessage[879431439299543040;This is a fantastic message!;no] + + +This is a fantastic message! + + #### Examples @@ -36,10 +38,12 @@ Here are some examples of how to use the `$channelSendMessage` function: ![](https://i.imgur.com/ApX37tb.png) -You can send more complex messages with features like footers and fields by using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This format allows for more detailed control over your messages. +You can send more complex messages with features like footers and fields by using the [Message Curl Format](/CodeReferences/ref.message_curl_format). This format allows for more detailed control over your messages. + + -::: tip Related Functions * `$sendMessage`: Sends a message to the channel where the command was used. -::: -##### Function difficulty: \ No newline at end of file + + +**Function difficulty:** diff --git a/guide/Message/clearReaction.md b/content/docs/(functions)/Message/clearReaction.mdx similarity index 70% rename from guide/Message/clearReaction.md rename to content/docs/(functions)/Message/clearReaction.mdx index 692f9600..c4f548c0 100644 --- a/guide/Message/clearReaction.md +++ b/content/docs/(functions)/Message/clearReaction.mdx @@ -1,4 +1,6 @@ -# $clearReaction +--- +title: "$clearReaction" +--- Removes a specific reaction from a message for a given user. @@ -13,13 +15,16 @@ Removes a specific reaction from a message for a given user.
-::: tip Example + + This example shows how to remove a specific user's reaction from a message. ![](https://cdn.discordapp.com/attachments/914682255346118687/940733866371612712/Screenshot_20220208191957.jpg) -::: -##### Difficulty: + + +**Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/clearReactions.md b/content/docs/(functions)/Message/clearReactions.mdx similarity index 75% rename from guide/Message/clearReactions.md rename to content/docs/(functions)/Message/clearReactions.mdx index ae1a4003..be796816 100644 --- a/guide/Message/clearReactions.md +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -1,4 +1,6 @@ -# $clearReactions +--- +title: "$clearReactions" +--- This function allows you to clear reactions from a specific message. You can either clear all reactions or only those associated with a particular emoji. @@ -24,11 +26,14 @@ Clearing only the 👍 reactions from a message: $clearReactions[8372387429384729;9483749283749283;👍] ``` -::: tip Visual Example + + ![](https://cdn.discordapp.com/attachments/914682255346118687/940735320889098260/Screenshot_20220208192612.jpg) -::: -##### Difficulty: + + +**Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/createWebhook.md b/content/docs/(functions)/Message/createWebhook.mdx similarity index 56% rename from guide/Message/createWebhook.md rename to content/docs/(functions)/Message/createWebhook.mdx index c815aa5e..5a551fe1 100644 --- a/guide/Message/createWebhook.md +++ b/content/docs/(functions)/Message/createWebhook.mdx @@ -1,14 +1,20 @@ -# $createWebhook +--- +title: "$createWebhook" +--- Creates a webhook in a specified channel. -::: tip Webhooks + + Webhooks are a simple way to send automated messages to different servers, potentially with custom user profiles. -::: -::: warning Permissions + + + + The bot requires the `Manage Webhooks` permission in the target channel to execute this function successfully. -::: + + #### Usage: `$createWebhook[channelID;name;avatarURL;returnWebhookID&Token (yes/no);separator]` @@ -21,18 +27,19 @@ The bot requires the `Manage Webhooks` permission in the target channel to execu * `separator`: The separator used to delimit the webhook ID and token when `returnWebhookID&Token` is set to `yes`.
- - - !!exec $createWebHook[$channelid;WikiHook;https://cdn.discordapp.com/guilds/723032190719623289/users/327996784012034050/avatars/7aa9a46ad68d89c4eb8da9d39bbf7ba4.webp?size=2048;yes;/] - - - 94074xx.../O_BoAW... - - + + +!!exec $createWebHook[$channelid;WikiHook;https://cdn.discordapp.com/guilds/723032190719623289/users/327996784012034050/avatars/7aa9a46ad68d89c4eb8da9d39bbf7ba4.webp?size=2048;yes;/] + + +94074xx.../O_BoAW... + + **Example:** In this example, a webhook named "WikiHook" is created in the channel specified by `$channelid`. The webhook is given a specific avatar. The command then returns the webhook ID and Token, separated by `/`. -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Message/deleteCommand.md b/content/docs/(functions)/Message/deleteCommand.mdx similarity index 50% rename from guide/Message/deleteCommand.md rename to content/docs/(functions)/Message/deleteCommand.mdx index a274ddb0..0ba69223 100644 --- a/guide/Message/deleteCommand.md +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -1,4 +1,7 @@ -# $deleteCommand +--- +title: "$deleteCommand" +--- + deletes the user's message that triggered the command ## Usage @@ -19,10 +22,13 @@ $deleteCommand $deleteCommand[1m] ``` -::: tip Related Functions + + * `$deleteMessage`: Delete any message within a server. This is more flexible as it lets you target specific messages. -::: -##### Function difficulty: + + +**Function difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/deleteIn.md b/content/docs/(functions)/Message/deleteIn.mdx similarity index 56% rename from guide/Message/deleteIn.md rename to content/docs/(functions)/Message/deleteIn.mdx index 1fdb4fd0..2ea4833b 100644 --- a/guide/Message/deleteIn.md +++ b/content/docs/(functions)/Message/deleteIn.mdx @@ -1,4 +1,6 @@ -# $deleteIn +--- +title: "$deleteIn" +--- Deletes the bot's message after a specified duration. @@ -12,11 +14,14 @@ Deletes the bot's message after a specified duration. `$deleteIn[10s]` - This will delete the bot's message 10 seconds after it's sent. -::: tip Related Functions + + * `$deleteMessage`: Deletes a specific message in the server or DMs. * `$deletecommand`: Deletes the message that triggered the command. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/deleteMessage.md b/content/docs/(functions)/Message/deleteMessage.mdx similarity index 59% rename from guide/Message/deleteMessage.md rename to content/docs/(functions)/Message/deleteMessage.mdx index c4cc74d7..f917158b 100644 --- a/guide/Message/deleteMessage.md +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -1,4 +1,6 @@ -# $deleteMessage +--- +title: "$deleteMessage" +--- Deletes a specified message from a channel. @@ -13,10 +15,13 @@ Deletes a specified message from a channel. This example will delete the message with the ID specified in `$messageID` from the channel with the ID specified in `$channelID`. Make sure your bot has the necessary permissions to delete messages in the specified channel. -::: tip Related Functions + + `$deletecommand` - Use this function to delete the message that triggered the command. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/deleteWebhook.md b/content/docs/(functions)/Message/deleteWebhook.mdx similarity index 52% rename from guide/Message/deleteWebhook.md rename to content/docs/(functions)/Message/deleteWebhook.mdx index fc35ab70..01886b04 100644 --- a/guide/Message/deleteWebhook.md +++ b/content/docs/(functions)/Message/deleteWebhook.mdx @@ -1,4 +1,6 @@ -# $deleteWebhook +--- +title: "$deleteWebhook" +--- Deletes a webhook using its ID and token. @@ -8,6 +10,7 @@ This function requires both the Webhook ID and Token to function correctly. Ens
-##### Difficulty: +**Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Message/deleteWebhookMessage.md b/content/docs/(functions)/Message/deleteWebhookMessage.mdx similarity index 97% rename from guide/Message/deleteWebhookMessage.md rename to content/docs/(functions)/Message/deleteWebhookMessage.mdx index 3375dc48..9956c573 100644 --- a/guide/Message/deleteWebhookMessage.md +++ b/content/docs/(functions)/Message/deleteWebhookMessage.mdx @@ -1,4 +1,6 @@ -# Delete Webhook Message +--- +title: "Delete Webhook Message" +--- This function deletes a message sent by a webhook. diff --git a/guide/Message/disableChannelMentions.md b/content/docs/(functions)/Message/disableChannelMentions.mdx similarity index 95% rename from guide/Message/disableChannelMentions.md rename to content/docs/(functions)/Message/disableChannelMentions.mdx index 8cce817f..d5dc29b1 100644 --- a/guide/Message/disableChannelMentions.md +++ b/content/docs/(functions)/Message/disableChannelMentions.mdx @@ -1,4 +1,6 @@ -# $disableChannelMentions +--- +title: "$disableChannelMentions" +--- This function prevents the bot from mentioning any channels within a message. This is useful for sanitizing output or preventing accidental channel spam. diff --git a/guide/Message/disableEveryoneMentions.md b/content/docs/(functions)/Message/disableEveryoneMentions.mdx similarity index 91% rename from guide/Message/disableEveryoneMentions.md rename to content/docs/(functions)/Message/disableEveryoneMentions.mdx index f07277f6..054cc24a 100644 --- a/guide/Message/disableEveryoneMentions.md +++ b/content/docs/(functions)/Message/disableEveryoneMentions.mdx @@ -1,4 +1,6 @@ -# Disable @everyone Mentions +--- +title: "Disable @everyone Mentions" +--- This command disables the ability for users to mention everyone in the channel using the `@everyone` role. diff --git a/guide/Message/disableRoleMentions.md b/content/docs/(functions)/Message/disableRoleMentions.mdx similarity index 95% rename from guide/Message/disableRoleMentions.md rename to content/docs/(functions)/Message/disableRoleMentions.mdx index 7e666fdb..285db502 100644 --- a/guide/Message/disableRoleMentions.md +++ b/content/docs/(functions)/Message/disableRoleMentions.mdx @@ -1,4 +1,6 @@ -# $disableRoleMentions +--- +title: "$disableRoleMentions" +--- This function prevents the bot from mentioning any roles in its messages. This is useful for avoiding unnecessary notifications to server members. diff --git a/guide/Message/editEmbed.md b/content/docs/(functions)/Message/editEmbed.mdx similarity index 99% rename from guide/Message/editEmbed.md rename to content/docs/(functions)/Message/editEmbed.mdx index b1b05b7f..0834da85 100644 --- a/guide/Message/editEmbed.md +++ b/content/docs/(functions)/Message/editEmbed.mdx @@ -1,4 +1,6 @@ -# $editEmbed +--- +title: "$editEmbed" +--- Edit an existing embed within a specified message. diff --git a/guide/Message/editIn.md b/content/docs/(functions)/Message/editIn.mdx similarity index 97% rename from guide/Message/editIn.md rename to content/docs/(functions)/Message/editIn.mdx index e773774d..fb7855f1 100644 --- a/guide/Message/editIn.md +++ b/content/docs/(functions)/Message/editIn.mdx @@ -1,4 +1,6 @@ -# $editIn +--- +title: "$editIn" +--- Edits a bot's message after a specified delay. This function allows you to update the message content after a set period of time, making it useful for creating dynamic or delayed responses. diff --git a/guide/Message/editMessage.md b/content/docs/(functions)/Message/editMessage.mdx similarity index 60% rename from guide/Message/editMessage.md rename to content/docs/(functions)/Message/editMessage.mdx index a677bc2e..b24b3b0d 100644 --- a/guide/Message/editMessage.md +++ b/content/docs/(functions)/Message/editMessage.mdx @@ -1,4 +1,6 @@ -# $editMessage +--- +title: "$editMessage" +--- Edits a message previously sent by the bot. This function allows you to modify the content of a message. @@ -16,18 +18,25 @@ $editMessage[123456789012345678;This is the updated message content!] In this example, the message with the ID `123456789012345678` will be edited to display "This is the updated message content!". -::: tip Used Functions + + `$messageID` - Use the `$messageID` function to retrieve the ID of the message that triggered the command. This is useful if you want to edit the same message that invoked the command. -::: -::: tip Note -You can format your `newMessage` as an embed using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This allows you to create rich, visually appealing messages. -::: + + + + +You can format your `newMessage` as an embed using the [Message Curl Format](/CodeReferences/ref.message_curl_format). This allows you to create rich, visually appealing messages. + + + + -::: tip Related Functions * `$deleteMessage` - The `$deleteMessage` function deletes a message from the server or in DMs. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/editWebhookMessage.md b/content/docs/(functions)/Message/editWebhookMessage.mdx similarity index 97% rename from guide/Message/editWebhookMessage.md rename to content/docs/(functions)/Message/editWebhookMessage.mdx index e505ee63..eda02d9a 100644 --- a/guide/Message/editWebhookMessage.md +++ b/content/docs/(functions)/Message/editWebhookMessage.mdx @@ -1,4 +1,6 @@ -# $editWebhookMessage +--- +title: "$editWebhookMessage" +--- This command allows you to edit a message that was sent by a webhook. You'll need the webhook's ID, token, and the message ID of the message you want to modify. diff --git a/guide/Message/emoji.md b/content/docs/(functions)/Message/emoji.mdx similarity index 98% rename from guide/Message/emoji.md rename to content/docs/(functions)/Message/emoji.mdx index 1df8e27f..f12e9908 100644 --- a/guide/Message/emoji.md +++ b/content/docs/(functions)/Message/emoji.mdx @@ -1,4 +1,6 @@ -# $emoji +--- +title: "$emoji" +--- This function packs a punch with **11 different functionalities** related to emojis, all in a single compact command! Get ready to unlock a world of emoji information. diff --git a/guide/Message/emojiID.md b/content/docs/(functions)/Message/emojiID.mdx similarity index 93% rename from guide/Message/emojiID.md rename to content/docs/(functions)/Message/emojiID.mdx index d01a1b26..e1ddc8df 100644 --- a/guide/Message/emojiID.md +++ b/content/docs/(functions)/Message/emojiID.mdx @@ -1,4 +1,6 @@ -# $emojiID +--- +title: "$emojiID" +--- Retrieve the ID of the emoji used in a reaction. diff --git a/guide/Message/emojiName.md b/content/docs/(functions)/Message/emojiName.mdx similarity index 91% rename from guide/Message/emojiName.md rename to content/docs/(functions)/Message/emojiName.mdx index 5a629e1f..626398da 100644 --- a/guide/Message/emojiName.md +++ b/content/docs/(functions)/Message/emojiName.mdx @@ -1,4 +1,6 @@ -# $emojiName +--- +title: "$emojiName" +--- This function, `$emojiName`, returns the name of the emoji a user used in a reaction. It's particularly useful within reaction event triggers to understand which specific emoji prompted an action. diff --git a/guide/Message/emojiToString.md b/content/docs/(functions)/Message/emojiToString.mdx similarity index 95% rename from guide/Message/emojiToString.md rename to content/docs/(functions)/Message/emojiToString.mdx index 0a91929c..22fd544b 100644 --- a/guide/Message/emojiToString.md +++ b/content/docs/(functions)/Message/emojiToString.mdx @@ -1,4 +1,6 @@ -# $emojiToString +--- +title: "$emojiToString" +--- This function returns the actual emoji that a user reacted with in a reaction add/remove event. This is useful for determining which specific emoji triggered the event. diff --git a/guide/Message/emojisFromMessage.md b/content/docs/(functions)/Message/emojisFromMessage.mdx similarity index 97% rename from guide/Message/emojisFromMessage.md rename to content/docs/(functions)/Message/emojisFromMessage.mdx index 8d2db28a..9113df8f 100644 --- a/guide/Message/emojisFromMessage.md +++ b/content/docs/(functions)/Message/emojisFromMessage.mdx @@ -1,4 +1,6 @@ -# $emojisFromMessage +--- +title: "$emojisFromMessage" +--- This function extracts all unicode and custom emojis from a user's message or provided text. diff --git a/guide/Message/enableEveryoneMentions.md b/content/docs/(functions)/Message/enableEveryoneMentions.mdx similarity index 94% rename from guide/Message/enableEveryoneMentions.md rename to content/docs/(functions)/Message/enableEveryoneMentions.mdx index c5b5eb0b..0fdcb792 100644 --- a/guide/Message/enableEveryoneMentions.md +++ b/content/docs/(functions)/Message/enableEveryoneMentions.mdx @@ -1,4 +1,6 @@ -# Enable @everyone Mentions +--- +title: "Enable @everyone Mentions" +--- This command allows you to enable the use of `@everyone` mentions in your Discord server (if disabled by default). **Use with caution!** Enabling `@everyone` can be disruptive if not managed properly. diff --git a/guide/Message/forwardMessage.md b/content/docs/(functions)/Message/forwardMessage.mdx similarity index 90% rename from guide/Message/forwardMessage.md rename to content/docs/(functions)/Message/forwardMessage.mdx index 9213518b..639adb8d 100644 --- a/guide/Message/forwardMessage.md +++ b/content/docs/(functions)/Message/forwardMessage.mdx @@ -1,4 +1,7 @@ -# $forwardMessage +--- +title: "$forwardMessage" +--- + forward a message to another channel #### Usage: `$forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return the new message id (yes/no)]` diff --git a/guide/Message/getCommandOption.md b/content/docs/(functions)/Message/getCommandOption.mdx similarity index 71% rename from guide/Message/getCommandOption.md rename to content/docs/(functions)/Message/getCommandOption.mdx index dc609855..72ff4f97 100644 --- a/guide/Message/getCommandOption.md +++ b/content/docs/(functions)/Message/getCommandOption.mdx @@ -1,4 +1,6 @@ -# $getCommandOption +--- +title: "$getCommandOption" +--- Retrieves the value of a specific option from a slash command. @@ -18,5 +20,6 @@ This function requires you to specify the data type of the option you're trying
-##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Message/getEmbed.md b/content/docs/(functions)/Message/getEmbed.mdx similarity index 84% rename from guide/Message/getEmbed.md rename to content/docs/(functions)/Message/getEmbed.mdx index e48a01de..e35d9883 100644 --- a/guide/Message/getEmbed.md +++ b/content/docs/(functions)/Message/getEmbed.mdx @@ -1,4 +1,6 @@ -# $getEmbed +--- +title: "$getEmbed" +--- Retrieves information from an embed within a specific message. This function allows you to extract various details from an embed, such as its title, description, footer, and more. @@ -38,11 +40,11 @@ These are the available values you can use to specify what information to retrie This example retrieves the description of an embed from a message in the same channel. - - - !!exec $getEmbed[$channelID;$messageID;description] - - - This was an embed description - - \ No newline at end of file + + +!!exec $getEmbed[$channelID;$messageID;description] + + +This was an embed description + + \ No newline at end of file diff --git a/guide/Message/getMessage.md b/content/docs/(functions)/Message/getMessage.mdx similarity index 98% rename from guide/Message/getMessage.md rename to content/docs/(functions)/Message/getMessage.mdx index 44b9a5de..64451f8b 100644 --- a/guide/Message/getMessage.md +++ b/content/docs/(functions)/Message/getMessage.mdx @@ -1,4 +1,6 @@ -# $getMessage +--- +title: "$getMessage" +--- Retrieves information about a specific message using its ID. This function allows you to access various aspects of a message, such as its content, author, and more. diff --git a/guide/Message/getMessageReactions.md b/content/docs/(functions)/Message/getMessageReactions.mdx similarity index 98% rename from guide/Message/getMessageReactions.md rename to content/docs/(functions)/Message/getMessageReactions.mdx index efff50c9..c70b14b4 100644 --- a/guide/Message/getMessageReactions.md +++ b/content/docs/(functions)/Message/getMessageReactions.mdx @@ -1,4 +1,6 @@ -# $getMessageReactions +--- +title: "$getMessageReactions" +--- This command retrieves the reactions present on a specified message. diff --git a/guide/Message/getReactionCount.md b/content/docs/(functions)/Message/getReactionCount.mdx similarity index 76% rename from guide/Message/getReactionCount.md rename to content/docs/(functions)/Message/getReactionCount.mdx index 788631e0..8c1d4d49 100644 --- a/guide/Message/getReactionCount.md +++ b/content/docs/(functions)/Message/getReactionCount.mdx @@ -1,4 +1,6 @@ -# $getReactionCount +--- +title: "$getReactionCount" +--- Get the number of reactions for a specific emoji on a message. @@ -18,14 +20,14 @@ $getReactionCount[channelID;messageID;reaction] This example shows how to use `$getReactionCount` to display how many users reacted with a thumbs-up (`👍`) to a specific message. - - - !!exec Users agree with this decision: $getReactionCount[$channelID;12345678987654321;👍] - - - Users agree with this decision: 13 - - + + +!!exec Users agree with this decision: $getReactionCount[$channelID;12345678987654321;👍] + + +Users agree with this decision: 13 + + **Explanation:** diff --git a/guide/Message/getReactions.md b/content/docs/(functions)/Message/getReactions.mdx similarity index 78% rename from guide/Message/getReactions.md rename to content/docs/(functions)/Message/getReactions.mdx index 517079d0..a94bbc5a 100644 --- a/guide/Message/getReactions.md +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -1,4 +1,6 @@ -# $getReactions +--- +title: "$getReactions" +--- Retrieve a list of users who reacted with a specific emoji to a message. @@ -16,7 +18,8 @@ Retrieve a list of users who reacted with a specific emoji to a message.
-::: tip Example + + **Scenario:** You want to get a list of users who reacted with the 👍 emoji on a specific message and mention them. @@ -26,14 +29,20 @@ Retrieve a list of users who reacted with a specific emoji to a message. $getReactions[832894131844128888;940739445487988807;👍;mention] ``` -::: tip Visual Examples + + + + + ![](https://cdn.discordapp.com/attachments/914682255346118687/940739445487988807/Screenshot_20220208194229.jpg) Counting how many users reacted ![](https://cdn.discordapp.com/attachments/914682255346118687/940740236466618418/Screenshot_20220208194538.jpg) -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Message/hasEmbeds.md b/content/docs/(functions)/Message/hasEmbeds.mdx similarity index 96% rename from guide/Message/hasEmbeds.md rename to content/docs/(functions)/Message/hasEmbeds.mdx index 6b0ecfbb..955694a7 100644 --- a/guide/Message/hasEmbeds.md +++ b/content/docs/(functions)/Message/hasEmbeds.mdx @@ -1,4 +1,6 @@ -# $hasEmbeds +--- +title: "$hasEmbeds" +--- This function checks if a specific message contains any embeds. Embeds are rich content blocks within a message, which can include things like images, links, and formatted text. diff --git a/guide/Message/hyperlink.md b/content/docs/(functions)/Message/hyperlink.mdx similarity index 97% rename from guide/Message/hyperlink.md rename to content/docs/(functions)/Message/hyperlink.mdx index db314ce7..5a8e6f1e 100644 --- a/guide/Message/hyperlink.md +++ b/content/docs/(functions)/Message/hyperlink.mdx @@ -1,4 +1,6 @@ -# $hyperlink +--- +title: "$hyperlink" +--- The `$hyperlink` function allows you to create hyperlinks specifically designed for use within Discord embeds. This ensures your links are properly rendered and clickable within the embedded message. diff --git a/guide/Message/message.md b/content/docs/(functions)/Message/message.mdx similarity index 89% rename from guide/Message/message.md rename to content/docs/(functions)/Message/message.mdx index 0bec60c5..fa25c171 100644 --- a/guide/Message/message.md +++ b/content/docs/(functions)/Message/message.mdx @@ -1,4 +1,6 @@ -# $message +--- +title: "$message" +--- The `$message` function retrieves the user's message or command arguments, providing a powerful way to interact with user input. It's particularly useful for commands where you need to process the text a user has entered. @@ -71,6 +73,8 @@ Imagine you have a slash command: If your code uses `$message[1]`, and the slash command defines the options in the order `user` then `message`, it may return `"John Doe"`. For slash commands, it is generally more reliable to use `$getOption` to retrieve values by option name. -##### Function Difficulty: +**Function Difficulty:** + + +**Tags:** -###### Tags: diff --git a/content/docs/(functions)/Message/messageAttachment.mdx b/content/docs/(functions)/Message/messageAttachment.mdx new file mode 100644 index 00000000..76b846a1 --- /dev/null +++ b/content/docs/(functions)/Message/messageAttachment.mdx @@ -0,0 +1,36 @@ +--- +title: "$messageAttachment" +--- + +This function retrieves the URL of the first attachment found in a message. If a message has multiple attachments, only the URL of the first one will be returned. + +#### Usage: + +```php +$messageAttachment +``` + +
+ +#### Example: + +This example demonstrates how `$messageAttachment` can be used. + + + +!!exec $messageAttachment + + +https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp + + + +**Explanation:** + +* The member sends the command `!!exec $messageAttachment`. +* The bot returns the URL of the first attachment in the member's message. If the message does not contain any attachment it will return an empty string. + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Message/messageExists.mdx b/content/docs/(functions)/Message/messageExists.mdx new file mode 100644 index 00000000..2e36ef86 --- /dev/null +++ b/content/docs/(functions)/Message/messageExists.mdx @@ -0,0 +1,34 @@ +--- +title: "$messageExists" +--- + +Checks if a message exists in a specified channel and returns `true` or `false`. + +#### Usage: + +`$messageExists[channelID;messageID]` + +* **channelID:** The ID of the channel where the message should be checked. +* **messageID:** The ID of the message to check for. + +
+ +**Example:** + +Let's say you want to check if a message with the ID `123456789012345678` exists in the channel with the ID `987654321098765432`. + + + +!!exec $messageExists[987654321098765432;123456789012345678] + + +true + + + +In this example, if the message exists, the bot will return `true`. If the message doesn't exist, the bot will return `false`. + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Message/messageFlags.md b/content/docs/(functions)/Message/messageFlags.mdx similarity index 51% rename from guide/Message/messageFlags.md rename to content/docs/(functions)/Message/messageFlags.mdx index 9b4ab63a..78a9e594 100644 --- a/guide/Message/messageFlags.md +++ b/content/docs/(functions)/Message/messageFlags.mdx @@ -1,4 +1,6 @@ -# $messageFlags +--- +title: "$messageFlags" +--- This function retrieves the flags associated with a message. Message flags provide additional information about the message, such as whether it's a crosspost or if it's a system message. @@ -8,14 +10,14 @@ This function retrieves the flags associated with a message. Message flags provi Here's a simple example demonstrating how to use `$messageFlags`: - - - !!exec Flags: $messageFlags - - - Flags: - - + + +!!exec Flags: $messageFlags + + +Flags: + + **Explanation:** @@ -23,6 +25,7 @@ Here's a simple example demonstrating how to use `$messageFlags`: * The bot executes the command and replaces `$messageFlags` with the actual flags of the triggering message. * The bot then replies with "Flags:" followed by the flags (if any) for that message. If there are no flags, the output will simply be "Flags:". -##### Function difficulty: +**Function difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Message/messageID.md b/content/docs/(functions)/Message/messageID.mdx similarity index 65% rename from guide/Message/messageID.md rename to content/docs/(functions)/Message/messageID.mdx index 93369a50..411b03ba 100644 --- a/guide/Message/messageID.md +++ b/content/docs/(functions)/Message/messageID.mdx @@ -1,4 +1,6 @@ -# $messageID +--- +title: "$messageID" +--- Retrieves the ID of the message that triggered the command. @@ -16,14 +18,14 @@ Retrieves the ID of the message that triggered the command. **Discord Example:** - - - !!exec $messageID - - - 789089088989809890 - - + + +!!exec $messageID + + +789089088989809890 + + **Function Difficulty:** diff --git a/guide/Message/messagePublish.md b/content/docs/(functions)/Message/messagePublish.mdx similarity index 87% rename from guide/Message/messagePublish.md rename to content/docs/(functions)/Message/messagePublish.mdx index 515889e4..e097dd1c 100644 --- a/guide/Message/messagePublish.md +++ b/content/docs/(functions)/Message/messagePublish.mdx @@ -1,4 +1,6 @@ -# $messagePublish +--- +title: "$messagePublish" +--- Publishes a message to an announcement channel. This command allows you to easily share a message from one channel to another, typically an announcement channel. @@ -29,6 +31,7 @@ You can use `$messagePublish` in three ways: $messagePublish[987654321098765432;123456789012345678] ``` -##### Function Difficulty: +**Function Difficulty:** -##### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Message/messageSlice.md b/content/docs/(functions)/Message/messageSlice.mdx similarity index 87% rename from guide/Message/messageSlice.md rename to content/docs/(functions)/Message/messageSlice.mdx index 5bbf324d..b6c4bbad 100644 --- a/guide/Message/messageSlice.md +++ b/content/docs/(functions)/Message/messageSlice.mdx @@ -1,4 +1,6 @@ -# $messageSlice +--- +title: "$messageSlice" +--- Extracts a portion of the message arguments, from a specified start position to an optional end position. @@ -45,5 +47,6 @@ Using the same message: `!!exec a b c d e` Here, `$messageSlice[1;2]` extracts arguments from index 1 to index 2, resulting in `b c`. -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx new file mode 100644 index 00000000..592771d0 --- /dev/null +++ b/content/docs/(functions)/Message/messageType.mdx @@ -0,0 +1,33 @@ +--- +title: "$messageType" +--- + +This function returns the type of the message that triggered the command. This can be useful for creating commands that behave differently depending on how they were called. + +#### Usage: `$messageType` + +
+ +**Example:** + +Here's how `$messageType` might be used in a custom command: + + + +!!exec $messageType + + +Default + + + + + +The `$messageType` function returns a specific message type. You can find a list of possible return values [here](/CodeReferences/ref.message_types). These values represent different ways a message can be sent, such as a regular text message, a system message, or an interaction response. + + + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Message/messageWebhookID.mdx b/content/docs/(functions)/Message/messageWebhookID.mdx new file mode 100644 index 00000000..94d16ff1 --- /dev/null +++ b/content/docs/(functions)/Message/messageWebhookID.mdx @@ -0,0 +1,29 @@ +--- +title: "$messageWebhookID" +--- + +Retrieves the ID of the webhook that sent the message. + +#### Usage: + +`$messageWebhookID` + +This function requires no arguments and simply returns the webhook ID. + +
+ + + +!!exec $messageWebhookID + + +683630053686378498 + + + +**Example:** If a webhook with the ID `683630053686378498` sent the message, the function would return `683630053686378498`. + +**Function difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Message/meta.json b/content/docs/(functions)/Message/meta.json new file mode 100644 index 00000000..72adffee --- /dev/null +++ b/content/docs/(functions)/Message/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Message Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Message/modifyWebhook.md b/content/docs/(functions)/Message/modifyWebhook.mdx similarity index 91% rename from guide/Message/modifyWebhook.md rename to content/docs/(functions)/Message/modifyWebhook.mdx index 8627b1c2..bb99f4cd 100644 --- a/guide/Message/modifyWebhook.md +++ b/content/docs/(functions)/Message/modifyWebhook.mdx @@ -1,4 +1,6 @@ -# Modify Webhook +--- +title: "Modify Webhook" +--- This function allows you to modify a webhook's name and avatar using its ID and token. @@ -15,12 +17,14 @@ This function allows you to modify a webhook's name and avatar using its ID and
-::: tip Example + + Here's an example of how to use this function: ![](https://cdn.discordapp.com/attachments/914682255346118687/940753785867870278/Screenshot_20220208203936.jpg) -::: + +
diff --git a/guide/Message/msg.md b/content/docs/(functions)/Message/msg.mdx similarity index 92% rename from guide/Message/msg.md rename to content/docs/(functions)/Message/msg.mdx index 21c9a402..ed11cff6 100644 --- a/guide/Message/msg.md +++ b/content/docs/(functions)/Message/msg.mdx @@ -1,4 +1,7 @@ -# $msg +--- +title: "$msg" +--- + The `$msg` function is a powerful and compact tool that lets you extract a wide range of information from Discord messages. ### Usage: `$msg[channelid;messageid;property]` @@ -100,14 +103,15 @@ Here's a comprehensive list of the properties you can access with the `$msg` fun
- - - !!exec $msg[$channelID;79890890890809;content] - - - Old Messsage - - - -##### Function difficulty: -###### Tags: \ No newline at end of file + + +!!exec $msg[$channelID;79890890890809;content] + + +Old Messsage + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx new file mode 100644 index 00000000..17be6ef9 --- /dev/null +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -0,0 +1,44 @@ +--- +title: "$noEscapingMessage" +--- + + + +This function behaves similarly to `$message`, but it **does not escape special characters**. This means characters like backticks (`) or newlines will be interpreted literally and won't be replaced with their escaped counterparts. + +#### Usage: `$noEscapingMessage` + +
+ + + +!!exec `` `$` $noEscapingMessage `` ` + + +`` `$` `` ` + + +!!exec `` `$` `` ` + + +`` `#CHAR#` `` ` + + + + + + +**ONLY use this function if you understand the implications and are comfortable handling potentially unsafe characters.** Using `$noEscapingMessage` carelessly can lead to command errors, unexpected behavior, or even security vulnerabilities. Always sanitize your inputs and be aware of the context in which this function is being used. + + + + + + +For most use cases, it's recommended to use `$message` to ensure proper character escaping and prevent unexpected issues. + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx new file mode 100644 index 00000000..99a4a6b7 --- /dev/null +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -0,0 +1,33 @@ +--- +title: "$noMentionMessage" +--- + +The `$noMentionMessage` function returns the content of the message sent by the command executor, but with all mentions removed. This is particularly useful for preventing your bot from accidentally pinging roles or users when echoing user input or using it in other command logic. + +#### Usage: + +`$noMentionMessage` + +This function doesn't require any parameters. It simply returns the message content with mentions stripped out. + +#### Example: + +Let's say you want to echo the user's message in a custom command, but you don't want the bot to actually ping anyone they mentioned. + +Here's how it would look in Discord: + + + +!!exec Server Moderator testing [$noMentionMessage] ($message) + + +Server Moderator [testing] (Server Moderator testing) + + + +In this example, even though the user mentioned "Server Moderator", the bot only mentions them once and then includes "testing" (the message with mentions removed). The original message including the mention is also included. + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Message/pinMessage.md b/content/docs/(functions)/Message/pinMessage.mdx similarity index 98% rename from guide/Message/pinMessage.md rename to content/docs/(functions)/Message/pinMessage.mdx index 913399b2..da0afb95 100644 --- a/guide/Message/pinMessage.md +++ b/content/docs/(functions)/Message/pinMessage.mdx @@ -1,4 +1,6 @@ -# $pinMessage +--- +title: "$pinMessage" +--- Pins a message in a channel. This action requires the bot to have the "Manage Messages" permission in the target channel. diff --git a/guide/Message/poll.md b/content/docs/(functions)/Message/poll.mdx similarity index 61% rename from guide/Message/poll.md rename to content/docs/(functions)/Message/poll.mdx index 72ac507b..378270f5 100644 --- a/guide/Message/poll.md +++ b/content/docs/(functions)/Message/poll.mdx @@ -1,4 +1,6 @@ -# $poll +--- +title: "$poll" +--- retrieve information about a poll in a message @@ -24,11 +26,11 @@ $poll[Channel ID (default $channelID);Message ID (default $messageID);data] `ended`: whether poll is ended (yes/no) ### Example: - - - !!exec Poll name: $poll[$channelID;$messageID;name]
Total votes: $poll[$channelID;$messageID;votes]
Total answers: $poll[$channelID;$messageID;answers]
1st answer name: $poll[$channelID;$messageID;answer 1 name]
2nd answer name: $poll[$channelID;$messageID;answer 2 name]
1st answer votes: $poll[$channelID;$messageID;answer 1 votes]

-
-
+ + +!!exec Poll name: $poll[$channelID;$messageID;name]
Total votes: $poll[$channelID;$messageID;votes]
Total answers: $poll[$channelID;$messageID;answers]
1st answer name: $poll[$channelID;$messageID;answer 1 name]
2nd answer name: $poll[$channelID;$messageID;answer 2 name]
1st answer votes: $poll[$channelID;$messageID;answer 1 votes]

+
+
### Output: ![](https://i.imgur.com/DRajoEQ.png) \ No newline at end of file diff --git a/guide/Message/referenceChannelID.md b/content/docs/(functions)/Message/referenceChannelID.mdx similarity index 92% rename from guide/Message/referenceChannelID.md rename to content/docs/(functions)/Message/referenceChannelID.mdx index d3022ddd..b290a1ba 100644 --- a/guide/Message/referenceChannelID.md +++ b/content/docs/(functions)/Message/referenceChannelID.mdx @@ -1,4 +1,6 @@ -# $referenceChannelID +--- +title: "$referenceChannelID" +--- Retrieves the ID of the channel containing the message a user replied to. diff --git a/guide/Message/referenceMessageID.md b/content/docs/(functions)/Message/referenceMessageID.mdx similarity index 91% rename from guide/Message/referenceMessageID.md rename to content/docs/(functions)/Message/referenceMessageID.mdx index 28190847..b4f1aed3 100644 --- a/guide/Message/referenceMessageID.md +++ b/content/docs/(functions)/Message/referenceMessageID.mdx @@ -1,4 +1,6 @@ -# $referenceMessageID +--- +title: "$referenceMessageID" +--- This variable holds the ID of the message that a user is replying to within a channel. diff --git a/guide/Message/reply.md b/content/docs/(functions)/Message/reply.mdx similarity index 98% rename from guide/Message/reply.md rename to content/docs/(functions)/Message/reply.mdx index 1217effe..bad37f2d 100644 --- a/guide/Message/reply.md +++ b/content/docs/(functions)/Message/reply.mdx @@ -1,4 +1,6 @@ -# $reply +--- +title: "$reply" +--- This command allows your bot to reply to a specific message within a channel. It's useful for referencing context or answering questions directly. diff --git a/guide/Message/sendCrosspostingMessage.md b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx similarity index 97% rename from guide/Message/sendCrosspostingMessage.md rename to content/docs/(functions)/Message/sendCrosspostingMessage.mdx index 190a4b8f..830a8d72 100644 --- a/guide/Message/sendCrosspostingMessage.md +++ b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx @@ -1,4 +1,6 @@ -# $sendCrosspostingMessage +--- +title: "$sendCrosspostingMessage" +--- Send a message to multiple channels simultaneously. This function is useful for quickly broadcasting announcements or information across various channels on your server. diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx new file mode 100644 index 00000000..bc6efad9 --- /dev/null +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -0,0 +1,51 @@ +--- +title: "$sendDM" +--- + + + +Sends the output of the code to the message author's DMs or to the DMs of a specified user. + +#### Usage: `$sendDM[userID;message]` + +* `userID`: (Optional) The ID of the user to send the DM to. If omitted, the DM will be sent to the message author. +* `message`: The message to send in the DM. + +
+ +**Example 1: Sending a DM to the message author multiple times.** + + + +!!exec $sendDM[$authorID;I can add this multiple times in my code! This is time 1] +$sendDM[$authorID;I can add this multiple times in my code! This is time 2] + + + +
+ + + +I can add this multiple times in my code! This is time 1 + + +I can add this multiple times in my code! This is time 2 + + + + + +You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_curl_format). This allows you to create richly formatted messages within the DM. + + + + + +* `$channelSendMessage`: Sends a message to a specific channel in the server. +* `$sendMessage`: Sends a message to the channel where the command was used. + + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx new file mode 100644 index 00000000..7d5f8220 --- /dev/null +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -0,0 +1,53 @@ +--- +title: "$sendMessage" +--- + +Sends a message to the channel where the command was executed. + +#### Usage: `$sendMessage[message;return ID (yes/no) (optional)]` + +**Arguments:** + +* `message`: The content of the message to send. +* `return ID`: (Optional) Determines whether to return the ID of the sent message. Use `yes` to return the ID, `no` to not return it. Defaults to `no` if not provided. + +
+ +**Example:** + +```discord +!!exec $sendMessage[This is a fantastic message!;no] +``` + + + +!!exec $sendMessage[This is a fantastic message!;no] + + +This is a fantastic message! + + + +#### More Examples + +**Sending an embed:** + +It is recommended to use [Message Curl Format](/CodeReferences/ref.message_curl_format) to send more complex messages like embeds + +![](https://i.imgur.com/A7UbSpj.png) + + + +You can send more complex structures like embed titles, footers, buttons, and menus through [Message Curl Format](/CodeReferences/ref.message_curl_format). This provides greater control over the appearance and functionality of your messages. + + + + + +* `$channelSendMessage`: Send a message to a specific channel. + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Message/sendWebhook.md b/content/docs/(functions)/Message/sendWebhook.mdx similarity index 73% rename from guide/Message/sendWebhook.md rename to content/docs/(functions)/Message/sendWebhook.mdx index 14589e3f..f266a163 100644 --- a/guide/Message/sendWebhook.md +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -1,4 +1,6 @@ -# $sendWebhook +--- +title: "$sendWebhook" +--- Sends a message via a Discord webhook using its ID and token. @@ -21,17 +23,24 @@ Sends a message via a Discord webhook using its ID and token. Webhook: Hello world! ``` -::: tip + + You can customize the `username` and `avatar URL` parameters to display different names and avatars for each message. -::: -::: tip Note -You can send complex messages with embeds using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). -::: + + + + +You can send complex messages with embeds using the [Message Curl Format](/CodeReferences/ref.message_curl_format). + + + + -::: warning Warning! For non-premium bots, this function will behave exactly as `$sendMessage` due to rate limit avoidance mechanisms. -::: -##### Function difficulty: -###### Tags: \ No newline at end of file + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Message/sentMessageID.md b/content/docs/(functions)/Message/sentMessageID.mdx similarity index 97% rename from guide/Message/sentMessageID.md rename to content/docs/(functions)/Message/sentMessageID.mdx index 1c042608..b5e4fea0 100644 --- a/guide/Message/sentMessageID.md +++ b/content/docs/(functions)/Message/sentMessageID.mdx @@ -1,4 +1,6 @@ -# $sentMessageID +--- +title: "$sentMessageID" +--- Get the ID of the last sent message. diff --git a/guide/Message/unpinMessage.md b/content/docs/(functions)/Message/unpinMessage.mdx similarity index 98% rename from guide/Message/unpinMessage.md rename to content/docs/(functions)/Message/unpinMessage.mdx index 3542554a..70d21c9e 100644 --- a/guide/Message/unpinMessage.md +++ b/content/docs/(functions)/Message/unpinMessage.mdx @@ -1,4 +1,6 @@ -# $unpinMessage +--- +title: "$unpinMessage" +--- Unpins a specific message from a channel. You can either unpin the message that triggered the command, or unpin a message in another channel by providing the channel and message IDs. diff --git a/content/docs/(functions)/Message/webhookExists.mdx b/content/docs/(functions)/Message/webhookExists.mdx new file mode 100644 index 00000000..06d88bc6 --- /dev/null +++ b/content/docs/(functions)/Message/webhookExists.mdx @@ -0,0 +1,28 @@ +--- +title: "$webhookExists" +--- + +Checks if a webhook exists using its ID and token. Returns `true` if the webhook exists, and `false` otherwise. + +#### Usage: + +`$webhookExists[webhookID;webhookToken]` + +* **webhookID:** The ID of the webhook to check. +* **webhookToken:** The token of the webhook to check. + +
+ + + +!!exec $webhookExists[940749xx...;Oc_BoyAWxx...] + + +true + + + +**Function difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Random/meta.json b/content/docs/(functions)/Random/meta.json new file mode 100644 index 00000000..4d8780e0 --- /dev/null +++ b/content/docs/(functions)/Random/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Random Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Random/random.md b/content/docs/(functions)/Random/random.mdx similarity index 66% rename from guide/Random/random.md rename to content/docs/(functions)/Random/random.mdx index c1a20153..115cb71c 100644 --- a/guide/Random/random.md +++ b/content/docs/(functions)/Random/random.mdx @@ -1,4 +1,6 @@ -# $random +--- +title: "$random" +--- This function returns a random number within a specified range. @@ -26,14 +28,14 @@ This function returns a random number within a specified range. This command will return a random integer between 1 and 6 (inclusive). Possible outputs: 1, 2, 3, 4, 5, or 6. - - - !!exec `$random[1;6]` - - - 4 - - + + +!!exec `$random[1;6]` + + +4 + + **More Examples:** @@ -41,5 +43,6 @@ This command will return a random integer between 1 and 6 (inclusive). Possible * `$random[5;10]` - Returns a random integer between 5 and 10 (inclusive). * `$random[-10;10;yes]` - Returns a random decimal number between -10 (inclusive) and 10 (exclusive). -##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Random/randomChannelID.md b/content/docs/(functions)/Random/randomChannelID.mdx similarity index 54% rename from guide/Random/randomChannelID.md rename to content/docs/(functions)/Random/randomChannelID.mdx index 640575f1..d027696f 100644 --- a/guide/Random/randomChannelID.md +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -1,4 +1,6 @@ -# $randomChannelID +--- +title: "$randomChannelID" +--- This function returns a random Channel ID from any channel within the server. @@ -22,6 +24,7 @@ Simply use `$randomChannelID` in your command or custom function. This will output a random channel ID from the server where the command is executed. The actual ID returned will, of course, be different each time. -##### Function Difficulty: +**Function Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx new file mode 100644 index 00000000..4dd70537 --- /dev/null +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -0,0 +1,36 @@ +--- +title: "$randomMention" +--- + +Returns a random mention from the current server. This function is useful for things like raffles, giveaways, or randomly selecting a user. + +#### Usage: + +```php +$randomMention +``` + +
+ +**Example:** + +This example shows how to use `$randomMention` to mention a random user in a command. + + + +!!exec $randomMention + + +@Lisa + + + + + +The mentions returned by this function are pulled from the server's cached member list. This means that if all members haven't been cached yet (common in larger servers, especially those below "Tier 5" boosting), it may not include *every* member in the server. For best results, ensure your bot has access to all members. + + + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx new file mode 100644 index 00000000..897220c1 --- /dev/null +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -0,0 +1,33 @@ +--- +title: "$randomRoleID" +--- + +This function returns a random Role ID from a Role present in the server. It's a simple way to pick a random role ID for various purposes in your custom commands. + +#### Usage: + +```php +$randomRoleID +``` + +
+ +**Example:** + +Here's how you can use `$randomRoleID` in a custom command: + + + +!!exec $randomRoleID + + +82907890789087988 + + + +In this example, the command `!!exec $randomRoleID` will output a random role ID from your server (e.g., `82907890789087988`). + +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx new file mode 100644 index 00000000..a82d194e --- /dev/null +++ b/content/docs/(functions)/Random/randomString.mdx @@ -0,0 +1,32 @@ +--- +title: "$randomString" +--- + +Generates a random string of a specified length. This function is useful for creating unique identifiers, temporary passwords, or simply adding randomness to your commands. + +#### Usage: + +`$randomString[length]` + +* `length`: (Required) The desired length of the random string. This should be a positive integer. + +
+ +#### Example: + +This example demonstrates how to use `$randomString` to generate a 6-character random string. + + + +!!exec `$randomString[6]` + + +qe90bT + + + +In this example, the command `!!exec $randomString[6]` will generate a random string of 6 characters, such as `qe90bT`. The output will vary each time the command is executed. + +**Function difficulty:** + +**Tags:** diff --git a/guide/Random/randomText.md b/content/docs/(functions)/Random/randomText.mdx similarity index 50% rename from guide/Random/randomText.md rename to content/docs/(functions)/Random/randomText.mdx index 4613e437..1a8418f9 100644 --- a/guide/Random/randomText.md +++ b/content/docs/(functions)/Random/randomText.mdx @@ -1,4 +1,6 @@ -# $randomText +--- +title: "$randomText" +--- Returns a random text from a list of provided texts. This function is useful for creating variety in your bot's responses. @@ -20,19 +22,20 @@ This example will randomly return either "Hello", "Hi", or "Hey".
- - - !!exec `$randomText[I'm sad;I'm very happy]` - - - I'm very happy - - + + +!!exec `$randomText[I'm sad;I'm very happy]` + + +I'm very happy + + **Explanation:** In this example, the command `!!exec $randomText[I'm sad;I'm very happy]` instructs the bot to execute the `$randomText` function with the options "I'm sad" and "I'm very happy". The bot randomly selects one of these options and returns it, in this case, "I'm very happy". -##### Function difficulty: +**Function difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Random/randomTextBiased.md b/content/docs/(functions)/Random/randomTextBiased.mdx similarity index 59% rename from guide/Random/randomTextBiased.md rename to content/docs/(functions)/Random/randomTextBiased.mdx index ae03fc30..935a0a25 100644 --- a/guide/Random/randomTextBiased.md +++ b/content/docs/(functions)/Random/randomTextBiased.mdx @@ -1,4 +1,6 @@ -# $randomTextBiased +--- +title: "$randomTextBiased" +--- Similar to `$randomText`, but with weighted randomness! This allows you to influence the probability of specific text being selected. @@ -45,22 +47,22 @@ Here are a couple of example scenarios demonstrating the range of possibilities: **Example (Unlucky guy):** - - - !!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

-
- - Your reward is: Common Box

-
-
+ + +!!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

+
+ +Your reward is: Common Box

+
+
**Example (Lucky guy):** - - - !!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

-
- - Your reward is: Epic Box - -
\ No newline at end of file + + +!!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

+
+ +Your reward is: Epic Box + +
\ No newline at end of file diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx new file mode 100644 index 00000000..94b6c790 --- /dev/null +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -0,0 +1,33 @@ +--- +title: "$randomUserID" +--- + +Retrieves a random user ID from a user within the server. + +#### Usage: + +```php +$randomUserID +``` + +
+ + + +!!exec $randomUserID + + +97907890789087988 + + + + + +The user ID is selected randomly from the server's cached members. This means the returned user ID might not always represent a currently active member, especially if all guild members are not cached (typically only guaranteed in higher server tiers). + + + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Random/resetRandom.md b/content/docs/(functions)/Random/resetRandom.mdx similarity index 93% rename from guide/Random/resetRandom.md rename to content/docs/(functions)/Random/resetRandom.mdx index 0a069483..60617440 100644 --- a/guide/Random/resetRandom.md +++ b/content/docs/(functions)/Random/resetRandom.mdx @@ -1,4 +1,6 @@ -# $resetRandom +--- +title: "$resetRandom" +--- The `$resetRandom` function clears the stored seed used by the `$random` function, effectively resetting the random number generator. This means that subsequent calls to `$random` will generate a new sequence of random numbers, potentially different from the previous sequence before the reset. This is useful when you want to ensure a fresh set of random numbers. @@ -33,4 +35,4 @@ When you use `$random` multiple times without resetting, it might produce the sa 2. `$resetRandom after reset` resets the random seed. The text "after reset" is just literal text included for explanation. 3. `$random[1;6]` is called again *after* the reset. It now generates a new, potentially different random number (in this example, it's `1`). -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/guide/Request/httpRequest.md b/content/docs/(functions)/Request/httpRequest.mdx similarity index 72% rename from guide/Request/httpRequest.md rename to content/docs/(functions)/Request/httpRequest.mdx index 877cedbb..54544e99 100644 --- a/guide/Request/httpRequest.md +++ b/content/docs/(functions)/Request/httpRequest.mdx @@ -1,4 +1,6 @@ -# $httpRequest +--- +title: "$httpRequest" +--- Performs an HTTP request with the specified content and headers, then returns the response body. @@ -61,14 +63,14 @@ For **Tier 4 and above**, the timeout is extended to **30 minutes**. ### Sending a JSON request - - - !!exec $let[response;$httpRequest[My API URL;post;{"name":"Mido"};Content-Type: application/json]]
Response is $response
Response Status is $httpRequestStatus

-
- - Response is {"success":true}
Response Status is 200

-
-
+ + +!!exec $let[response;$httpRequest[My API URL;post;\{"name":"Mido"};Content-Type: application/json]]
Response is $response
Response Status is $httpRequestStatus

+
+ +Response is \{"success":true}
Response Status is 200

+
+
## Notes diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx new file mode 100644 index 00000000..84fee0c0 --- /dev/null +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -0,0 +1,35 @@ +--- +title: "$httpRequestHeader" +--- + +Returns the value of a given header from the last request. + +## Usage + +```bash +$httpRequestHeader[header name] +``` +1. **header name** - The header name to return value from. (case-insensitive) + +## Example + +#### Using $httpRequestHeader + +How to return Content-Type from last request + + + +!!exec $httpRequest[https://api.example.com/]
+Content-Type Header: $httpRequestHeader[content-type] +
+ +\{"message": "Api response!"}
+Content-Type Header: application/json +
+
+ +##### Related functions: `$httpRequest` `$httpRequestStatus` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx new file mode 100644 index 00000000..7c8556a9 --- /dev/null +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -0,0 +1,34 @@ +--- +title: "$httpRequestStatus" +--- + +Returns the $httpRequest status code of the last request. + +## Usage + +```bash +$httpRequestStatus +``` + +## Example + +#### Using $httpRequestStatus + +How to use $httpRequestStatus to display status code of request + + + +!!exec $httpRequest[https://api.example.com/]
+Code: $httpRequestStatus +
+ +Api response!
+Code: 200 +
+
+ +##### Related functions: `$httpRequest` `$httpRequestHeader` + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Request/meta.json b/content/docs/(functions)/Request/meta.json new file mode 100644 index 00000000..4e272440 --- /dev/null +++ b/content/docs/(functions)/Request/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Http Requests functions", + "pages": [ + "..." + ] +} diff --git a/guide/Role/blackListRoleIDs.md b/content/docs/(functions)/Role/blackListRoleIDs.mdx similarity index 64% rename from guide/Role/blackListRoleIDs.md rename to content/docs/(functions)/Role/blackListRoleIDs.mdx index 4b731acb..7f13aa0f 100644 --- a/guide/Role/blackListRoleIDs.md +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -1,4 +1,6 @@ -# $blackListRoleIds +--- +title: "$blackListRoleIds" +--- This function prevents users with specific roles from using a command. You specify the role IDs and an error message to display when someone with a blacklisted role tries to execute the command. @@ -25,18 +27,21 @@ Successfully banned user. * `$ban[$mentioned[1]]`: This line executes the ban command, banning the mentioned user. It only executes if the user does *not* have a blacklisted role. * `Successfully banned user.`: This line sends a confirmation message after a successful ban. - - - !ban @RAKE - - - You are not authorized to use this command! - - - -::: tip Note -You can send an embed instead of a simple text message by using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md) in your error message. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file + + +!ban @RAKE + + +You are not authorized to use this command! + + + + + +You can send an embed instead of a simple text message by using the [Message Curl Format](/CodeReferences/ref.message_curl_format) in your error message. + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx new file mode 100644 index 00000000..51d2c9d7 --- /dev/null +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -0,0 +1,21 @@ +--- +title: "$colorRole" +--- + +Changes the color of given role ID + +#### Usage: `$colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)]` + +### Example (Primary Color) +```php +$colorRole[Role name;green] +``` + +### Example (Gradient) +```php +$colorRole[Role name;green;red] +``` + +**Function difficulty:** + +**Tags:** diff --git a/guide/Role/createRole.md b/content/docs/(functions)/Role/createRole.mdx similarity index 69% rename from guide/Role/createRole.md rename to content/docs/(functions)/Role/createRole.mdx index 8b0a2345..a1c07f98 100644 --- a/guide/Role/createRole.md +++ b/content/docs/(functions)/Role/createRole.mdx @@ -1,4 +1,7 @@ -# $createRole +--- +title: "$createRole" +--- + Creates a role in the server #### Usage: @@ -10,7 +13,7 @@ Creates a role in the server * **mentionable (optional):** Whether the role can be mentioned (true/false). Defaults to `false`. * **hoisted (optional):** Whether the role is displayed separately in the member list (true/false). Defaults to `false`. * **position (optional):** The position of the role in the role hierarchy. Lower numbers appear higher in the list. -* **permission;permission;...:** A list of permissions to grant to the role. Refer to the [Permission List](../CodeReferences/ref.permissions_list.md) for valid permission names. +* **permission;permission;...:** A list of permissions to grant to the role. Refer to the [Permission List](/CodeReferences/ref.permissions_list) for valid permission names. * **return role id (yes/no, optional):** Specifies whether to return the ID of the newly created role. Defaults to `no`. If set to `yes`, the function will return the role ID. #### Example: @@ -20,14 +23,19 @@ This will create a role with the name "Orange" and the color orange. `$createRole[Moderator;#00ff00;true;true;;managemessages;kick;yes]` This will create a role named "Moderator" with a green color, set as mentionable and hoisted and give it the manage messages and kick user permission. The ID of the created role is returned by the function. -::: tip Available Permissions -For a comprehensive list of available permissions, please see the [Permission List](../CodeReferences/ref.permissions_list.md). -::: + + +For a comprehensive list of available permissions, please see the [Permission List](/CodeReferences/ref.permissions_list). + + + + -::: tip Related Functions `$createChannel`, creates a channel -::: -##### Function difficulty: -###### Tags: \ No newline at end of file + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Role/deleteRoles.md b/content/docs/(functions)/Role/deleteRoles.mdx similarity index 62% rename from guide/Role/deleteRoles.md rename to content/docs/(functions)/Role/deleteRoles.mdx index e0dedcaa..62dab490 100644 --- a/guide/Role/deleteRoles.md +++ b/content/docs/(functions)/Role/deleteRoles.mdx @@ -1,4 +1,6 @@ -# $deleteRoles +--- +title: "$deleteRoles" +--- Deletes one or more roles from the server. @@ -22,13 +24,16 @@ This will delete the role with the ID `879889890890890`. This will delete the role with the ID `879889890890890` and the role with the ID `987654321098765`. -::: tip Related Functions + + * `$deleteChannels`: Deletes one or more channels. * `$deleteThreads`: Deletes one or more threads. -::: -##### Function difficulty: + + +**Function difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Role/findRole.mdx b/content/docs/(functions)/Role/findRole.mdx new file mode 100644 index 00000000..ed4ccdee --- /dev/null +++ b/content/docs/(functions)/Role/findRole.mdx @@ -0,0 +1,54 @@ +--- +title: "$findRole" +--- + +Searches for a role by its ID, mention, or name. This function allows you to retrieve a role's ID based on the provided search query. + +#### Usage: + +`$findRole[ID/mention/name;return current channelID, (yes/no) (Optional, default=yes)]` + +**Parameters:** + +* **`ID/mention/name`**: The ID, mention, or name of the role you want to find. +* **`return current channelID, (yes/no)`** (Optional): Determines whether to return the current channel's ID if the role is found. + * `yes` (Default): Returns the current channel ID along with the role ID (e.g., `869243919697846379,123456789012345678` where the first number is the Role ID and the second one is the Channel ID). + * `no`: Returns only the role ID. + +**Example:** + +Finding a role named "Mika#6359" and not returning the current channel ID: + +
+ + +!!exec $findRole[Mika#6359;no] + + +869243919697846379 + + + +**Example (Role Not Found):** + +If the role is not found, the function will return `undefined`. + +
+ + +!!exec $findRole[mika#6359;no] + + +undefined + + + + + +* `$roleID`: Returns the role ID based on the role's name. + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Role/getRoleColor.md b/content/docs/(functions)/Role/getRoleColor.mdx similarity index 95% rename from guide/Role/getRoleColor.md rename to content/docs/(functions)/Role/getRoleColor.mdx index 11e0102f..2d0e9bfd 100644 --- a/guide/Role/getRoleColor.md +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -1,4 +1,6 @@ -# $getRoleColor +--- +title: "$getRoleColor" +--- Retrieves the hexadecimal color code of a role. diff --git a/guide/Role/giveRoles.md b/content/docs/(functions)/Role/giveRoles.mdx similarity index 53% rename from guide/Role/giveRoles.md rename to content/docs/(functions)/Role/giveRoles.mdx index f70223da..1ddcc91e 100644 --- a/guide/Role/giveRoles.md +++ b/content/docs/(functions)/Role/giveRoles.mdx @@ -1,4 +1,6 @@ -# $giveRoles +--- +title: "$giveRoles" +--- Grants one or more roles to a specified user. @@ -15,23 +17,28 @@ Grants one or more roles to a specified user. This example grants the "Muted" role to the command executor. - - - !!exec $giveRoles[$authorID;$roleID[Muted]] - - + + +!!exec $giveRoles[$authorID;$roleID[Muted]] + + + + -::: tip Useful Functions * ``$roleID``: Retrieves a role's ID based on its name. * ``$authorID``: Returns the ID of the command executor (the user who ran the command). -::: -::: tip Related Functions + + + + * ``$toggleRoles``: Toggles a user's roles (adds if they don't have it, removes if they do). * ``$takeRoles``: Removes roles from a user. * ``$setRoles``: Removes all roles from a user and then grants only the specified roles. -::: -##### Difficulty: + + +**Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx new file mode 100644 index 00000000..379570f4 --- /dev/null +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -0,0 +1,45 @@ +--- +title: "$guildRoles" +--- + +Returns a list of all roles in the guild, displaying their names, IDs, or mentions. + +You can specify the type of information you want (ID, name, or mention) and limit the number of roles returned. + +#### Usage: + +`$guildRoles[type;amount;separator]` + +**Parameters:** + +* `type` (Optional): Determines what information to return for each role. Possible values are: + * `id`: Returns the role's ID. + * `name`: Returns the role's name. (Default) + * `mention`: Returns the role's mention. +* `amount` (Optional): The maximum number of roles to return. If omitted, all roles will be returned. +* `separator` (Optional): The separator between the returned list, default is ', ' + +
+ +**Example:** + +This example shows how to retrieve the IDs of all roles in the guild. + + + +!!exec $guildRoles[id] + + +869243918787686431, 869243918817058856, 869243918489878654, 869250889813213244, 871289098231513098, 869251802556678154, 869243918489878650, 878284024232165407, 869249016213422150, 869250128136003614, 869243918787686434, 869248264426356736, 869243918787686436, 869243918489878657, 869243918489878653, 869250129272651787, 869250127347453992, 869250888106115092, 869243918787686430, 869243918787686432, 869243918817058857, 869249218169147422, 869243918489878652, 869244293959794720, 869250129901813820 + + + + + +* `$roleID`: Retrieves a role ID by its name. + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx new file mode 100644 index 00000000..da09e2dc --- /dev/null +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -0,0 +1,32 @@ +--- +title: "$hasRole" +--- + +Determines if a user possesses a specific role within the server. Returns `true` if the user has the role, and `false` otherwise. + +#### Usage: `$hasRole[userID;roleID]` + +* **userID:** The ID of the user you want to check. You can use `$authorID` to check the message author. +* **roleID:** The ID of the role you want to check for. + +
+ +**Example:** + +Checks if the message author has the role with the ID `99871..xx`. + + + +!!exec $hasRole[$authorid;99871..xx] + + +false + + + +
+ +**Function Difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx new file mode 100644 index 00000000..35703da9 --- /dev/null +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -0,0 +1,43 @@ +--- +title: "$highestRole" +--- + +Retrieves the highest role (in terms of hierarchy) a user has in the current guild. + +#### Usage: + +`$highestRole[userID]` - Returns the highest role of the user with the specified `userID`. + +`$highestRole` - Returns the highest role of the command executor (the user who triggered the command). + +
+ +**Example:** + +This example shows how to use `$highestRole` with `$roleName` to output the role's name. + +```discord +!!exec $roleName[$highestRole] +``` + +**Result:** + +(Assuming the user's highest role is "Admin") + +```discord +Admin +``` + + + +!!exec $roleName[$highestRole] + + +Admin + + + +**Function difficulty:** + + +**Tags:** diff --git a/guide/Role/highestServerRole.md b/content/docs/(functions)/Role/highestServerRole.mdx similarity index 54% rename from guide/Role/highestServerRole.md rename to content/docs/(functions)/Role/highestServerRole.mdx index 35d0b0f7..03bf133c 100644 --- a/guide/Role/highestServerRole.md +++ b/content/docs/(functions)/Role/highestServerRole.mdx @@ -1,4 +1,6 @@ -# $highestServerRole +--- +title: "$highestServerRole" +--- Retrieves the ID of the server's highest role. This is the role with the highest position in the server's role hierarchy. @@ -8,5 +10,6 @@ This function is very simple to use and requires no arguments. It will simply re
-##### Difficulty: -###### Tags: \ No newline at end of file +**Difficulty:** + +**Tags:** diff --git a/guide/Role/lowestRole.md b/content/docs/(functions)/Role/lowestRole.mdx similarity index 77% rename from guide/Role/lowestRole.md rename to content/docs/(functions)/Role/lowestRole.mdx index f2129695..8eeed915 100644 --- a/guide/Role/lowestRole.md +++ b/content/docs/(functions)/Role/lowestRole.mdx @@ -1,4 +1,6 @@ -# $lowestRole +--- +title: "$lowestRole" +--- Returns the user's lowest role in the current guild. You can specify a user ID, or if omitted, it will use the command executor (the user who ran the command). "Lowest" refers to the role with the lowest position in the server's role hierarchy (typically, the role created first). @@ -31,6 +33,7 @@ Member (The bot will output the role ID of the user's lowest role. This example only provides a placeholder "Member".) -##### Function Difficulty: +**Function Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Role/lowestServerRole.md b/content/docs/(functions)/Role/lowestServerRole.mdx similarity index 52% rename from guide/Role/lowestServerRole.md rename to content/docs/(functions)/Role/lowestServerRole.mdx index 1bf36ac4..2cf77874 100644 --- a/guide/Role/lowestServerRole.md +++ b/content/docs/(functions)/Role/lowestServerRole.mdx @@ -1,4 +1,6 @@ -# $lowestServerRole +--- +title: "$lowestServerRole" +--- Retrieves the ID of the server's lowest role (the role with the highest position in the role hierarchy). @@ -6,6 +8,7 @@ Retrieves the ID of the server's lowest role (the role with the highest position This function returns the ID of the role that's at the bottom of your server's role list. Think of it as the highest role in terms of permissions and precedence. -##### Function Difficulty: +**Function Difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/guide/Role/mentionRole.md b/content/docs/(functions)/Role/mentionRole.mdx similarity index 85% rename from guide/Role/mentionRole.md rename to content/docs/(functions)/Role/mentionRole.mdx index 2ffb1e6a..b01e4ced 100644 --- a/guide/Role/mentionRole.md +++ b/content/docs/(functions)/Role/mentionRole.mdx @@ -1,4 +1,6 @@ -# $mentionRole +--- +title: "$mentionRole" +--- mention a role by name or id diff --git a/content/docs/(functions)/Role/meta.json b/content/docs/(functions)/Role/meta.json new file mode 100644 index 00000000..a6324a71 --- /dev/null +++ b/content/docs/(functions)/Role/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Role Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Role/modifyRole.md b/content/docs/(functions)/Role/modifyRole.mdx similarity index 80% rename from guide/Role/modifyRole.md rename to content/docs/(functions)/Role/modifyRole.mdx index fe3207db..e3120f1e 100644 --- a/guide/Role/modifyRole.md +++ b/content/docs/(functions)/Role/modifyRole.mdx @@ -1,4 +1,6 @@ -# $modifyRole +--- +title: "$modifyRole" +--- Modifies the properties of a role, such as its name, color, mentionability, hoisted status, and position. @@ -40,23 +42,30 @@ This example will: * Hoist the role. * Leave the name and position as they are. -::: tip Important Notes + + * You can omit parameters by leaving them blank (e.g., `;;` to skip the name and color). * Use caution when modifying role positions, as incorrect positions can affect permissions. * The color parameter must be a valid hexadecimal color code. -::: -::: tip Used Functions + + + + * `$roleID`D by its name. -::: -::: tip Related Functions + + + + * `$editChannel`: Modifies the name or category of a channel. * `$modifyRolePerms`: Modifies the permissions of a role. -::: -##### Function difficulty: -###### Tags: \ No newline at end of file + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Role/modifyRolePerms.md b/content/docs/(functions)/Role/modifyRolePerms.mdx similarity index 56% rename from guide/Role/modifyRolePerms.md rename to content/docs/(functions)/Role/modifyRolePerms.mdx index 8b2ba3b1..922dd4e8 100644 --- a/guide/Role/modifyRolePerms.md +++ b/content/docs/(functions)/Role/modifyRolePerms.mdx @@ -1,4 +1,6 @@ -# $modifyRolePerms +--- +title: "$modifyRolePerms" +--- Modifies the permissions of a specified role. @@ -21,25 +23,34 @@ Modifies the permissions of a specified role. This example modifies the permissions of the role named "muted" so that members with this role will not be able to send messages in the server. -::: tip Permissions List -Refer to this [list](../CodeReferences/ref.permissions_list.md) for a complete overview of available permission names. -::: + + +Refer to this [list](/CodeReferences/ref.permissions_list) for a complete overview of available permission names. + + + + -::: tip Helpful Functions * **`$roleID`:** Returns a role ID based on its name. -::: -::: tip Related Functions + + + + * **`$modifyChannelPerms`:** Modifies the permissions of a channel. * **`$modifyRole`:** Edits a role's name or color. -::: -::: tip Important Notes + + + + * Use a `+` sign to grant a specific permission. * Use a `-` sign to deny a specific permission. * Use a `/` sign to reset a permission to its default state (neither granted nor denied). -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Role/modifyUserRoles.md b/content/docs/(functions)/Role/modifyUserRoles.mdx similarity index 97% rename from guide/Role/modifyUserRoles.md rename to content/docs/(functions)/Role/modifyUserRoles.mdx index 091587f5..80144fcf 100644 --- a/guide/Role/modifyUserRoles.md +++ b/content/docs/(functions)/Role/modifyUserRoles.mdx @@ -1,4 +1,6 @@ -# $modifyUserRoles +--- +title: "$modifyUserRoles" +--- This function allows you to modify a user's roles by adding, removing, or toggling them. You can perform multiple operations in a single function call. diff --git a/guide/Role/role.md b/content/docs/(functions)/Role/role.mdx similarity index 78% rename from guide/Role/role.md rename to content/docs/(functions)/Role/role.mdx index 3bc4be38..57de3b59 100644 --- a/guide/Role/role.md +++ b/content/docs/(functions)/Role/role.mdx @@ -1,4 +1,6 @@ -# $role +--- +title: "$role" +--- A powerful and compact function to retrieve various properties of a Discord role! @@ -38,17 +40,18 @@ Here's a list of the available properties you can use with the `$role` function: #### Example: - - - !!exec $role[798789079070970;position] - - - 2 - - + + +!!exec $role[798789079070970;position] + + +2 + + This example retrieves the position of the role with the ID `798789079070970`. The bot responds with `2`, indicating the role's position in the role hierarchy. -##### Function difficulty: +**Function difficulty:** -###### Tags: \ No newline at end of file + +**Tags:** diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx new file mode 100644 index 00000000..afbb961c --- /dev/null +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -0,0 +1,35 @@ +--- +title: "$roleCount" +--- + +The `$roleCount` function returns the total number of roles present in your Discord server (guild). + +#### Usage: `$roleCount` + +This function is straightforward to use. Simply include it in your command response to display the role count. + +
+ +**Example:** + +Let's create a custom command that announces the total number of roles in the server. + + + +!!exec There are `$roleCount` roles in the server! + + +There are `23` roles in the server + + + +In this example: + +* The user triggers the custom command with `!!exec`. +* The command uses `$roleCount` to retrieve the role count. +* The bot responds with a message stating, "There are `23` roles in the server" (the number will reflect the actual role count of the server). + +**Function Difficulty:** + + +**Tags:** diff --git a/guide/Role/roleExists.md b/content/docs/(functions)/Role/roleExists.mdx similarity index 66% rename from guide/Role/roleExists.md rename to content/docs/(functions)/Role/roleExists.mdx index 9a212d26..dd4adfe9 100644 --- a/guide/Role/roleExists.md +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -1,4 +1,6 @@ -# $roleExists +--- +title: "$roleExists" +--- Checks if a role exists within the server and returns a boolean value (true or false). @@ -29,14 +31,19 @@ Checks if a role exists within the server and returns a boolean value (true or f This example checks if a role with the name "muted" exists on the server. First, `$roleID[muted]` resolves to the role ID of the role named "muted" (if it exists). Then, `$roleExists` checks if a role with that ID exists. The command returns `true` if the role exists and `false` if it doesn't. -::: tip Used Functions + + * `$roleID`: Retrieves a role's ID by its name. -::: -::: tip Related Functions + + + + * `$findRole`: Finds roles by name or mention. -::: -##### Function Difficulty: + + +**Function Difficulty:** + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx new file mode 100644 index 00000000..760e32db --- /dev/null +++ b/content/docs/(functions)/Role/roleID.mdx @@ -0,0 +1,40 @@ +--- +title: "$roleID" +--- + +Retrieves the ID of a specified role. + +#### Usage: + +`$roleID[ROLE NAME]` + +**Argument:** + +* `ROLE NAME`: The name of the role you want to get the ID for. This is case-sensitive. + +
+ +**Example:** + +Let's say you have a role named "muted" in your server. The following example demonstrates how to retrieve its ID. + + + +!!exec $roleID[muted] + + +772053356378062889 + + + +In this example, the command returns `772053356378062889`, which is the ID of the "muted" role. + + + +* `$findRole`: Use this function to find a role by its name or mention if you are unsure of the exact name. + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Role/roleIcon.md b/content/docs/(functions)/Role/roleIcon.mdx similarity index 98% rename from guide/Role/roleIcon.md rename to content/docs/(functions)/Role/roleIcon.mdx index a348097b..c7823759 100644 --- a/guide/Role/roleIcon.md +++ b/content/docs/(functions)/Role/roleIcon.mdx @@ -1,4 +1,6 @@ -# $roleIcon +--- +title: "$roleIcon" +--- This function allows you to either retrieve or set the icon of a role within a guild (server). diff --git a/guide/Role/roleMembersCount.md b/content/docs/(functions)/Role/roleMembersCount.mdx similarity index 92% rename from guide/Role/roleMembersCount.md rename to content/docs/(functions)/Role/roleMembersCount.mdx index 038f0dac..1fa40985 100644 --- a/guide/Role/roleMembersCount.md +++ b/content/docs/(functions)/Role/roleMembersCount.mdx @@ -1,10 +1,14 @@ -# $roleMembersCount +--- +title: "$roleMembersCount" +--- This function returns the number of members in a Discord server that have a specific role. -::: danger Warning + + The data used by this function comes from the bot's cache, not the Discord API directly. This means the count might not be 100% accurate *unless* all members of the server are cached by the bot. Full caching is generally only achieved in Tier 5 servers due to the sheer volume of members. -::: + + **Usage:** `$roleMembersCount[roleId]` diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx new file mode 100644 index 00000000..9f1304a0 --- /dev/null +++ b/content/docs/(functions)/Role/roleName.mdx @@ -0,0 +1,31 @@ +--- +title: "$roleName" +--- + +Retrieves the name of a role using its ID. + +#### Usage: + +`$roleName[roleID]` + +Replace `roleID` with the actual ID of the role you want to find. + +
+ +#### Example: + +This example shows how to use the `$roleName` function to find the name of the role with the ID `869243918787686439`. + + + +!!exec $roleName[869243918787686439] + + +Custom Command + + + +**Function difficulty:** + + +**Tags:** diff --git a/content/docs/(functions)/Role/rolePerms.mdx b/content/docs/(functions)/Role/rolePerms.mdx new file mode 100644 index 00000000..efe42517 --- /dev/null +++ b/content/docs/(functions)/Role/rolePerms.mdx @@ -0,0 +1,41 @@ +--- +title: "$rolePerms" +--- + +Returns the permissions a role has. + +#### Usage: + +`$rolePerms[roleID;separator (optional)]` + +* `roleID`: The ID of the role to check. +* `separator`: (Optional) The separator to use when listing the permissions. Defaults to no separator. + +
+ +**Example:** + + + +!!exec $rolePerms[$roleID[muted]; | ] + + +View Channel | Read Message History + + + + + +For a comprehensive list of all permission names, refer to the [Permissions List](/CodeReferences/ref.permissions_list). This list includes all the permissions a role can have. + + + + + + +* `$userPerms`: Returns a member's permissions. + + + +**Function difficulty:** + diff --git a/guide/Role/rolePosition.md b/content/docs/(functions)/Role/rolePosition.mdx similarity index 67% rename from guide/Role/rolePosition.md rename to content/docs/(functions)/Role/rolePosition.mdx index 7e3c5455..bb475e24 100644 --- a/guide/Role/rolePosition.md +++ b/content/docs/(functions)/Role/rolePosition.mdx @@ -1,4 +1,6 @@ -# $rolePosition +--- +title: "$rolePosition" +--- Returns the position of a role in the server's role hierarchy. Roles with higher positions appear higher in the server's role list. @@ -18,14 +20,14 @@ Returns the position of a role in the server's role hierarchy. Roles with higher Let's say you have a custom command that checks the position of the "Muted" role. - - - !!exec $rolePosition[$roleID[muted]] - - - 2 - - + + +!!exec $rolePosition[$roleID[muted]] + + +2 + + **Explanation:** @@ -37,4 +39,4 @@ Let's say you have a custom command that checks the position of the "Muted" role * Role positions are relative to other roles within the server. * The role ID can be obtained by enabling Developer Mode in Discord (Settings > Advanced) and right-clicking on a role to copy its ID. -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/guide/Role/setRoles.md b/content/docs/(functions)/Role/setRoles.mdx similarity index 74% rename from guide/Role/setRoles.md rename to content/docs/(functions)/Role/setRoles.mdx index 39063b78..76678908 100644 --- a/guide/Role/setRoles.md +++ b/content/docs/(functions)/Role/setRoles.mdx @@ -1,4 +1,6 @@ -# $setRoles +--- +title: "$setRoles" +--- Gives a user specific roles, removing all other roles. This is useful for setting a user's roles to a specific configuration, like assigning a "Muted" role and removing all other roles. @@ -30,27 +32,33 @@ Sets the command executor's roles to only the "Muted" role. * `$authorID`: Gets the ID of the user who executed the command (using the `$authorID` function). * `$roleID[Muted]`: Gets the ID of the role named "Muted" (using the `$roleID` function). -::: tip Important Notes + + * The bot needs the **Manage Roles** permission to use this function. * The bot can only manage roles that are below its highest role in the server's role hierarchy. * Invalid role IDs or user IDs will cause the function to fail. -::: -::: tip Used Functions + + + + + +* `$roleID[roleName]`: Returns the ID of a role, given its name. [See RoleID Documentation](/Role/roleID) +* `$authorID`: Returns the ID of the command executor. [See AuthorID Documentation](/Member/authorID) + + + -* `$roleID[roleName]`: Returns the ID of a role, given its name. [See RoleID Documentation](../Role/roleID.md) -* `$authorID`: Returns the ID of the command executor. [See AuthorID Documentation](../Member/authorID.md) + -::: -::: tip Related Functions +* `$giveRoles[userID;roleID 1;roleID 2;...]`: Gives roles to a user without removing existing roles. [See GiveRoles Documentation](/Role/giveRoles) +* `$takeRoles[userID;roleID 1;roleID 2;...]`: Removes roles from a user. [See TakeRoles Documentation](/Role/takeRoles) +* `$toggleRoles[userID;roleID 1;roleID 2;...]`: Toggles the specified roles on a user. [See ToggleRoles Documentation](/Role/toggleRoles) -* `$giveRoles[userID;roleID 1;roleID 2;...]`: Gives roles to a user without removing existing roles. [See GiveRoles Documentation](../Role/giveRoles.md) -* `$takeRoles[userID;roleID 1;roleID 2;...]`: Removes roles from a user. [See TakeRoles Documentation](../Role/takeRoles.md) -* `$toggleRoles[userID;roleID 1;roleID 2;...]`: Toggles the specified roles on a user. [See ToggleRoles Documentation](../Role/toggleRoles.md) -::: + -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/guide/Role/takeRoles.md b/content/docs/(functions)/Role/takeRoles.mdx similarity index 67% rename from guide/Role/takeRoles.md rename to content/docs/(functions)/Role/takeRoles.mdx index 329e63c6..0e5401b7 100644 --- a/guide/Role/takeRoles.md +++ b/content/docs/(functions)/Role/takeRoles.mdx @@ -1,4 +1,7 @@ -# $takeRoles +--- +title: "$takeRoles" +--- + Takes away a role from a user. #### Usage: @@ -10,11 +13,11 @@ Takes away a role from a user.
- - - !!exec $takeRoles[$authorID;$roleID[Muted]] - - + + +!!exec $takeRoles[$authorID;$roleID[Muted]] + + **Example Breakdown:** @@ -22,18 +25,22 @@ This example takes the "Muted" role from the user who executed the command. * `!!exec`: Executes the custom command function. * `$takeRoles[...]`: The function that removes roles. -* `$authorID`: Gets the ID of the command executor. (See [here](../Member/authorID.md) for more info) -* `$roleID[Muted]`: Gets the ID of the role named "Muted". (See [here](../Role/roleID.md) for more info) +* `$authorID`: Gets the ID of the command executor. (See [here](/Member/authorID) for more info) +* `$roleID[Muted]`: Gets the ID of the role named "Muted". (See [here](/Role/roleID) for more info) + + -::: tip Used Functions * `$roleID`: Returns a role ID based on the role's name. * `$authorID`: Returns the ID of the command executor. -::: -::: tip Related Functions + + + + * `$giveRoles`: Gives roles to a user. * `$setRoles`: Removes all roles from a user and then gives them the specified roles. * `$toggleRoles`: Toggles roles on a user (adds if they don't have it, removes if they do). -::: -##### Function Difficulty: \ No newline at end of file + + +**Function Difficulty:** diff --git a/guide/Role/toggleRoles.md b/content/docs/(functions)/Role/toggleRoles.mdx similarity index 67% rename from guide/Role/toggleRoles.md rename to content/docs/(functions)/Role/toggleRoles.mdx index 8d70c874..38b7df85 100644 --- a/guide/Role/toggleRoles.md +++ b/content/docs/(functions)/Role/toggleRoles.mdx @@ -1,4 +1,6 @@ -# $toggleRoles +--- +title: "$toggleRoles" +--- Toggles roles on a user. This means it removes specified roles if the user already has them, and adds them if they don't. @@ -11,26 +13,30 @@ Toggles roles on a user. This means it removes specified roles if the user alrea
- - - !!exec $toggleRoles[$authorID;$roleID[Member +]] - - + + +!!exec $toggleRoles[$authorID;$roleID[Member +]] + + **Example:** This example toggles the "Member +" role on the command executor. If the user has the role it will be removed, if they don't have it, it will be added. -::: tip Used Functions + + `$roleID`, to get the ID of a role by name. This is used to dynamically find the role ID based on its name. -::: -::: tip Related Functions + + + + * `$giveRoles`: Gives roles to a user. * `$takeRoles`: Removes roles from a user. * `$setRoles`: Removes all existing roles from a user and then adds the specified roles. -::: -##### Function difficulty: \ No newline at end of file + + +**Function difficulty:** diff --git a/guide/Server/addEmoji.md b/content/docs/(functions)/Server/addEmoji.mdx similarity index 78% rename from guide/Server/addEmoji.md rename to content/docs/(functions)/Server/addEmoji.mdx index 9fa58879..d28fe192 100644 --- a/guide/Server/addEmoji.md +++ b/content/docs/(functions)/Server/addEmoji.mdx @@ -1,4 +1,6 @@ -# $addEmoji +--- +title: "$addEmoji" +--- Adds an emoji to the current Discord server (guild). You can optionally restrict the emoji's use to specific roles. @@ -15,11 +17,11 @@ Adds an emoji to the current Discord server (guild). You can optionally restrict **Example:** - - - !!exec $addEmoji[https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp;CustomCommandSupport;no] - - + + +!!exec $addEmoji[https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp;CustomCommandSupport;no] + + **Explanation:** @@ -31,4 +33,4 @@ This function requires the bot to have the following permissions: * **Manage Emojis** -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/content/docs/(functions)/Server/allMembersCount.mdx b/content/docs/(functions)/Server/allMembersCount.mdx new file mode 100644 index 00000000..9bf1e475 --- /dev/null +++ b/content/docs/(functions)/Server/allMembersCount.mdx @@ -0,0 +1,19 @@ +--- +title: "$allMembersCount" +--- + +Returns the total number of users the bot is currently serving across all servers it's in. + +#### Usage: `$allMembersCount` + +
+ + +!!exec <@$clientID> serves $allMembersCount users in total! + + +Custom Command serves 6852280 users in total! + + + +**Function difficulty:** diff --git a/guide/Server/createAutomodKeyword.md b/content/docs/(functions)/Server/createAutomodKeyword.mdx similarity index 96% rename from guide/Server/createAutomodKeyword.md rename to content/docs/(functions)/Server/createAutomodKeyword.mdx index efb245d3..184394f0 100644 --- a/guide/Server/createAutomodKeyword.md +++ b/content/docs/(functions)/Server/createAutomodKeyword.mdx @@ -1,4 +1,6 @@ -# $createAutomodKeyword +--- +title: "$createAutomodKeyword" +--- Creates a new auto-moderation rule based on keywords within the server. This allows you to automatically take actions when specific words or phrases are used. @@ -50,7 +52,7 @@ $createAutomodKeyword[ ### Notes: -* The bot requires the **Manage Server** (`manageserver`) [permission](../CodeReferences/ref.permissions_list.md) to create automod rules. +* The bot requires the **Manage Server** (`manageserver`) [permission](/CodeReferences/ref.permissions_list) to create automod rules. * The following inputs can be repeated: * `{keyword}`: Up to 1000. * `{allow_keyword}`: Up to 100. diff --git a/guide/Server/deleteAutomod.md b/content/docs/(functions)/Server/deleteAutomod.mdx similarity index 92% rename from guide/Server/deleteAutomod.md rename to content/docs/(functions)/Server/deleteAutomod.mdx index 2b237835..12b02975 100644 --- a/guide/Server/deleteAutomod.md +++ b/content/docs/(functions)/Server/deleteAutomod.mdx @@ -1,4 +1,6 @@ -# $deleteAutomod +--- +title: "$deleteAutomod" +--- Deletes an automod rule from the server. diff --git a/guide/Server/deleteEmojis.md b/content/docs/(functions)/Server/deleteEmojis.mdx similarity index 94% rename from guide/Server/deleteEmojis.md rename to content/docs/(functions)/Server/deleteEmojis.mdx index f9ec15ca..3c0abc24 100644 --- a/guide/Server/deleteEmojis.md +++ b/content/docs/(functions)/Server/deleteEmojis.mdx @@ -1,4 +1,6 @@ -# $deleteEmojis +--- +title: "$deleteEmojis" +--- Delete a custom emoji(s) from the server. diff --git a/guide/Server/editAutomodKeyword.md b/content/docs/(functions)/Server/editAutomodKeyword.mdx similarity index 99% rename from guide/Server/editAutomodKeyword.md rename to content/docs/(functions)/Server/editAutomodKeyword.mdx index 8a4e02e5..c7de2b4a 100644 --- a/guide/Server/editAutomodKeyword.md +++ b/content/docs/(functions)/Server/editAutomodKeyword.mdx @@ -1,4 +1,6 @@ -# $editAutomodKeyword +--- +title: "$editAutomodKeyword" +--- Modify an AutoMod rule of type "keywords" in the server. This function allows you to modify various aspects of an existing keyword AutoMod rule, such as adding or removing keywords, regex expressions, actions, and exemptions. diff --git a/guide/Server/emojiCount.md b/content/docs/(functions)/Server/emojiCount.mdx similarity index 73% rename from guide/Server/emojiCount.md rename to content/docs/(functions)/Server/emojiCount.mdx index 39d2991f..d9efd8fb 100644 --- a/guide/Server/emojiCount.md +++ b/content/docs/(functions)/Server/emojiCount.mdx @@ -1,4 +1,6 @@ -# $emojiCount +--- +title: "$emojiCount" +--- Returns the amount of emojis in this server diff --git a/guide/Server/emojiExists.md b/content/docs/(functions)/Server/emojiExists.mdx similarity index 92% rename from guide/Server/emojiExists.md rename to content/docs/(functions)/Server/emojiExists.mdx index cb1e1072..35705984 100644 --- a/guide/Server/emojiExists.md +++ b/content/docs/(functions)/Server/emojiExists.mdx @@ -1,4 +1,6 @@ -# $emojiExists +--- +title: "$emojiExists" +--- Checks if a given emoji ID is available to the bot. diff --git a/guide/Server/getInviteInfo.md b/content/docs/(functions)/Server/getInviteInfo.mdx similarity index 82% rename from guide/Server/getInviteInfo.md rename to content/docs/(functions)/Server/getInviteInfo.mdx index c809bdc0..40a8332e 100644 --- a/guide/Server/getInviteInfo.md +++ b/content/docs/(functions)/Server/getInviteInfo.mdx @@ -1,4 +1,6 @@ -# $getInviteInfo +--- +title: "$getInviteInfo" +--- Gets invite info from a given invite code. @@ -49,11 +51,11 @@ If you leave the `Property` parameter empty (e.g., `$getInviteInfo[ZFQNZA4Ekz]`) !!exec $getInviteInfo[ZFQNZA4Ekz;servername] ``` - - - !!exec $getInviteInfo[ZFQNZA4Ekz;servername] - - - Custom Command - - + + +!!exec $getInviteInfo[ZFQNZA4Ekz;servername] + + +Custom Command + + diff --git a/content/docs/(functions)/Server/getServerInvite.mdx b/content/docs/(functions)/Server/getServerInvite.mdx new file mode 100644 index 00000000..52f7d4df --- /dev/null +++ b/content/docs/(functions)/Server/getServerInvite.mdx @@ -0,0 +1,21 @@ +--- +title: "$getServerInvite" +--- + +Creates an invite link to the current server. + +## Usage + +```bash +$getServerInvite +``` + +### Example: + + +!!exec My server invite is: $getServerInvite

+
+ +My server invite is: https://discord.gg/midoworkshopsv + +
\ No newline at end of file diff --git a/guide/Server/guild.md b/content/docs/(functions)/Server/guild.mdx similarity index 72% rename from guide/Server/guild.md rename to content/docs/(functions)/Server/guild.mdx index 3518d1c6..7361d29d 100644 --- a/guide/Server/guild.md +++ b/content/docs/(functions)/Server/guild.mdx @@ -1,4 +1,6 @@ -# $guild +--- +title: "$guild" +--- A versatile function packed with information about the current server! @@ -30,13 +32,13 @@ This function allows you to retrieve various details about the server where the #### Example: - - - !!exec This Server has $guild[boostcount] boosts! - - - This Server has 2 boosts! - - + + +!!exec This Server has $guild[boostcount] boosts! + + +This Server has 2 boosts! + + -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/content/docs/(functions)/Server/membersCount.mdx b/content/docs/(functions)/Server/membersCount.mdx new file mode 100644 index 00000000..da71573c --- /dev/null +++ b/content/docs/(functions)/Server/membersCount.mdx @@ -0,0 +1,24 @@ +--- +title: "$membersCount" +--- + +Returns the amount of users in your server/guild! + +#### Usage: `$membersCount` + +``` +!!exec There are `$membersCount` members in the server! +``` + +**Example:** + + + +!!exec There are `$membersCount` members in the server! + + +There are `599` members in the server + + + +**Function difficulty:** diff --git a/content/docs/(functions)/Server/meta.json b/content/docs/(functions)/Server/meta.json new file mode 100644 index 00000000..24b15fd1 --- /dev/null +++ b/content/docs/(functions)/Server/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Server Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Server/ownerID.mdx b/content/docs/(functions)/Server/ownerID.mdx new file mode 100644 index 00000000..ebcc4dc2 --- /dev/null +++ b/content/docs/(functions)/Server/ownerID.mdx @@ -0,0 +1,21 @@ +--- +title: "$ownerID" +--- + +Returns the guild's owner ID. + +#### Usage: `$ownerID` + +
+ + +!!exec $ownerID + + +683630053686378498 + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Server/resolveEmojiID.md b/content/docs/(functions)/Server/resolveEmojiID.mdx similarity index 95% rename from guide/Server/resolveEmojiID.md rename to content/docs/(functions)/Server/resolveEmojiID.mdx index 5a07f4aa..9b912d57 100644 --- a/guide/Server/resolveEmojiID.md +++ b/content/docs/(functions)/Server/resolveEmojiID.mdx @@ -1,4 +1,6 @@ -# $resolveEmojiID +--- +title: "$resolveEmojiID" +--- Resolves a full emoji, emoji name, or emoji ID into its ID. This function is useful for extracting the ID from an emoji, regardless of its format. diff --git a/guide/Server/securityPause.md b/content/docs/(functions)/Server/securityPause.mdx similarity index 94% rename from guide/Server/securityPause.md rename to content/docs/(functions)/Server/securityPause.mdx index d6e6f13d..a31ca006 100644 --- a/guide/Server/securityPause.md +++ b/content/docs/(functions)/Server/securityPause.mdx @@ -1,4 +1,6 @@ -# $securityPause +--- +title: "$securityPause" +--- a beta feature, where discord allow you to pause invites and DMs for a period of time diff --git a/guide/Server/serverBanner.md b/content/docs/(functions)/Server/serverBanner.mdx similarity index 91% rename from guide/Server/serverBanner.md rename to content/docs/(functions)/Server/serverBanner.mdx index 0f6cb317..eb4c1256 100644 --- a/guide/Server/serverBanner.md +++ b/content/docs/(functions)/Server/serverBanner.mdx @@ -1,4 +1,6 @@ -# $serverBanner +--- +title: "$serverBanner" +--- Returns the current server banner @@ -22,4 +24,4 @@ This function retrieves the server's banner image URL. You can optionally speci Learn more about server banners: https://support.discord.com/hc/en-us/articles/360028716472-Server-Banner-Background-Invite-Banner-Image -##### Function difficulty: \ No newline at end of file +**Function difficulty:** diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx new file mode 100644 index 00000000..e8b6aee7 --- /dev/null +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -0,0 +1,21 @@ +--- +title: "$serverBoostCount" +--- + +Returns the number of boosts this server has. + +#### Usage: `$serverBoostCount` + +
+ + +!!exec $serverBoostCount + + +6 + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverBoostLevel.mdx b/content/docs/(functions)/Server/serverBoostLevel.mdx new file mode 100644 index 00000000..4614e773 --- /dev/null +++ b/content/docs/(functions)/Server/serverBoostLevel.mdx @@ -0,0 +1,21 @@ +--- +title: "$serverBoostLevel" +--- + +Returns the boost level of the server. + +#### Usage: `$serverBoostLevel` + +This command retrieves the current boost level of the Discord server. Boost levels range from 0 (no boosts) to 3 (highest level). + +
+ + +!!exec $serverBoostLevel + + +1 + + + +**Function difficulty:** diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx new file mode 100644 index 00000000..4643404f --- /dev/null +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -0,0 +1,21 @@ +--- +title: "$serverContentFilter" +--- + +Returns the content filter level of this guild. This determines the level of explicit content filtering applied to media content within the server. + +#### Usage: `$serverContentFilter` + +
+ + +!!exec $serverContentFilter + + +All Members + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx new file mode 100644 index 00000000..9202ff5d --- /dev/null +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -0,0 +1,38 @@ +--- +title: "$serverDescription" +--- + +Returns the current server description + +#### Usage: `$serverDescription` +
+ + +!!exec $serverDescription + + +Custom Command Support Server + + + +**Function difficulty:** + +**Tags:** # serverDescription + + +Returns the current server description. This command retrieves the description set for the Discord server. + +#### Usage: `$serverDescription` + +
+ + + +!!exec $serverDescription + + +Custom Command Support Server + + + +**Function difficulty:** diff --git a/content/docs/(functions)/Server/serverEmojis.mdx b/content/docs/(functions)/Server/serverEmojis.mdx new file mode 100644 index 00000000..cd83054c --- /dev/null +++ b/content/docs/(functions)/Server/serverEmojis.mdx @@ -0,0 +1,21 @@ +--- +title: "serverEmojis" +--- + +Returns the server emojis. + +#### Usage: `$serverEmojis` + +
+ + + +!!exec $serverEmojis + + +:cc: , :blob: + + + +**Function difficulty:** + diff --git a/content/docs/(functions)/Server/serverFeatures.mdx b/content/docs/(functions)/Server/serverFeatures.mdx new file mode 100644 index 00000000..3f9f7c53 --- /dev/null +++ b/content/docs/(functions)/Server/serverFeatures.mdx @@ -0,0 +1,19 @@ +--- +title: "serverFeatures" +--- + +Returns the server features. This function returns a comma-separated list of features enabled on the server. + +#### Usage: `$serverFeatures` + +
+ + +!!exec $serverFeatures + + +Preview Enabled, Threads Enabled, Member Verification Gate Enabled, New Thread Permissions, News, Community, Welcome Screen Enabled + + + +**Function difficulty:** diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx new file mode 100644 index 00000000..b0004b43 --- /dev/null +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -0,0 +1,22 @@ +--- +title: "$serverIcon" +--- + +Returns the current server's icon. + +#### Usage: `$serverIcon` + +
+ + + +!!exec $serverIcon + + + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx new file mode 100644 index 00000000..de1ce748 --- /dev/null +++ b/content/docs/(functions)/Server/serverName.mdx @@ -0,0 +1,25 @@ +--- +title: "$serverName" +--- + +Returns the name of the current server. + +#### Usage: `$serverName` + +
+ + + +!!exec $serverName + + +Custom Command + + +My server's name is: Your Server Name + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx new file mode 100644 index 00000000..53ebccee --- /dev/null +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -0,0 +1,22 @@ +--- +title: "$serverRegion" +--- + +Returns the current server region or `undefined` if not available. + +#### Usage: `$serverRegion` + +
+ + + +!!exec $serverRegion + + +Europe + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverSplash.mdx b/content/docs/(functions)/Server/serverSplash.mdx new file mode 100644 index 00000000..8ac3fead --- /dev/null +++ b/content/docs/(functions)/Server/serverSplash.mdx @@ -0,0 +1,13 @@ +--- +title: "$serverSplash" +--- + +Returns the current server invite splash + +#### Usage: `$serverSplash[size (optional)]` + +Learn more about it: https://support.discord.com/hc/en-us/articles/360028716472-Server-Banner-Background-Invite-Splash-Image + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx new file mode 100644 index 00000000..76229525 --- /dev/null +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -0,0 +1,20 @@ +--- +title: "$serverVerificationLevel" +--- + +Returns the verification level of the server + +#### Usage: `$serverVerificationLevel` +
+ + +!!exec $serverVerificationLevel + + +Medium + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx new file mode 100644 index 00000000..2f95820b --- /dev/null +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -0,0 +1,18 @@ +--- +title: "$setGuildIcon" +--- + +Sets a new Icon for the server + +#### Usage: `$setGuildIcon[URL]` + + + +`$setGuildName`, to set a server's name + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx new file mode 100644 index 00000000..f54dc92a --- /dev/null +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -0,0 +1,18 @@ +--- +title: "$setGuildName" +--- + +Sets the name of your server to something, you have put in. + +#### Usage: `$setGuildName[name]` + + + +`$setGuildIcon`, to set a server's logo/ icon + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Server/systemChannelID.mdx b/content/docs/(functions)/Server/systemChannelID.mdx new file mode 100644 index 00000000..02c65414 --- /dev/null +++ b/content/docs/(functions)/Server/systemChannelID.mdx @@ -0,0 +1,23 @@ +--- +title: "$systemChannelID" +--- + + + +Returns the system channel ID of this server (if any) + +#### Usage: `$systemChannelID` +
+ + +!!exec $systemChannelID + + + + + +This function is currently not functioning as expected! + + + +**Function difficulty:** diff --git a/guide/Stickers/createSticker.md b/content/docs/(functions)/Stickers/createSticker.mdx similarity index 95% rename from guide/Stickers/createSticker.md rename to content/docs/(functions)/Stickers/createSticker.mdx index 0cb6fd1f..a57fbffc 100644 --- a/guide/Stickers/createSticker.md +++ b/content/docs/(functions)/Stickers/createSticker.mdx @@ -1,4 +1,6 @@ -# $createSticker +--- +title: "$createSticker" +--- create a new sticker in the server diff --git a/guide/Stickers/deleteSticker.md b/content/docs/(functions)/Stickers/deleteSticker.mdx similarity index 73% rename from guide/Stickers/deleteSticker.md rename to content/docs/(functions)/Stickers/deleteSticker.mdx index 1bf65f32..4efc1f0e 100644 --- a/guide/Stickers/deleteSticker.md +++ b/content/docs/(functions)/Stickers/deleteSticker.mdx @@ -1,4 +1,6 @@ -# $deleteSticker +--- +title: "$deleteSticker" +--- To delete a sticker inside the server diff --git a/guide/Stickers/editSticker.md b/content/docs/(functions)/Stickers/editSticker.mdx similarity index 87% rename from guide/Stickers/editSticker.md rename to content/docs/(functions)/Stickers/editSticker.mdx index b7eda8d2..ff9e6009 100644 --- a/guide/Stickers/editSticker.md +++ b/content/docs/(functions)/Stickers/editSticker.mdx @@ -1,4 +1,6 @@ -# $editSticker +--- +title: "$editSticker" +--- To edit a sticker inside the server\ **Info** can be: name,desc,emoji diff --git a/content/docs/(functions)/Stickers/messageStickers.mdx b/content/docs/(functions)/Stickers/messageStickers.mdx new file mode 100644 index 00000000..591dfb81 --- /dev/null +++ b/content/docs/(functions)/Stickers/messageStickers.mdx @@ -0,0 +1,22 @@ +--- +title: "$messageStickers" +--- + +To return the user message stickers (id)\ +**Index**: starts with 1, leaving it empty return all stickers ids separated by `, ` + +## Usage + +```bash +$messageStickers[Index] +``` + +### Example: + + +!!exec $messageStickers[1]

+
+ +992970796031017080 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Stickers/meta.json b/content/docs/(functions)/Stickers/meta.json new file mode 100644 index 00000000..7178dbf5 --- /dev/null +++ b/content/docs/(functions)/Stickers/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Sticker Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Stickers/serverStickers.md b/content/docs/(functions)/Stickers/serverStickers.mdx similarity index 83% rename from guide/Stickers/serverStickers.md rename to content/docs/(functions)/Stickers/serverStickers.mdx index 027d6f44..be48d8e9 100644 --- a/guide/Stickers/serverStickers.md +++ b/content/docs/(functions)/Stickers/serverStickers.mdx @@ -1,4 +1,6 @@ -# $serverStickers +--- +title: "$serverStickers" +--- To return all server stickers's id diff --git a/content/docs/(functions)/Stickers/sticker.mdx b/content/docs/(functions)/Stickers/sticker.mdx new file mode 100644 index 00000000..b0d4d737 --- /dev/null +++ b/content/docs/(functions)/Stickers/sticker.mdx @@ -0,0 +1,22 @@ +--- +title: "$sticker" +--- + +To return an information about a sticker using ID\ +**Info** can be: name,desc,url,tags,time + +## Usage + +```bash +$sticker[Sticker ID;name;Info] +``` + +### Example: + + +!!exec $sticker[992974663099629588;name]

+
+ +Smiley + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayClear.mdx b/content/docs/(functions)/Text/Array/arrayClear.mdx new file mode 100644 index 00000000..52506d1a --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayClear.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayClear" +--- + +Deletes an array. + +## Usage + +```bash +$arrayClear[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Hello World; ]
Before=$arrayJoin[, ]
$arrayClear
After=$arrayJoin[, ]

+
+ +Before=Hello, World
After= +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayConcat.mdx b/content/docs/(functions)/Text/Array/arrayConcat.mdx new file mode 100644 index 00000000..da1a8751 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayConcat.mdx @@ -0,0 +1,24 @@ +--- +title: "$arrayConcat" +--- + +Merge new array with the current array + +## Usage + +```bash +$arrayConcat[List;separator;array name (optional)] +``` + +### Example: + + +!!exec $arrayCreate[Mido/Rake;/]
$arrayConcat[Azz/Finkz;/]
$arrayJoin[, ]

+
+ +Mido, Rake, Azz, Finkz

+
+
+ +### Note on Separator: +You can use regex as separator i.e `/separator/` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayCount.mdx b/content/docs/(functions)/Text/Array/arrayCount.mdx new file mode 100644 index 00000000..1318478e --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayCount.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayCount" +--- + +An alias for `$arrayLength`. + +## Usage + +```bash +$arrayCount[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
$arrayCount

+
+ +3 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayCreate.mdx b/content/docs/(functions)/Text/Array/arrayCreate.mdx new file mode 100644 index 00000000..c8ec2886 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayCreate.mdx @@ -0,0 +1,24 @@ +--- +title: "$arrayCreate" +--- + +Creates an array from a list. + +## Usage + +```bash +$arrayCreate[List;separator;array name (optional)] +``` + +### Example: + + +!!exec $arrayCreate[Mido/Rake/Azz;/]
1 is $arrayGet[1]
2 is $arrayGet[2]
3 is $arrayGet[3]

+
+ +1 is Mido
2 is Rake
3 is Azz +
+
+ +### Note on Separator: +You can use regex as separator i.e `/separator/` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayElementCount.mdx b/content/docs/(functions)/Text/Array/arrayElementCount.mdx new file mode 100644 index 00000000..eca0daee --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayElementCount.mdx @@ -0,0 +1,22 @@ +--- +title: "$arrayElementCount" +--- + +This function is used to count the number of times a specific element appears in an array.\ + It takes three parameters: the element to count, whether or not to trim whitespace before comparing elements, and the name of the array to search + +## Usage + +```bash +$arrayElementCount[Element To Count;Trim before compare (yes/no);array name] +``` + +### Example: + + +!!exec $arrayCreate[Mido/Rake/Mido/Rake/Rake/Azz/Faj;/]
Rake repeated $arrayElementCount[Rake] times
Mido repeated $arrayElementCount[Mido] times
Azz repeated $arrayElementCount[Azz] times
Faj repeated $arrayElementCount[Faj] times

+
+ +Rake repeated 3 times
Mido repeated 2 times
Azz repeated 1 times
Faj repeated 1 times +
+
\ No newline at end of file diff --git a/guide/Text/Array/arrayFilter.md b/content/docs/(functions)/Text/Array/arrayFilter.mdx similarity index 64% rename from guide/Text/Array/arrayFilter.md rename to content/docs/(functions)/Text/Array/arrayFilter.mdx index a6568034..7f6c48cb 100644 --- a/guide/Text/Array/arrayFilter.md +++ b/content/docs/(functions)/Text/Array/arrayFilter.mdx @@ -1,12 +1,16 @@ -# $arrayFilter +--- +title: "$arrayFilter" +--- Iterates through each element in an array. If the code returns `false`, the element will be removed from the array. -::: warning Warning + + Only zero-cooldown functions are allowed in the CODE section! Functions that have a cooldown will be skipped, even in Tier 3+.
For example, if your loop contains `$sendMessage[Hello world!]`, it will literally display as "$sendMessage[Hello world!]" because `$sendMessage` is not a zero-cooldown function. If you are looking to loop over non-zero cooldown functions, you should use `$forEach` instead. -::: + +
## Usage ```bash @@ -24,11 +28,11 @@ Array loops are limited to a certain number of cycles. These limits vary between | 5 (Ultra) | 150 | ### Example (Remove Hello): - - - !!exec $textSplit[Hello/World;/]
$arrayFilter[value]{
$if[$value==Hello]{
false
}
}
$arrayJoin[/] -
- - World - -
\ No newline at end of file + + +!!exec $textSplit[Hello/World;/]
$arrayFilter[value]\{
$if[$value==Hello]\{
false
}
}
$arrayJoin[/] +
+ +World + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayGet.mdx b/content/docs/(functions)/Text/Array/arrayGet.mdx new file mode 100644 index 00000000..2e99e3c6 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayGet.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayGet" +--- + +Returns the value of an element at the specified index in an array. + +## Usage + +```bash +$arrayGet[index;array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
First is $arrayGet[1]
Second is $arrayGet[2]
Third is $arrayGet[3]

+
+ +First is Mido
Second is Rake
Third is Azz +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayInclude.mdx b/content/docs/(functions)/Text/Array/arrayInclude.mdx new file mode 100644 index 00000000..de258ecd --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayInclude.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayInclude" +--- + +To check if a value exists in the array. Returns `true` if the value exists, otherwise returns `false`. + +## Usage + +```bash +$arrayInclude[Value;array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
$arrayInclude[Rake]

+
+ +true + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayJoin.mdx b/content/docs/(functions)/Text/Array/arrayJoin.mdx new file mode 100644 index 00000000..18598312 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayJoin.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayJoin" +--- + +Joins an array created using `$textSplit` with a specific separator. + +## Usage + +```bash +$arrayJoin[Separator (optional);array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Rake/Mido/Azz;/]
$arrayJoin[, ]

+
+ +Rake, Mido, Azz + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayLength.mdx b/content/docs/(functions)/Text/Array/arrayLength.mdx new file mode 100644 index 00000000..ddb9ebf8 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayLength.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayLength" +--- + +Returns the number of elements in an array. + +## Usage + +```bash +$arrayLength[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
$arrayLength

+
+ +3 + +
\ No newline at end of file diff --git a/guide/Text/Array/arrayLoop.md b/content/docs/(functions)/Text/Array/arrayLoop.mdx similarity index 62% rename from guide/Text/Array/arrayLoop.md rename to content/docs/(functions)/Text/Array/arrayLoop.mdx index d529766f..09392f79 100644 --- a/guide/Text/Array/arrayLoop.md +++ b/content/docs/(functions)/Text/Array/arrayLoop.mdx @@ -1,12 +1,16 @@ -# $arrayLoop +--- +title: "$arrayLoop" +--- To loop functions in an array. -::: warning Warning + + Only zero-cooldown functions are allowed in the CODE section! Functions that have a cooldown will be skipped, even in Tier 3+.
For example, if your loop contains `$sendMessage[Hello world!]`, it will literally display as "$sendMessage[Hello world!]" because `$sendMessage` is not a zero-cooldown function. If you are looking to loop over non-zero cooldown functions, you should use `$forEach` instead. -::: + +
## Usage ```bash @@ -24,11 +28,11 @@ Array loops are limited to a certain number of cycles. These limits vary between | 5 (Ultra) | 150 | ## Example: - - - !!exec $textSplit[15,18,21;,]
$arrayLoop[age]{
age is $age
} -
- - age is 15
age is 18
age is 21 -
-
\ No newline at end of file + + +!!exec $textSplit[15,18,21;,]
$arrayLoop[age]\{
age is $age
} +
+ +age is 15
age is 18
age is 21 +
+
\ No newline at end of file diff --git a/guide/Text/Array/arrayMap.md b/content/docs/(functions)/Text/Array/arrayMap.mdx similarity index 61% rename from guide/Text/Array/arrayMap.md rename to content/docs/(functions)/Text/Array/arrayMap.mdx index 92b9b0aa..8549d355 100644 --- a/guide/Text/Array/arrayMap.md +++ b/content/docs/(functions)/Text/Array/arrayMap.mdx @@ -1,12 +1,16 @@ -# $arrayMap +--- +title: "$arrayMap" +--- To replace array values with another value. -::: warning Warning + + Only zero-cooldown functions are allowed in the CODE section! Functions that have a cooldown will be skipped, even in Tier 3+.
For example, if your loop contains `$sendMessage[Hello world!]`, it will literally display as "$sendMessage[Hello world!]" because `$sendMessage` is not a zero-cooldown function. If you are looking to loop over non-zero cooldown functions, you should use `$forEach` instead. -::: + +
## Usage ```bash @@ -24,11 +28,11 @@ Array loops are limited to a certain number of cycles. These limits vary between | 5 (Ultra) | 150 | ### Example: - - - !!exec $textSplit[15,18,21;,]
$arrayMap[age]{
age is $age
}
$arrayJoin[, ]

-
- - age is 15, age is 18, age is 21 - -
\ No newline at end of file + + +!!exec $textSplit[15,18,21;,]
$arrayMap[age]\{
age is $age
}
$arrayJoin[, ]

+
+ +age is 15, age is 18, age is 21 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayPop.mdx b/content/docs/(functions)/Text/Array/arrayPop.mdx new file mode 100644 index 00000000..53c54746 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayPop.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayPop" +--- + +Removes, and returns the last element in an array. + +## Usage + +```bash +$arrayPop[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
last one is $arrayPop
before it is $arrayPop
before it is $arrayPop

+
+ +last one is Azz
before it is Rake
before it is Mido +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayPush.mdx b/content/docs/(functions)/Text/Array/arrayPush.mdx new file mode 100644 index 00000000..af4024e5 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayPush.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayPush" +--- + +Adds an element to the end of an array. + +## Usage + +```bash +$arrayPush[Value;array name (optional)] +``` + +### Example: + + +!!exec $arrayPush[Mido]
$arrayPush[Rake]
$arrayPush[Azz]
$arrayJoin[/]

+
+ +Mido/Rake/Azz + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayRemove.mdx b/content/docs/(functions)/Text/Array/arrayRemove.mdx new file mode 100644 index 00000000..01eb49ca --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayRemove.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayRemove" +--- + +Removes something from an array, using the index, and returns nothing. + +## Usage + +```bash +$arrayRemove[Index;Index... (optional);array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Hello World, how are you?; ]
$arrayRemove[1;2;3]
$arrayGet[1]

+
+ +are + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayReverse.mdx b/content/docs/(functions)/Text/Array/arrayReverse.mdx new file mode 100644 index 00000000..ec4ae267 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayReverse.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayReverse" +--- + +Reverses an array. + +## Usage + +```bash +$arrayReverse[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Number 1/Number 2/Number 3;/]
$arrayReverse
$arrayJoin[/]

+
+ +Number 3/Number 2/Number 1 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySearch.mdx b/content/docs/(functions)/Text/Array/arraySearch.mdx new file mode 100644 index 00000000..66865d2d --- /dev/null +++ b/content/docs/(functions)/Text/Array/arraySearch.mdx @@ -0,0 +1,21 @@ +--- +title: "$arraySearch" +--- + +To search for a value in an array. If it exists, it will return the position of the value. If not, `-1` is returned. + +## Usage + +```bash +$arraySearch[Value to search;array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
Mido is in position: $arraySearch[Mido]
Azz is in position: $arraySearch[Azz]
InvalidName is in position: $arraySearch[justsomeweirdrandom]

+
+ +Mido is in position: 1
Azz is in position: 3
InvalidName is in position: -1 +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySet.mdx b/content/docs/(functions)/Text/Array/arraySet.mdx new file mode 100644 index 00000000..2e5658f1 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arraySet.mdx @@ -0,0 +1,21 @@ +--- +title: "$arraySet" +--- + +Sets the value of an index in an array. + +## Usage + +```bash +$arraySet[index;value;array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
Before: $arrayGet[3]
$arraySet[3;Finkz]
After: $arrayGet[3]

+
+ +Before: Azz
After: Finkz +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayShift.mdx b/content/docs/(functions)/Text/Array/arrayShift.mdx new file mode 100644 index 00000000..805541da --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayShift.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayShift" +--- + +Removes and returns the first element in an array. + +## Usage + +```bash +$arrayShift[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Azz;/]
first one is $arrayShift
after it is $arrayShift
after it is $arrayShift

+
+ +first one is Mido
after it is Rake
after it is Azz +
+
diff --git a/content/docs/(functions)/Text/Array/arrayShuffle.mdx b/content/docs/(functions)/Text/Array/arrayShuffle.mdx new file mode 100644 index 00000000..905a0f74 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayShuffle.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayShuffle" +--- + +To shuffle an existing array. + +## Usage + +```bash +$arrayShuffle[array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Rake/Azz/Mido;/]
$arrayShuffle
$arrayJoin[/]

+
+ +Azz/Mido/Rake + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySlice.mdx b/content/docs/(functions)/Text/Array/arraySlice.mdx new file mode 100644 index 00000000..7e851e02 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arraySlice.mdx @@ -0,0 +1,21 @@ +--- +title: "$arraySlice" +--- + +To keep only a part of the array, *slicing* it. + +## Usage + +```bash +$arraySlice[from;to;array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido Rake Azz Finkz; ]
$arraySlice[2;3]
$arrayJoin[ ]

+
+ +Rake Azz + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySort.mdx b/content/docs/(functions)/Text/Array/arraySort.mdx new file mode 100644 index 00000000..cca1846f --- /dev/null +++ b/content/docs/(functions)/Text/Array/arraySort.mdx @@ -0,0 +1,47 @@ +--- +title: "$arraySort" +--- + +Sorts an array, created with `$textSplit`. +Can be sorted numerically or alphabetically, or depending on occurrences. + +## Usage + +```bash +$arraySort[Ascending (yes/no, default is no);Sort Type;array name (optional)] +``` + +### Sort Types: +`num`: Sort Numerically\ +`alpha`: Sort Alphabetically\ +`frequent`: Sort By how many element got repeated + +### Example (Sort Occurrences): + + +!!exec $textSplit[3.Mido
1.Azz
2.Rake
2.Rake
3.Mido
3.Mido
4.Finkz;
]
$arraySort[no;frequent]

+
+ +The sorted list is
3.Mido
2.Rake
4.Finkz
1.Azz

+
+
+ +### Example (Sort Numerically): + + +!!exec $textSplit[1. Azz
3.Mido
2.Rake
4.Finkz;
]
$arraySort[yes;num]
The sorted list is
$arrayJoin[
]

+
+ +The sorted list is
1. Azz
2.Rake
3.Mido
4.Finkz

+
+
+ +### Example (Sort Alphabetically): + + +!!exec $textSplit[3.Mido
1.Azz
2.Rake
4.Finkz;
]
$arraySort[yes;alpha]
The sorted list is
$arrayJoin[
]

+
+ +The sorted list is
1. Azz
4.Finkz
3.Mido
2.Rake +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayUnique.mdx b/content/docs/(functions)/Text/Array/arrayUnique.mdx new file mode 100644 index 00000000..9af194a9 --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayUnique.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayUnique" +--- + +Return the unique elements in the array, glued with the separator. + +## Usage + +```bash +$arrayUnique[Separator (default ', ');Trim Element before check? (default is yes);array name (optional)] +``` + +### Example: + + +!!exec $textSplit[Mido/Rake/Rake/Mido/Azz;/]
$arrayUnique[, ]

+
+ +Mido, Rake, Azz + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayUnshift.mdx b/content/docs/(functions)/Text/Array/arrayUnshift.mdx new file mode 100644 index 00000000..421cbe0d --- /dev/null +++ b/content/docs/(functions)/Text/Array/arrayUnshift.mdx @@ -0,0 +1,21 @@ +--- +title: "$arrayUnshift" +--- + +Adds an element to the start of the array. + +## Usage + +```bash +$arrayUnshift[value;array name (optional)] +``` + +### Example: + + +!!exec $arrayUnshift[Mido]
$arrayUnshift[Rake]
$arrayUnshift[Azz]
$arrayJoin[/]

+
+ +Azz/Rake/Mido + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/meta.json b/content/docs/(functions)/Text/Array/meta.json new file mode 100644 index 00000000..7db01186 --- /dev/null +++ b/content/docs/(functions)/Text/Array/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Array Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Text/Components/addButton.md b/content/docs/(functions)/Text/Components/addButton.mdx similarity index 67% rename from guide/Text/Components/addButton.md rename to content/docs/(functions)/Text/Components/addButton.mdx index 1ee55b7f..56ae44ad 100644 --- a/guide/Text/Components/addButton.md +++ b/content/docs/(functions)/Text/Components/addButton.mdx @@ -1,4 +1,7 @@ -# $addButton +--- +title: "$addButton" +--- + Adds a button to an existing message. Use `$button` to send a message with a button. ## Usage @@ -13,13 +16,16 @@ Adds a button to an existing message. Use `$button` to send a message with a but (Add disabled) ![](https://cdn.discordapp.com/attachments/914682255346118687/938578212018085899/Screenshot_20220202203325.jpg) -:::tip Available colors + + `red, green, blurple, grey, url` \ **URL buttons are grey by default.** * You can use normal unicode emojis, custom emojis with their ID, or you can use `$customEmoji`. -::: -##### Function difficulty: -###### Tags: \ No newline at end of file + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Text/Components/addMenu.md b/content/docs/(functions)/Text/Components/addMenu.mdx similarity index 96% rename from guide/Text/Components/addMenu.md rename to content/docs/(functions)/Text/Components/addMenu.mdx index 59193242..f99e2cbe 100644 --- a/guide/Text/Components/addMenu.md +++ b/content/docs/(functions)/Text/Components/addMenu.mdx @@ -1,4 +1,7 @@ -# $addMenu +--- +title: "$addMenu" +--- + Add a menu to existing message ## Usage diff --git a/guide/Text/Components/awaitButton.md b/content/docs/(functions)/Text/Components/awaitButton.mdx similarity index 75% rename from guide/Text/Components/awaitButton.md rename to content/docs/(functions)/Text/Components/awaitButton.mdx index d377e2b2..f9361b1e 100644 --- a/guide/Text/Components/awaitButton.md +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -1,9 +1,14 @@ -# $awaitButton +--- +title: "$awaitButton" +--- + Waits for a button to be pressed and return its button id, or `undefined` in case no button was pressed when the timeout is reached. -:::tip Tip + + This function supports the [Message Curl Format](/CodeReferences/ref.message_curl_format.html). This way, you can send a message with buttons by using `{button:label:style/url:emoji:id:newline(yes/no)}`. -::: + + #### Usage: `$awaitButton[Message (optional);user id (optional, default:author);timeout (optional, default:15s);button id1 (optional);button id2...]`
@@ -13,9 +18,9 @@ The maximum time the bot waits for a user to click a button.\ Accepts time in the format `10s` for example.\ The max time is `60 x (bot tier + 1)` seconds, for example for tier 3 it would be `240` seconds. -::: details Examples + + -:::details Examples (Simple response) ![](https://cdn.discordapp.com/attachments/914682255346118687/938556903116652594/Screenshot_20220202190956.jpg) @@ -41,11 +46,17 @@ Choosing something other them red, or nothing. Choosing red. ![](https://cdn.discordapp.com/attachments/914682255346118687/938559970792845312/Screenshot_20220202191947.jpg) -::: -:::tip Note -You can send an embed using the [Message Curl Format](/CodeReferences/ref.message_curl_format.md). -::: + + + + + +You can send an embed using the [Message Curl Format](/CodeReferences/ref.message_curl_format). + + + +**Function difficulty:** + +**Tags:** -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Components/awaitMenu.md b/content/docs/(functions)/Text/Components/awaitMenu.mdx similarity index 57% rename from guide/Text/Components/awaitMenu.md rename to content/docs/(functions)/Text/Components/awaitMenu.mdx index 536a0926..fc66208e 100644 --- a/guide/Text/Components/awaitMenu.md +++ b/content/docs/(functions)/Text/Components/awaitMenu.mdx @@ -1,4 +1,6 @@ -# $awaitMenu +--- +title: "$awaitMenu" +--- To wait for a menu option to be selected and return the selected option(s) values. If nothing is selected, it returns `undefined`. @@ -15,10 +17,10 @@ Accepts time in the format `10s` for example.\ The max time is `60 x (bot tier + 1)` seconds, for example for tier 3 it would be `240` seconds. ### Example: - - - !!exec You selected: $awaitMenu[
{title: Test}
{menu:
{id=test}
{placeholder=Select}
{min=1}
{max=1}
{option=Mido}
{desc=A guy}
{value=mido}
{option=Rake}
{desc=Another guy}
{value=rake}
}
;$authorID;;test]

-
-
+ + +!!exec You selected: $awaitMenu[
\{title: Test}
\{menu:
\{id=test}
\{placeholder=Select}
\{min=1}
\{max=1}
\{option=Mido}
\{desc=A guy}
\{value=mido}
\{option=Rake}
\{desc=Another guy}
\{value=rake}
}
;$authorID;;test]

+
+
![](https://i.imgur.com/58Wzc05.gif) diff --git a/guide/Text/Components/button.md b/content/docs/(functions)/Text/Components/button.mdx similarity index 88% rename from guide/Text/Components/button.md rename to content/docs/(functions)/Text/Components/button.mdx index b0efff22..8a454c19 100644 --- a/guide/Text/Components/button.md +++ b/content/docs/(functions)/Text/Components/button.mdx @@ -1,4 +1,7 @@ -# $button +--- +title: "$button" +--- + Creates a discord button. ## Usage @@ -14,10 +17,12 @@ $button[Click me!;;verySimpleButton] ``` ![](https://cdn.discordapp.com/attachments/957286111250624552/1126652117373964338/basic-button.png) -::: tip What's an ID? + + ID is used to identify the button clicked. This way, you can decide what happens after clicking a specific button. Keep in mind, that there can't be two buttons with the same ID in one message. -::: + + ## Colors There are four button colors discord allows you to use: @@ -88,14 +93,18 @@ $sendmessage[How's your day going? ![](https://cdn.discordapp.com/attachments/957286111250624552/1126666908662513684/image.png) -::: tip Button handling + + Now, as you know how to create buttons, you may want to know how to handle them. Check these pages: -- [Button trigger](../../Trigger/button.md) +- [Button trigger](/Trigger/button) - `$awaitButton` -::: -##### Function difficulty: -###### Tags: + + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Text/Components/buttonEmoji.md b/content/docs/(functions)/Text/Components/buttonEmoji.mdx similarity index 84% rename from guide/Text/Components/buttonEmoji.md rename to content/docs/(functions)/Text/Components/buttonEmoji.mdx index d1cc5416..8778a9a8 100644 --- a/guide/Text/Components/buttonEmoji.md +++ b/content/docs/(functions)/Text/Components/buttonEmoji.mdx @@ -1,4 +1,6 @@ -# $buttonEmoji +--- +title: "$buttonEmoji" +--- Return the clicked button's emoji in the [Button trigger](/Trigger/button.html). If there is no emoji, it returns `undefined`. diff --git a/guide/Text/Components/buttonID.md b/content/docs/(functions)/Text/Components/buttonID.mdx similarity index 83% rename from guide/Text/Components/buttonID.md rename to content/docs/(functions)/Text/Components/buttonID.mdx index 16f42d32..e17bbb39 100644 --- a/guide/Text/Components/buttonID.md +++ b/content/docs/(functions)/Text/Components/buttonID.mdx @@ -1,4 +1,6 @@ -# $buttonID +--- +title: "$buttonID" +--- Returns the Button ID that triggered the command. Returns `undefined` if the trigger isn't Button. diff --git a/guide/Text/Components/buttonIsDisabled.md b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx similarity index 56% rename from guide/Text/Components/buttonIsDisabled.md rename to content/docs/(functions)/Text/Components/buttonIsDisabled.mdx index 7ead8be0..7960da50 100644 --- a/guide/Text/Components/buttonIsDisabled.md +++ b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx @@ -1,7 +1,9 @@ -# $buttonIsDisabled +--- +title: "$buttonIsDisabled" +--- Returns true if the button is disabled, otherwise returns `false`. -
If there's no button, return `undefined`. +
If there's no button, return `undefined`. ## Usage diff --git a/guide/Text/Components/buttonLabel.md b/content/docs/(functions)/Text/Components/buttonLabel.mdx similarity index 83% rename from guide/Text/Components/buttonLabel.md rename to content/docs/(functions)/Text/Components/buttonLabel.mdx index 38a8b007..f699db3f 100644 --- a/guide/Text/Components/buttonLabel.md +++ b/content/docs/(functions)/Text/Components/buttonLabel.mdx @@ -1,4 +1,6 @@ -# $buttonLabel +--- +title: "$buttonLabel" +--- Return the clicked button's label in the Button trigger. If the button doesn't have a label, return `undefined`. diff --git a/guide/Text/Components/buttonStyle.md b/content/docs/(functions)/Text/Components/buttonStyle.mdx similarity index 83% rename from guide/Text/Components/buttonStyle.md rename to content/docs/(functions)/Text/Components/buttonStyle.mdx index eff3f2d3..8aad90a7 100644 --- a/guide/Text/Components/buttonStyle.md +++ b/content/docs/(functions)/Text/Components/buttonStyle.mdx @@ -1,4 +1,6 @@ -# $buttonStyle +--- +title: "$buttonStyle" +--- Return the clicked button's style, e.g. `blurple`/`red`/`url` in the Button trigger. If none, `undefined` is returned. diff --git a/guide/Text/Components/buttonURL.md b/content/docs/(functions)/Text/Components/buttonURL.mdx similarity index 83% rename from guide/Text/Components/buttonURL.md rename to content/docs/(functions)/Text/Components/buttonURL.mdx index 9bd3aa34..7973e1c7 100644 --- a/guide/Text/Components/buttonURL.md +++ b/content/docs/(functions)/Text/Components/buttonURL.mdx @@ -1,4 +1,6 @@ -# $buttonURL +--- +title: "$buttonURL" +--- Return the clicked button's URL in Button trigger if it exists. Else, returns `undefined` if not found. diff --git a/guide/Text/Components/disableButton.md b/content/docs/(functions)/Text/Components/disableButton.mdx similarity index 76% rename from guide/Text/Components/disableButton.md rename to content/docs/(functions)/Text/Components/disableButton.mdx index 30ef45e2..d5eac1e9 100644 --- a/guide/Text/Components/disableButton.md +++ b/content/docs/(functions)/Text/Components/disableButton.mdx @@ -1,4 +1,7 @@ -# $disableButton +--- +title: "$disableButton" +--- + Disables a button using its `(ID/label/Emoji/URL)`. #### Usage: `$disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the last button); Channel ID (optional, default $channelID)]` @@ -17,5 +20,6 @@ Disables a button using its `(ID/label/Emoji/URL)`.
-##### Function difficulty: -###### Tags: \ No newline at end of file +**Function difficulty:** + +**Tags:** diff --git a/guide/Text/Components/disableButtons.md b/content/docs/(functions)/Text/Components/disableButtons.mdx similarity index 84% rename from guide/Text/Components/disableButtons.md rename to content/docs/(functions)/Text/Components/disableButtons.mdx index a282084b..cbbca713 100644 --- a/guide/Text/Components/disableButtons.md +++ b/content/docs/(functions)/Text/Components/disableButtons.mdx @@ -1,4 +1,6 @@ -# $disableButtons +--- +title: "$disableButtons" +--- Disable buttons in a message, not providing a Button ID will disable every button in the message. diff --git a/guide/Text/Components/disableMenu.md b/content/docs/(functions)/Text/Components/disableMenu.mdx similarity index 86% rename from guide/Text/Components/disableMenu.md rename to content/docs/(functions)/Text/Components/disableMenu.mdx index ade05a77..9350132a 100644 --- a/guide/Text/Components/disableMenu.md +++ b/content/docs/(functions)/Text/Components/disableMenu.mdx @@ -1,4 +1,6 @@ -# $disableMenu +--- +title: "$disableMenu" +--- Disable menus in the given message, not providing a Menu ID will disable every menu in the message. diff --git a/guide/Text/Components/editButton.md b/content/docs/(functions)/Text/Components/editButton.mdx similarity index 66% rename from guide/Text/Components/editButton.md rename to content/docs/(functions)/Text/Components/editButton.mdx index f8afea28..e035c5f9 100644 --- a/guide/Text/Components/editButton.md +++ b/content/docs/(functions)/Text/Components/editButton.mdx @@ -1,9 +1,14 @@ -# $editButton +--- +title: "$editButton" +--- + Edits an existing button using its `(ID/label/Emoji/URL)`. #### Usage: `$editButton[Message ID;Query (optional, default: edit the last button);label/style/emoji/disabled/url/custom_id;New Value]` -::: details Example + + + ![](https://cdn.discordapp.com/attachments/914682255346118687/938564348102717440/unknown.jpeg) (Disable the last button) ![](https://cdn.discordapp.com/attachments/914682255346118687/938568269349142538/Screenshot_20220202194114.jpg) @@ -14,8 +19,11 @@ Edits an existing button using its `(ID/label/Emoji/URL)`. (Change the color by label) ![](https://cdn.discordapp.com/attachments/914682255346118687/938568270053789737/Screenshot_20220202194603.jpg) -::: + + + + +**Function difficulty:** -##### Function difficulty: -###### Tags: \ No newline at end of file +**Tags:** diff --git a/guide/Text/Components/editMenu.md b/content/docs/(functions)/Text/Components/editMenu.mdx similarity index 90% rename from guide/Text/Components/editMenu.md rename to content/docs/(functions)/Text/Components/editMenu.mdx index fed41e59..ac10f85f 100644 --- a/guide/Text/Components/editMenu.md +++ b/content/docs/(functions)/Text/Components/editMenu.mdx @@ -1,4 +1,6 @@ -# $editMenu +--- +title: "$editMenu" +--- Edits a menu in given message.\ `type` can be: `id/disabled/max/min/placeholder/ph/options`. diff --git a/guide/Text/Components/enableButtons.md b/content/docs/(functions)/Text/Components/enableButtons.mdx similarity index 84% rename from guide/Text/Components/enableButtons.md rename to content/docs/(functions)/Text/Components/enableButtons.mdx index 0198206a..debf1a83 100644 --- a/guide/Text/Components/enableButtons.md +++ b/content/docs/(functions)/Text/Components/enableButtons.mdx @@ -1,4 +1,6 @@ -# $enableButtons +--- +title: "$enableButtons" +--- Enable buttons in a message, not providing a Button ID will enable every button in the message. diff --git a/guide/Text/Components/enableMenu.md b/content/docs/(functions)/Text/Components/enableMenu.mdx similarity index 86% rename from guide/Text/Components/enableMenu.md rename to content/docs/(functions)/Text/Components/enableMenu.mdx index a4a7acb3..2e71bbcf 100644 --- a/guide/Text/Components/enableMenu.md +++ b/content/docs/(functions)/Text/Components/enableMenu.mdx @@ -1,4 +1,6 @@ -# $enableMenu +--- +title: "$enableMenu" +--- Enables menus in a given message, not providing a Menu ID will enable every menu in the message. diff --git a/guide/Text/Components/eventSelected.md b/content/docs/(functions)/Text/Components/eventSelected.mdx similarity index 92% rename from guide/Text/Components/eventSelected.md rename to content/docs/(functions)/Text/Components/eventSelected.mdx index df6a89d1..e65d9e0a 100644 --- a/guide/Text/Components/eventSelected.md +++ b/content/docs/(functions)/Text/Components/eventSelected.mdx @@ -1,4 +1,6 @@ -# $eventSelected +--- +title: "$eventSelected" +--- Returns values that were selected by the user using `$selectMenu`. diff --git a/guide/Text/Components/eventTargetID.md b/content/docs/(functions)/Text/Components/eventTargetID.mdx similarity index 95% rename from guide/Text/Components/eventTargetID.md rename to content/docs/(functions)/Text/Components/eventTargetID.mdx index 06394cef..8ddb03db 100644 --- a/guide/Text/Components/eventTargetID.md +++ b/content/docs/(functions)/Text/Components/eventTargetID.mdx @@ -1,4 +1,6 @@ -# $eventTargetID +--- +title: "$eventTargetID" +--- Returns the ID of the target selected by the user when using a **context menu command**. diff --git a/guide/Text/Components/menuId.md b/content/docs/(functions)/Text/Components/menuId.mdx similarity index 66% rename from guide/Text/Components/menuId.md rename to content/docs/(functions)/Text/Components/menuId.mdx index 0dbd5b16..86aabb5f 100644 --- a/guide/Text/Components/menuId.md +++ b/content/docs/(functions)/Text/Components/menuId.mdx @@ -1,6 +1,8 @@ -# $menuID +--- +title: "$menuID" +--- -Return the Menu ID of the menu triggered with the [Select Menu Trigger](../../Trigger/menu.md). +Return the Menu ID of the menu triggered with the [Select Menu Trigger](/Trigger/menu). ## Usage diff --git a/content/docs/(functions)/Text/Components/meta.json b/content/docs/(functions)/Text/Components/meta.json new file mode 100644 index 00000000..d9fa3cea --- /dev/null +++ b/content/docs/(functions)/Text/Components/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Button Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx new file mode 100644 index 00000000..29e80d53 --- /dev/null +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -0,0 +1,28 @@ +--- +title: "$removeButton" +--- + +Removes a button from an existing message using its `(ID/label/Emoji/URL)`. + +#### Usage: `$removeButton[Message ID;Label/Emoji/URL/ID (optional, empty means removing the last button)]` +
+ + + + +(Remove Button using its label) +```php +$removeButton[863xxxxxxxxxx21130;Visit example.com] +``` + +(Remove the Last button) +```php +$removeButton[863xxxxxxxxxx21130] +``` + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Components/removeButtons.mdx b/content/docs/(functions)/Text/Components/removeButtons.mdx new file mode 100644 index 00000000..3ac20c7f --- /dev/null +++ b/content/docs/(functions)/Text/Components/removeButtons.mdx @@ -0,0 +1,14 @@ +--- +title: "$removeButtons" +--- + +Removes multiple buttons from a message using their IDs. + +#### Usage: `$removeButtons[Message ID;Button ID1;Button ID2...]` +
+ +![](https://cdn.discordapp.com/attachments/914682255346118687/938537575486980136/Screenshot_20220202175147_1.jpg) + +**Function difficulty:** + +**Tags:** diff --git a/guide/Text/Components/removeEmbed.md b/content/docs/(functions)/Text/Components/removeEmbed.mdx similarity index 91% rename from guide/Text/Components/removeEmbed.md rename to content/docs/(functions)/Text/Components/removeEmbed.mdx index 90a548c7..ab6862c8 100644 --- a/guide/Text/Components/removeEmbed.md +++ b/content/docs/(functions)/Text/Components/removeEmbed.mdx @@ -1,4 +1,6 @@ -# $removeEmbed +--- +title: "$removeEmbed" +--- remove an embed or all embeds from a message diff --git a/guide/Text/Components/removeMenu.md b/content/docs/(functions)/Text/Components/removeMenu.mdx similarity index 86% rename from guide/Text/Components/removeMenu.md rename to content/docs/(functions)/Text/Components/removeMenu.mdx index 27bdfef0..5e843823 100644 --- a/guide/Text/Components/removeMenu.md +++ b/content/docs/(functions)/Text/Components/removeMenu.mdx @@ -1,4 +1,6 @@ -# $removeMenu +--- +title: "$removeMenu" +--- Removes menus in a given message, not providing a Menu ID will remove every menu in the message. diff --git a/guide/Text/Components/selectMenu.md b/content/docs/(functions)/Text/Components/selectMenu.mdx similarity index 84% rename from guide/Text/Components/selectMenu.md rename to content/docs/(functions)/Text/Components/selectMenu.mdx index 8166ef0b..0211ce83 100644 --- a/guide/Text/Components/selectMenu.md +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -1,4 +1,7 @@ -# $selectMenu +--- +title: "$selectMenu" +--- + Creates a Menu with options. #### Usage: `$selectMenu[{menu structure]` works only for one option @@ -160,12 +163,15 @@ $selectMenu[ ``` ![](https://i.imgur.com/ZkamUGb.png) -::: tip {key=value} what is this for a syntax? + + This syntax is called curl args.It is really similar to curl message.Especially new Functions support it ,you can use !!func `function name` to check if it supports curl arguments. - [Learn more](../../Other/curl.md) -::: + [Learn more](/Other/curl) + + + + -::: tip Do you want to add a menu inside a Function as a parameter, like `$sendMessage[text]`? Use: ``` @@ -180,17 +186,23 @@ Use: {emoji=$customEmoji[accept]} } ``` -::: -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + +Link escapes are needed, use `\` to escape characters. Read [me](/Other/syntax) to see more + + + + + +Using the menu as trigger check here to [learn more](/Trigger/menu). -Link escapes are needed, use `\` to escape characters. Read [me](../../Other/syntax.md) to see more -::: + -::: tip -Using the menu as trigger check here to [learn more](../../Trigger/menu.md). -::: +**Function difficulty:** -##### Function difficulty: -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/(functions)/Text/Condition/checkCondition.mdx b/content/docs/(functions)/Text/Condition/checkCondition.mdx new file mode 100644 index 00000000..7e9d2f32 --- /dev/null +++ b/content/docs/(functions)/Text/Condition/checkCondition.mdx @@ -0,0 +1,34 @@ +--- +title: "$checkCondition" +--- + +Checks if given expression is true or false. + +## Usage + +```bash +$checkCondition[Expression] +``` + +### Example: + + +!!exec $checkCondition[$username==Mido]

+
+ +true

+
+
+ +### Example: + + +!!exec $checkCondition[10<5]

+
+ +false + +
+ +## To know more about expressions +Read about it [here](/CodeReferences/ref.expression) diff --git a/content/docs/(functions)/Text/Condition/conditional.mdx b/content/docs/(functions)/Text/Condition/conditional.mdx new file mode 100644 index 00000000..2b18128e --- /dev/null +++ b/content/docs/(functions)/Text/Condition/conditional.mdx @@ -0,0 +1,24 @@ +--- +title: "$conditional" +--- + +return A if condition is true, B if condition is false + +## Usage + +```bash +$conditional[condition;A;B] +``` + +### Example: + + +!!exec $conditional[$username==Mido;You are Mido;You are Rake]

+
+ +You are Mido

+
+
+ +### Output (if Rake run the command): +You are Rake \ No newline at end of file diff --git a/guide/Text/Condition/else.md b/content/docs/(functions)/Text/Condition/else.mdx similarity index 87% rename from guide/Text/Condition/else.md rename to content/docs/(functions)/Text/Condition/else.mdx index 50a30ebd..83b6a0af 100644 --- a/guide/Text/Condition/else.md +++ b/content/docs/(functions)/Text/Condition/else.mdx @@ -1,4 +1,6 @@ -# $else +--- +title: "$else" +--- is used in case $if and $elseIf is not true diff --git a/guide/Text/Condition/elseif.md b/content/docs/(functions)/Text/Condition/elseif.mdx similarity index 84% rename from guide/Text/Condition/elseif.md rename to content/docs/(functions)/Text/Condition/elseif.mdx index 7c7ab477..ecf6a43a 100644 --- a/guide/Text/Condition/elseif.md +++ b/content/docs/(functions)/Text/Condition/elseif.mdx @@ -1,4 +1,6 @@ -# $elseif +--- +title: "$elseif" +--- will be checked if $if was false, should be ended with $endelseif diff --git a/guide/Text/Condition/endIf.md b/content/docs/(functions)/Text/Condition/endIf.mdx similarity index 79% rename from guide/Text/Condition/endIf.md rename to content/docs/(functions)/Text/Condition/endIf.mdx index 377ed3d9..f355f64d 100644 --- a/guide/Text/Condition/endIf.md +++ b/content/docs/(functions)/Text/Condition/endIf.mdx @@ -1,4 +1,6 @@ -# $endIf +--- +title: "$endIf" +--- is used to end the whole $if block diff --git a/guide/Text/Condition/endelseif.md b/content/docs/(functions)/Text/Condition/endelseif.mdx similarity index 75% rename from guide/Text/Condition/endelseif.md rename to content/docs/(functions)/Text/Condition/endelseif.mdx index d34a64c5..366b1987 100644 --- a/guide/Text/Condition/endelseif.md +++ b/content/docs/(functions)/Text/Condition/endelseif.mdx @@ -1,4 +1,6 @@ -# $endelseif +--- +title: "$endelseif" +--- is used to close $elseIf diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx new file mode 100644 index 00000000..d4e47906 --- /dev/null +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -0,0 +1,134 @@ +--- +title: "$if" +--- + +Checks An expression and executes code Only if that expression is true + +## Shortest Syntax +```bash +$if[EXPRESSION] + CODE +$endIf +``` + +## What is expression? +Read about it [here](/CodeReferences/ref.expression) + +##### Example 1 only with $if + +Since the username of the executor is Tom it executed the if block +
+ + +!!exec $if[$username==Tom]
+Oh, you are Tom!
+$endIf +
+ +Oh, you are Tom! + +
+ +##### Example 2 only with $if and $else + +Since the username is not Tom it executes the else block +
+ + +!!exec $if[$username==Tom]
+Oh, you are Tom!
+$else
+You are not Tom!
+$endIf +
+ +You are not Tom! + +
+ +##### Example 3 $if , $else and $elseif + +Since the username is not Tom .It goes to the next if statement ,which is $elseif[$username==Lisa] and it will execute it +
+ + +!!exec $if[$username==Tom]
+Oh, you are Tom!
+$elseif[$username==Lisa]
+You are Lisa!
+$endelseIf
+$else
+I don't know you :C
+$endIf +
+ +You are Lisa! + +
+ +##### Example 4 $if , $else and $elseif + +Since the username is not Tom .It goes to the next if statement ,which is $elseif[$username==Lisa] and it will execute it + +Info: The second else if will get never executed ,because it will exit the statement after the first true expression +
+ + +!!exec $if[$username==Tom]
+Oh, you are Tom!
+$elseif[$username==Lisa]
+1.You are Lisa!
+$endelseIf
+$elseif[$username==Lisa]
+2.You are Lisa!
+$endelseIf
+$else
+I don't know you :C
+$endIf +
+ +1.You are Lisa! + +
+ +##### Example 5 multiplie condtions in if with && or || +Expression can accept multiple conditions, use `||` or `&&` as separators +
`||` is for OR +
`&&` is for AND + +Example: +```php +$username==Mido&&$country==Egypt +``` +Condition 1: `$username==Mido` +Condition 2: `$country==Egypt` +But this expression will only be true only if both condition 1 **AND** (because of &&) condition 2 is `true` + +The Example below will execute since $username==Tom is false but the second expression is true .It wouldn't work with && +
+ + +!!exec $if[$username==Tom||$username=Lisa]
+You are Tom or Lisa
+$endIf +
+ +You are Tom or Lisa + +
+ +The Example will only execute if the username is Lisa and their tag is 9999 + + +!!exec $if[$username==Lisa&&$discriminator=9999]
+You are Lisa with tag 9999
+$endIf
+
+ +You are Lisa with tag 9999 + +
+ +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Condition/meta.json b/content/docs/(functions)/Text/Condition/meta.json new file mode 100644 index 00000000..39c430c9 --- /dev/null +++ b/content/docs/(functions)/Text/Condition/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Condition Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Embed/addField.mdx b/content/docs/(functions)/Text/Embed/addField.mdx new file mode 100644 index 00000000..4bca0a13 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/addField.mdx @@ -0,0 +1,64 @@ +--- +title: "$addField" +--- + +Adds fields to a message embed. + +#### Usage: `$addField[title;value;inline(yes/no default=yes)(optional)]` +
+ + +!!exec $addField[title;value;no]
+$addField[title2;value2]
+$addField[title3;value3]
+$addField[title4;value4]
+
+ + + + +value + + +value2 + + +value3 + + +value4 + + + + +
+ +$addField with hyperlinks: +Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` + + +!!exec $addField[title;This is a field with \[link\](https://ccommandbot.com "tooltip")] + + + + + +This is a description hello + + + + + + + + + +Use: `{field:name:value:inline(yes/no default=yes)(optional)}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/content/docs/(functions)/Text/Embed/addTimestamp.mdx b/content/docs/(functions)/Text/Embed/addTimestamp.mdx new file mode 100644 index 00000000..5dfd35c6 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/addTimestamp.mdx @@ -0,0 +1,42 @@ +--- +title: "$addTimestamp" +--- + +Adds a timestamp to a message embed. + +#### Usage: `$addTimestamp` or `$addTimestamp[ms]` +
+ + +!!exec $addTimestamp + + + + + + + +or with specified Time + + + +!!exec $addTimestamp[$parseTime[13/09/2021]] + + + + + + + + + + +Use: `{timestamp:ms}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/guide/Text/Embed/attachment.md b/content/docs/(functions)/Text/Embed/attachment.mdx similarity index 91% rename from guide/Text/Embed/attachment.md rename to content/docs/(functions)/Text/Embed/attachment.mdx index 2b940b57..f7d40244 100644 --- a/guide/Text/Embed/attachment.md +++ b/content/docs/(functions)/Text/Embed/attachment.mdx @@ -1,4 +1,6 @@ -# $attachment +--- +title: "$attachment" +--- Adds an attachment to a message.\ \ diff --git a/content/docs/(functions)/Text/Embed/author.mdx b/content/docs/(functions)/Text/Embed/author.mdx new file mode 100644 index 00000000..5afce356 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/author.mdx @@ -0,0 +1,44 @@ +--- +title: "$author" +--- + +Adds an author to a message embed, with an optional icon url and/or hyperlink. + +#### Usage: `$author[text;icon url(optional);hyperlink(optional)]` +
+ + +!!exec $author[text] + + + + + + +!!exec $author[text;$authorAvatar] + + + + + + +!!exec $author[text;$authorAvatar;https://ccommandbot.com] + + + + + + + + + + +Use: `{author:text:icon url(optional):hyper link(optional)}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/content/docs/(functions)/Text/Embed/color.mdx b/content/docs/(functions)/Text/Embed/color.mdx new file mode 100644 index 00000000..48eff1b3 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/color.mdx @@ -0,0 +1,50 @@ +--- +title: "$color" +--- + +sets the color of the embed + +## Usage +`$color[Hex or Color Name]` + +## Accepted Color Names +Check this [page](/CodeReferences/ref.embed.colors) + +## Example 1: Using it in function format +
+ + +!!exec $color[#0099ff] + + + + + + + +## Example 2: Using In Curl Format +
+ + +!!exec $sendMessage[
\{desc:You are awesome}
\{color:#0099ff}
] +
+ + +You are awesome + + +
+ + + + +Use: `{color:hex or colorname or RANDOM or TRANSPARENT}` +Example: `{color:#0099ff}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/content/docs/(functions)/Text/Embed/description.mdx b/content/docs/(functions)/Text/Embed/description.mdx new file mode 100644 index 00000000..1b340e14 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/description.mdx @@ -0,0 +1,44 @@ +--- +title: "$description" +--- + +Adds a description to a message embed. + +#### Usage: `$description[your text]` +
+ + +!!exec $description[This is a description] + + + +This is a description + + + + +Description with hyperlinks: +Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` + + +!!exec $description[This is a description with \[link\](https://ccommandbot.com "tooltip")] + + + +This is a description hello + + + + + + + +Use: `{description:your text}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/guide/Text/Embed/example.md b/content/docs/(functions)/Text/Embed/example.mdx similarity index 93% rename from guide/Text/Embed/example.md rename to content/docs/(functions)/Text/Embed/example.mdx index 5941f6d3..03c8fc16 100644 --- a/guide/Text/Embed/example.md +++ b/content/docs/(functions)/Text/Embed/example.mdx @@ -1,4 +1,6 @@ -# Complete Embed +--- +title: "Complete Embed" +--- Here is a code example for a complete embed in both function and curl format. ## Function Format @@ -62,11 +64,13 @@ These arguments can be used in interaction trigger commands. {message=content, curl embed, menus, buttons...} // Only in $interactionReply ``` -::: tip What are ephemeral messages? + + Ephemeral messages are interaction replies visibile only to the one who executed the command. ![Ephemeral message preview](https://cdn.discordapp.com/attachments/957286111250624552/1100459877480013914/image.png) -::: + + ## What is the difference between function and embed format? @@ -111,10 +115,13 @@ $editMessage[$sentMessageID; ] ``` -::: danger Separators + + Please note, that separators vary between the formats: * Function arguments are separated by a `;` * Curl embed arguments are separated by a `:` -::: -###### Tags: + + +**Tags:** + diff --git a/content/docs/(functions)/Text/Embed/footer.mdx b/content/docs/(functions)/Text/Embed/footer.mdx new file mode 100644 index 00000000..ebff06eb --- /dev/null +++ b/content/docs/(functions)/Text/Embed/footer.mdx @@ -0,0 +1,33 @@ +--- +title: "$footer" +--- + +Adds a footer to a message embed with an optional icon url + +#### Usage: `$footer[text;icon url(optional)]` +
+ + +!!exec $footer[This is a fantastic embed footer] + + + +This is a fantastic embed footer + + + + + + + +Use: `{footer: Your text here:icon url(optional)}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + +Link escapes are needed, use `\` to escape characters. Read [me](/Other/syntax) to see more + + diff --git a/content/docs/(functions)/Text/Embed/image.mdx b/content/docs/(functions)/Text/Embed/image.mdx new file mode 100644 index 00000000..560caf9a --- /dev/null +++ b/content/docs/(functions)/Text/Embed/image.mdx @@ -0,0 +1,32 @@ +--- +title: "$image" +--- + +Adds an image to a message embed + +#### Usage: `$image[YOUR URL HERE]` +
+ + +!!exec $image[$userAvatar] + + + + + + + + + + +Use: `{image: Your link here}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + +Link escapes are needed, use `\` to escape characters. Read [me](/Other/syntax) to see more + + diff --git a/content/docs/(functions)/Text/Embed/meta.json b/content/docs/(functions)/Text/Embed/meta.json new file mode 100644 index 00000000..5ba91499 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Embed functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Embed/thumbnail.mdx b/content/docs/(functions)/Text/Embed/thumbnail.mdx new file mode 100644 index 00000000..8879c0c3 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/thumbnail.mdx @@ -0,0 +1,32 @@ +--- +title: "$thumbnail" +--- + +Adds a thumbnail to a message embed. + +#### Usage: `$thumbnail[YOUR URL HERE]` +
+ + +!!exec $thumbnail[$userAvatar] + + + + + + + + + + +Use: `{thumbnail: Your link here}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + +Link escapes are needed, use `\` to escape characters. Read [me](/Other/syntax) to see more + + diff --git a/content/docs/(functions)/Text/Embed/title.mdx b/content/docs/(functions)/Text/Embed/title.mdx new file mode 100644 index 00000000..875c4d23 --- /dev/null +++ b/content/docs/(functions)/Text/Embed/title.mdx @@ -0,0 +1,42 @@ +--- +title: "$title" +--- + +Adds a title to a message embed. + +#### Usage: `$title[YOUR TITLE TEXT HERE;url(optional)]` +
+ + +!!exec $title[This is a title] + + + + + + + +Or with url + + + +!!exec $title[This is a title;https://discord.com] + + + + + + + + + + +Use: `{title: Your title here}` + + + + + +If you add any `:` in this function it will error! Check out [this](/Other/syntax) + + diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx new file mode 100644 index 00000000..6997917e --- /dev/null +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -0,0 +1,25 @@ +--- +title: "$abbreviate" +--- + +this function abbreviates large numbers +Abbreviation to: +* k - thousands +* m - millions +* b - billions +* t - trillions + +#### Usage: `$abbreviate[number]` +
+ + +!!exec $abbreviate[6000] + + +6k + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Math/abs.mdx b/content/docs/(functions)/Text/Math/abs.mdx new file mode 100644 index 00000000..29ccf001 --- /dev/null +++ b/content/docs/(functions)/Text/Math/abs.mdx @@ -0,0 +1,21 @@ +--- +title: "$abs" +--- + +Return the absolute value of a number. Basically forces a number to be positive + +## Usage + +```bash +$abs[Number] +``` + +## Example + + +!!exec $abs[-25] + + +25 + + diff --git a/content/docs/(functions)/Text/Math/ceil.mdx b/content/docs/(functions)/Text/Math/ceil.mdx new file mode 100644 index 00000000..36780656 --- /dev/null +++ b/content/docs/(functions)/Text/Math/ceil.mdx @@ -0,0 +1,31 @@ +--- +title: "$ceil" +--- + +rounds a number up to the next largest integer + +## Usage + +```bash +$ceil[Number] +``` + +### Example: + + +!!exec $ceil[1.3]

+
+ +2

+
+
+ +### Example: + + +!!exec $ceil[3.5]

+
+ +4 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Math/divide.mdx b/content/docs/(functions)/Text/Math/divide.mdx new file mode 100644 index 00000000..00d7df48 --- /dev/null +++ b/content/docs/(functions)/Text/Math/divide.mdx @@ -0,0 +1,21 @@ +--- +title: "$divide" +--- + +divides (a) number(s) from each other, from left to right + +#### Usage: `$divide[10;2;...]` +
+ + +!!exec $divide[10;2] + + +5 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Math/floor.mdx b/content/docs/(functions)/Text/Math/floor.mdx new file mode 100644 index 00000000..6e000e78 --- /dev/null +++ b/content/docs/(functions)/Text/Math/floor.mdx @@ -0,0 +1,31 @@ +--- +title: "$floor" +--- + +return the largest integer less than or equal to a given number + +## Usage + +```bash +$floor[Number] +``` + +### Example: + + +!!exec $floor[2.4]

+
+ +2

+
+
+ +### Example: + + +!!exec $floor[2.9]

+
+ +2 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Math/math.mdx b/content/docs/(functions)/Text/Math/math.mdx new file mode 100644 index 00000000..b7c96d47 --- /dev/null +++ b/content/docs/(functions)/Text/Math/math.mdx @@ -0,0 +1,57 @@ +--- +title: "$math" +--- + +Calculates numbers with any mathematically correct +quantifier(s) in between. + +#### Usage: `$math[10*(2+5)/7*8-2]` +e#### Usage: `$math[Expression;Name1=Value1;Name1=Value2]` +
+ + +!!exec $math[10*(2+5)/7*8-2] + + +78 + + +!!exec Networth = $math[cash+bank;cash=100;bank=500] + + +Networth = 600 + + + + + + +`$sum`, can be used to sum up arguments. + +`$sub`, can be used to subtract arguments. + +`$multi`, can be used to multiply arguments. + +`$divide`, can be used to divide arguments. + + + +## Valid Quantifiers +Operator | Associativity | Description +:----------------------- | :------------ | :---------- +(...) | None | Grouping (brackets) +! | Left | Factorial +^ | Right | Exponentiation ++, -, sqrt | Right | Unary prefix operators +\*, /, % | Left | Multiplication, division, remainder ++, - | Left | Addition, subtraction + + + +There are more advanced functions located [here.](https://github.com/silentmatt/expr-eval/blob/master/README.md) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Math/mathMax.mdx b/content/docs/(functions)/Text/Math/mathMax.mdx new file mode 100644 index 00000000..ecae7b1e --- /dev/null +++ b/content/docs/(functions)/Text/Math/mathMax.mdx @@ -0,0 +1,21 @@ +--- +title: "$mathMax" +--- + +Return the largest number from a list of numbers + +## Usage + +```bash +$MathMax[Number 1;Number 2;Number 3;...] +``` + +### Example: + + +!!exec $MathMax[100;50;150]

+
+ +150 + +
diff --git a/content/docs/(functions)/Text/Math/mathMin.mdx b/content/docs/(functions)/Text/Math/mathMin.mdx new file mode 100644 index 00000000..25b37ae6 --- /dev/null +++ b/content/docs/(functions)/Text/Math/mathMin.mdx @@ -0,0 +1,21 @@ +--- +title: "$mathMin" +--- + +Return the smallest number from a list of numbers + +## Usage + +```bash +$mathMin[Number 1;Number 2;Number 3;...] +``` + +### Example: + + +!!exec $mathMin[100;50;150]

+
+ +50 + +
diff --git a/content/docs/(functions)/Text/Math/meta.json b/content/docs/(functions)/Text/Math/meta.json new file mode 100644 index 00000000..3e1b66af --- /dev/null +++ b/content/docs/(functions)/Text/Math/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Math Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx new file mode 100644 index 00000000..42fb0c62 --- /dev/null +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -0,0 +1,21 @@ +--- +title: "$modulo" +--- + +calculates the remainder of a division operation + +#### Usage: `$modulo[10;2;...]` +
+ + +!!exec $modulo[10;2] + + +0 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Math/multi.mdx b/content/docs/(functions)/Text/Math/multi.mdx new file mode 100644 index 00000000..25a1a007 --- /dev/null +++ b/content/docs/(functions)/Text/Math/multi.mdx @@ -0,0 +1,20 @@ +--- +title: "$multi" +--- + +Multiplies (a) number(s) with each other + +#### Usage: `$multi[10;4;...]` +
+ + +!!exec $multi[10;4] + + +40 + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx new file mode 100644 index 00000000..7cd32a85 --- /dev/null +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -0,0 +1,21 @@ +--- +title: "$ordinal" +--- + +adds the correct suffix after the number +`st`,`nd`,`rd`,`th` + +#### Usage: `$ordinal[number]` +
+ + +!!exec $ordinal[2] + + +2nd + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx new file mode 100644 index 00000000..39f562d6 --- /dev/null +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -0,0 +1,21 @@ +--- +title: "$round" +--- + +Rounds the number to the nearest integer. + +#### Usage: `$round[number]` +
+ + +!!exec $round[10.897890790] + + +11 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx new file mode 100644 index 00000000..e30fb9db --- /dev/null +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -0,0 +1,21 @@ +--- +title: "$roundTenth" +--- + +Rounds the number to the nearest decimal specified in `toFixed` + +#### Usage: `$roundTenth[number;tofixed]` +
+ + +!!exec $roundTenth[10.877890790;2] + + +10.88 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Math/sub.mdx b/content/docs/(functions)/Text/Math/sub.mdx new file mode 100644 index 00000000..c7529ee5 --- /dev/null +++ b/content/docs/(functions)/Text/Math/sub.mdx @@ -0,0 +1,21 @@ +--- +title: "$sub" +--- + +Subtracts (a) number(s) from each other + +#### Usage: `$sub[10;4;...]` +
+ + +!!exec $sub[10;4] + + +6 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Math/sum.mdx b/content/docs/(functions)/Text/Math/sum.mdx new file mode 100644 index 00000000..031aa2c1 --- /dev/null +++ b/content/docs/(functions)/Text/Math/sum.mdx @@ -0,0 +1,20 @@ +--- +title: "$sum" +--- + +Sum's up the given args + +#### Usage: `$sum[1;3;...]` +
+ + +!!exec $sum[1;3] + + +4 + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx new file mode 100644 index 00000000..26de3e7c --- /dev/null +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -0,0 +1,20 @@ +--- +title: "$truncate" +--- + +Truncates the number to 0 decimals. + +#### Usage: `$truncate[number]` +
+ + +!!exec $truncate[10.897890790] + + +10 + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Text/Object/ObjectCreate.md b/content/docs/(functions)/Text/Object/ObjectCreate.mdx similarity index 52% rename from guide/Text/Object/ObjectCreate.md rename to content/docs/(functions)/Text/Object/ObjectCreate.mdx index 8c29d0a1..0b4fbfb5 100644 --- a/guide/Text/Object/ObjectCreate.md +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -1,19 +1,23 @@ -# $objectCreate +--- +title: "$objectCreate" +--- + Creates a json object from the input Use `$getObjectProperty` or `$objectGet` to get a key value. #### Usage: `$objectCreate[JSON string]`
- - - !!exec $objectCreate[{"Name":"Wiki","Level":20,"isExpert":true,"userId":327996784012034050}] Hi, my name is $objectget[Name]. Level $objectget[Level]. Am i expert? $objectget[isExpert]. My user id is $objectget[userId] - - - Hi, my name is Wiki. Level 20. Am i expert? true. My user id is 327996784012034050 - - - -::: tip Saving Object inside Vars + + +!!exec $objectCreate[\{"Name":"Wiki","Level":20,"isExpert":true,"userId":327996784012034050}] Hi, my name is $objectget[Name]. Level $objectget[Level]. Am i expert? $objectget[isExpert]. My user id is $objectget[userId] + + +Hi, my name is Wiki. Level 20. Am i expert? true. My user id is 327996784012034050 + + + + + The example above shows how to save the object inside a variable and retrieve it later. - with an object you can save many properties inside a variable. ```sh @@ -29,9 +33,11 @@ $setUserVar[Data;$getObject] /* $getUserVar[Data] will now return: {"Name":"Wiki","Level":20,"isExpert":true,"userId":327996784012034050}*/ ``` -::: -::: tip Get values from an array + + + + ``` { "string":"Needs quotation marks", @@ -48,7 +54,10 @@ $setUserVar[Data;$getObject] } ``` * use `$objectGet[groupname;key]` to get the value or $objectGet[groupname;key;index] to get the value of an array -::: -##### Function difficulty: -###### Tags: + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/ObjectGet.mdx new file mode 100644 index 00000000..e5ce7cc7 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectGet.mdx @@ -0,0 +1,21 @@ +--- +title: "$objectGet" +--- + +Get a object value/property by key, if the key is not found then return `undefined` (same as `$getObjectProperty`) + +#### Usage: `$objectGet[key]` +
+ + +!!exec $createObject[\{"BotName":"Custom Commands","BotOwner":"Rake","Contributor":"Wiki"}] Bot name: $objectGet[BotName], Owner: $objectGet[BotOwner], Docs Contributor: $objectGet[Contributor] + + +Bot name: Custom Commands, Owner: Rake, Docs Contributor: Wiki + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx new file mode 100644 index 00000000..aa50d485 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx @@ -0,0 +1,35 @@ +--- +title: "$ObjectIncrease" +--- + +To increase a key value, if the key doesn't exist, it will create one and set to that value + +## Usage + +```bash +$ObjectIncrease[Key;Amount] +``` + +### Notes on Amount: +* It can be a number like `5`, or negative `-5` to reduce instead of increase\ +* It can be expression like x*2 where `x` is the current value + +### Example 1: + + +!!exec $objectIncrease[Mido;10]
$objectIncrease[Rake;5]
$objectGet

+
+ +\{"Mido":10,"Rake":5}

+
+
+ +### Example 2: + + +!!exec $objectIncrease[Mido;10]
$objectIncrease[Mido;x*2]
$objectGet

+
+ +\{"Mido":20} + +
diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx new file mode 100644 index 00000000..8d3f3284 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -0,0 +1,41 @@ +--- +title: "$ObjectKeyExists" +--- + +Checks if given key is present in the object. Returns `true` or `false`. + +## Usage + +```bash +$ObjectKeyExists[Key;...] +``` +1. **Key(s)** - Key to check it's existence. You can put as many nested keys as needed. + +## Example + +#### Using $ObjectKeyExists + +How to check if `name` key exists + + + +!!exec $objectSet[name;Mido] +$ObjectKeyExists[name] + + +true + + +!!exec $objectSet[username;mido] +$ObjectKeyExists[name] + + +false + + + +##### Related functions: `$ObjectKeys` `$ObjectCreate` `$ObjectSet` + +**Function Difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectKeys.mdx b/content/docs/(functions)/Text/Object/ObjectKeys.mdx new file mode 100644 index 00000000..14dbe9ec --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectKeys.mdx @@ -0,0 +1,31 @@ +--- +title: "$ObjectKeys" +--- + +Return the Object Keys with the seperator between each key + +## Usage + +```bash +$ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] +``` + +### Example: + + +!!exec $objectSet[user1;name;Mido]
$objectSet[user1;id;1234]
$objectSet[user1;weapon;Sword]
$objectSet[user2;name;Rake]
$objectSet[user2;id;5678]
$objectSet[user2;weapon;Feather]
$ObjectKeys[/]

+
+ +user1/user2

+
+
+ +### Example (Getting Nested Property Keys): + + +!!exec $objectSet[user1;name;Mido]
$objectSet[user1;id;1234]
$objectSet[user1;weapon;Sword]
$objectSet[user2;name;Rake]
$objectSet[user2;id;5678]
$objectSet[user2;weapon;Feather]
$ObjectKeys[/;user1]

+
+ +name/id/weapon + +
diff --git a/guide/Text/Object/ObjectLoop.md b/content/docs/(functions)/Text/Object/ObjectLoop.mdx similarity index 58% rename from guide/Text/Object/ObjectLoop.md rename to content/docs/(functions)/Text/Object/ObjectLoop.mdx index 1118afcf..760b33de 100644 --- a/guide/Text/Object/ObjectLoop.md +++ b/content/docs/(functions)/Text/Object/ObjectLoop.mdx @@ -1,12 +1,16 @@ -# $ObjectLoop +--- +title: "$ObjectLoop" +--- To loop over an object -::: warning Warning + + Only zero-cooldown functions are allowed in the CODE section! Functions that have a cooldown will be skipped, even in Tier 3+.
For example, if your loop contains `$sendMessage[Hello world!]`, it will literally display as "$sendMessage[Hello world!]" because `$sendMessage` is not a zero-cooldown function. If you are looking to loop over non-zero cooldown functions, you should use `$forEach` instead. -::: + +
## Usage ```bash @@ -24,11 +28,11 @@ Array loops are limited to a certain number of cycles. These limits vary between | 5 (Ultra) | 150 | ### Example: - - - !!exec $objectSet[Mido;Sword]
$objectSet[Rake;Staff]
$objectLoop[name;weapon;index]{
$index. $name has $weapon
}

-
- - 1. Mido has Sword
2. Rake has Staff -
-
+ + +!!exec $objectSet[Mido;Sword]
$objectSet[Rake;Staff]
$objectLoop[name;weapon;index]\{
$index. $name has $weapon
}

+
+ +1. Mido has Sword
2. Rake has Staff +
+
diff --git a/content/docs/(functions)/Text/Object/ObjectMerge.mdx b/content/docs/(functions)/Text/Object/ObjectMerge.mdx new file mode 100644 index 00000000..202ad911 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectMerge.mdx @@ -0,0 +1,31 @@ +--- +title: "$ObjectMerge" +--- + +Merge the current object with another object, it overwrites the conflicted keys + +## Usage + +```bash +$ObjectMerge[object] +``` + +### Example: + + +!!exec $objectSet[name;Mido]
$objectMerge[\{"country":"EG"}]
$objectGet

+
+ +\{"name":"Mido", "country":"EG"}

+
+
+ +### Example (Nested Keys): + + +!!exec $objectSet[user;name;Mido]
$objectSet[user;country;EG]
Before: $objectGet
$objectMerge[user;\{"name":"Rake","country":"DE"}]
After: $objectGet

+
+ +Before: \{"user":\{"name":"Mido","country":"EG"}}
After: \{"user":\{"name":"Rake","country":"DE"}} +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/ObjectRemove.mdx b/content/docs/(functions)/Text/Object/ObjectRemove.mdx new file mode 100644 index 00000000..1faea756 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectRemove.mdx @@ -0,0 +1,27 @@ +--- +title: "$ObjectRemove" +--- + +To remove a key from the object + +## Usage + +```bash +$ObjectRemove[Key;Key...(Optional)] +``` + +### Example: + + +!!exec $objectSet[Name;Mido]
+$objectSet[Country;EG]
+Before: $getObject
+$objectRemove[Name]
+After: $getObject +
+ +Before: \{"Name":"Mido","Country":"EG"} +
+After: \{"Country":"EG"} +
+
diff --git a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx new file mode 100644 index 00000000..1b580c89 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx @@ -0,0 +1,31 @@ +--- +title: "$ObjectRenameKey" +--- + +allows you to rename a key in your object + +## Usage + +```bash +$objectRenameKey[old key;new key name] +``` + +### Example: + + +!!exec $objectSet[name;Mido]
Before: $objectGet
$objectRenameKey[name;nick]
After: $objectGet

+
+ +Before: \{"name":"Mido"}
After: \{"nick":"Mido"}

+
+
+ +### Example (Nested Key): + + +!!exec $objectSet[user;name;Mido]
Before: $objectGet
$objectRenameKey[user;name;nick]
After: $objectGet

+
+ +Before: \{"user":\{"name":"Mido"}}
After: \{"user":\{"nick":"Mido"}} +
+
\ No newline at end of file diff --git a/guide/Text/Object/ObjectSet.md b/content/docs/(functions)/Text/Object/ObjectSet.mdx similarity index 52% rename from guide/Text/Object/ObjectSet.md rename to content/docs/(functions)/Text/Object/ObjectSet.mdx index 1990347b..f73b9a25 100644 --- a/guide/Text/Object/ObjectSet.md +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -1,18 +1,22 @@ -# $objectSet +--- +title: "$objectSet" +--- + set an object property value by key #### Usage: `$objectSet[key;key;key....;value]`
- - - !!exec $objectCreate[{"name":"Wiki"}] $objectSet[name;Rake] $objectSet[tag;0001] $getObject - - - {"name":"Rake","tag":"0001"} - - - -::: tip Setting Objects inside Objects + + +!!exec $objectCreate[\{"name":"Wiki"}] $objectSet[name;Rake] $objectSet[tag;0001] $getObject + + +\{"name":"Rake","tag":"0001"} + + + + + ```php $objectCreate[{"type":0}] @@ -25,9 +29,12 @@ $objectSet[userdata;age;20] $objectSet[userdata;name;Member] $objectSet[userdata;role;Moderator] /* will return {"type":0,"userdata":{"age":"20","name":"Member","role":"Moderator"}} */ -::: +``` + + + + -::: tip Setting values inside array ``` $objectCreate[{ "userdata":{ "age":0, @@ -52,7 +59,10 @@ $objectSet[userdata;0;role;Moderator] /* sets a property inside am array by index */ ``` -::: -##### Function difficulty: -###### Tags: + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/Object/ObjectValues.mdx b/content/docs/(functions)/Text/Object/ObjectValues.mdx new file mode 100644 index 00000000..4bae8fd4 --- /dev/null +++ b/content/docs/(functions)/Text/Object/ObjectValues.mdx @@ -0,0 +1,31 @@ +--- +title: "$ObjectValues" +--- + +Return the Object values with seperator between each value + +## Usage + +```bash +$ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] +``` + +### Example (Get values of nested property): + + +!!exec $ObjectSet[name;Mido]
$objectSet[age;300]
$ObjectValues

+
+ +Mido, 300

+
+
+ +### Example: + + +!!exec $objectSet[user;name;Mido]
$objectSet[user;id;1234]
$objectSet[user;weapon;Sword]
$ObjectValues[/;user]

+
+ +Mido/1234/Sword + +
\ No newline at end of file diff --git a/guide/Text/Object/addObjectProperty.md b/content/docs/(functions)/Text/Object/addObjectProperty.mdx similarity index 69% rename from guide/Text/Object/addObjectProperty.md rename to content/docs/(functions)/Text/Object/addObjectProperty.mdx index 20ab07e7..86fd5e00 100644 --- a/guide/Text/Object/addObjectProperty.md +++ b/content/docs/(functions)/Text/Object/addObjectProperty.mdx @@ -1,4 +1,6 @@ -# $addObjectProperty +--- +title: "$addObjectProperty" +--- Adds a key with a value to the existing object. @@ -8,6 +10,8 @@ Adds a key with a value to the existing object. $addObjectProperty[key;value] ``` -::: danger + + This function got deprecated, use `$objectSet` instead -::: \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/createObject.mdx b/content/docs/(functions)/Text/Object/createObject.mdx new file mode 100644 index 00000000..b1735405 --- /dev/null +++ b/content/docs/(functions)/Text/Object/createObject.mdx @@ -0,0 +1,27 @@ +--- +title: "$createObject" +--- + +Creates an object that can be used later. + +## Usage + +```bash +$createObject[object string] +``` + +### Example: + + +!!exec $createObject[\{"name":"Mido","age":110}]
Your name is $objectGet[name]
Your age is $objectGet[age]

+
+ +Your name is Mido
Your age is 110 +
+
+ + + +This function got deprecated, use `$ObjectCreate` instead + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx new file mode 100644 index 00000000..a878f052 --- /dev/null +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -0,0 +1,30 @@ +--- +title: "$getObject" +--- + +returns the JSON of the created/modified object + +#### Usage: `$getObject[spaces(optional, default 0)]` + +
+ + +!!exec $createobject[\{"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"}] Without spaces: $getobject +With spaces: $getobject[1] + + +Without spaces: \{"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"} +With spaces: \{
+"Owner": "Rake",
+"Manager": "Mika",
+"Dev": "Mido",
+"Contributor": "Wiki"
+} +
+
+ + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Text/Object/getObjectKeys.md b/content/docs/(functions)/Text/Object/getObjectKeys.mdx similarity index 75% rename from guide/Text/Object/getObjectKeys.md rename to content/docs/(functions)/Text/Object/getObjectKeys.mdx index 7295e8dd..2a11140b 100644 --- a/guide/Text/Object/getObjectKeys.md +++ b/content/docs/(functions)/Text/Object/getObjectKeys.mdx @@ -1,4 +1,6 @@ -# $getObjectKeys +--- +title: "$getObjectKeys" +--- Return the object keys with seperator (default is space if not provided) @@ -8,6 +10,8 @@ Return the object keys with seperator (default is space if not provided) $getObjectKeys or $getObjectKeys[Seperator (optional)] ``` -::: danger + + This function got deprecated, use `$objectKeys` instead -::: \ No newline at end of file + + \ No newline at end of file diff --git a/guide/Text/Object/getObjectProperty.md b/content/docs/(functions)/Text/Object/getObjectProperty.mdx similarity index 66% rename from guide/Text/Object/getObjectProperty.md rename to content/docs/(functions)/Text/Object/getObjectProperty.mdx index 5245267c..29922750 100644 --- a/guide/Text/Object/getObjectProperty.md +++ b/content/docs/(functions)/Text/Object/getObjectProperty.mdx @@ -1,4 +1,6 @@ -# $getObjectProperty +--- +title: "$getObjectProperty" +--- Gets a property value from given key. @@ -8,6 +10,8 @@ Gets a property value from given key. $getObjectProperty[key] ``` -::: danger + + This function got deprecated, use `$objectGet` instead -::: \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/meta.json b/content/docs/(functions)/Text/Object/meta.json new file mode 100644 index 00000000..dca922cd --- /dev/null +++ b/content/docs/(functions)/Text/Object/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Object Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Regex/meta.json b/content/docs/(functions)/Text/Regex/meta.json new file mode 100644 index 00000000..403a7bf0 --- /dev/null +++ b/content/docs/(functions)/Text/Regex/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Regex Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/Regex/regexCheck.mdx b/content/docs/(functions)/Text/Regex/regexCheck.mdx new file mode 100644 index 00000000..201dc703 --- /dev/null +++ b/content/docs/(functions)/Text/Regex/regexCheck.mdx @@ -0,0 +1,31 @@ +--- +title: "$regexCheck" +--- + +To check if a text matches a regex or not, returns true or false + +## Usage + +```bash +$regexCheck[Text;Regex;Flags] +``` + +### Example (Check If Text is letters): + + +!!exec $regexCheck[ABC;^[a-zA-Z]+$]

+
+ +true

+
+
+ +### Example: + + +!!exec $regexCheck[A2B;^[a-zA-Z]+$]

+
+ +false + +
diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx new file mode 100644 index 00000000..c777e2ab --- /dev/null +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -0,0 +1,53 @@ +--- +title: "$regexMatch" +--- + +Matches a string with the given Regex Pattern and returns the matched text or multiple matches seperated by the seperator + +#### Usage: `$regexMatch[text;regexp;flags(optional);group index(optional, 0 by default) or all;separator (optional)]` + +## Note about Separator +It can only be used when group index is `all`.\ +in case flag is `g` it will return all matches glued with that separator\ +in case flag is not `g` it will return the whole matched text and matched groups + +### Example (Find the first number): + + +!!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+]

+
+ +50

+
+
+ +### Example (Find all numbers): + + +!!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;all;/]

+
+ +50/18

+
+
+ +### Example (Find 2nd number only): + + +!!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;1]

+
+ +18 + +
+ + + +These are all regex flags: `g, i, m, u, s, y.` + + +**Function difficulty:** + +**Tags:** + + diff --git a/content/docs/(functions)/Text/Regex/regexReplace.mdx b/content/docs/(functions)/Text/Regex/regexReplace.mdx new file mode 100644 index 00000000..7b2e4e08 --- /dev/null +++ b/content/docs/(functions)/Text/Regex/regexReplace.mdx @@ -0,0 +1,21 @@ +--- +title: "$regexReplace" +--- + +Uses a regular expression to replace matching queries + +## Usage + +```bash +$regexReplace[text;regex;flags;new text] +``` + +### Example 1: + + +!!exec $regexReplace[My age is 900 years old.;\d+;g;[SECRET AGE]]

+
+ +My age is [SECRET AGE] years old. + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx new file mode 100644 index 00000000..5f1dd54c --- /dev/null +++ b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx @@ -0,0 +1,23 @@ +--- +title: "$replaceTextWithRegex" +--- + +Uses a regular expression to replace matching queries + +#### Usage: +`$replaceTextWithRegex[text;regex;flags;new text]` + +
+ + +!!exec $replaceTextWithRegex[Today is my birthday;/(birthday|party)/;gi;birthday 🎉] + + +Today is my birthday 🎉 + + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Text/buffer.md b/content/docs/(functions)/Text/buffer.mdx similarity index 89% rename from guide/Text/buffer.md rename to content/docs/(functions)/Text/buffer.mdx index d6cfd3ee..e25c2a3f 100644 --- a/guide/Text/buffer.md +++ b/content/docs/(functions)/Text/buffer.mdx @@ -1,4 +1,6 @@ -# $buffer +--- +title: "$buffer" +--- It return the input (useful for some rare cases) diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx new file mode 100644 index 00000000..b50b7b69 --- /dev/null +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -0,0 +1,20 @@ +--- +title: "$channelNSFW" +--- + +Returns whether the channel is nsfw or not + +#### Usage: `$channelNSFW[channelID]` +
+ + +!!exec $channelNSFW[$channelID] + + +no + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/charCount.mdx b/content/docs/(functions)/Text/charCount.mdx new file mode 100644 index 00000000..d7824094 --- /dev/null +++ b/content/docs/(functions)/Text/charCount.mdx @@ -0,0 +1,23 @@ +--- +title: "$charCount[text]" +--- + +this functions returns the number of characters in the provided text + +#### Usage: +`$charCount[text]` + +
+ + +!!exec $charCount[hello] + + +5 + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/checkContains.mdx b/content/docs/(functions)/Text/checkContains.mdx new file mode 100644 index 00000000..d46f0423 --- /dev/null +++ b/content/docs/(functions)/Text/checkContains.mdx @@ -0,0 +1,31 @@ +--- +title: "$checkContains" +--- + +checks if given message contains any of the texts + +## Usage + +```bash +$checkContains[message;text1;text2;...] +``` + +### Example 1: + + +!!exec $checkContains[Mido is good;good]

+
+ +true

+
+
+ +### Example 2: + + +!!exec $checkContains[Mido is good;bad]

+
+ +false + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/customEmoji.mdx b/content/docs/(functions)/Text/customEmoji.mdx new file mode 100644 index 00000000..d6e28b1c --- /dev/null +++ b/content/docs/(functions)/Text/customEmoji.mdx @@ -0,0 +1,33 @@ +--- +title: "$customEmoji" +--- + +Returns a custom emoji + +## Usage + +```bash +$customEmoji[name or id] +``` + +### Example (Using Custom Emoji Name): + + +!!exec $customEmoji[yes]

+
+ +
+
+
+
+ +### Example (Using Custom Emoji ID): + + +!!exec $customEmoji[833252579873259521]

+
+ +
+
+
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx new file mode 100644 index 00000000..0d30b1ee --- /dev/null +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -0,0 +1,21 @@ +--- +title: "$disableMentions" +--- + +will not ping a user even though mentioned + +#### Usage: `$disableMentions` +
+ + +!!exec $disableMentions Member + + +@Member + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/filterMessage.mdx b/content/docs/(functions)/Text/filterMessage.mdx new file mode 100644 index 00000000..3d39414e --- /dev/null +++ b/content/docs/(functions)/Text/filterMessage.mdx @@ -0,0 +1,21 @@ +--- +title: "$filterMessage" +--- + +Removes letters or numbers from given text + +## Usage + +```bash +$filterMessage[message;letterOrSymbols] +``` + +### Example: + + +!!exec $filterMessage[Hello World;lo]

+
+ +He Wrd + +
\ No newline at end of file diff --git a/guide/Text/filterMessageWords.md b/content/docs/(functions)/Text/filterMessageWords.mdx similarity index 75% rename from guide/Text/filterMessageWords.md rename to content/docs/(functions)/Text/filterMessageWords.mdx index 9120abea..308878d0 100644 --- a/guide/Text/filterMessageWords.md +++ b/content/docs/(functions)/Text/filterMessageWords.mdx @@ -1,4 +1,6 @@ -# $filterMessageWords +--- +title: "$filterMessageWords" +--- Removed words from the message. diff --git a/content/docs/(functions)/Text/findChars.mdx b/content/docs/(functions)/Text/findChars.mdx new file mode 100644 index 00000000..4d4ff303 --- /dev/null +++ b/content/docs/(functions)/Text/findChars.mdx @@ -0,0 +1,29 @@ +--- +title: "$findChars" +--- + +Takes all the letters from given string and returns them alone. + +## Usage + +```bash +$findChars[string] +``` + +## Example + + + +!!exec $findChars[$username] + + +Member + + + + + +- `$findSpecialChars` +- `$findNumbers` + + diff --git a/content/docs/(functions)/Text/findNumbers.mdx b/content/docs/(functions)/Text/findNumbers.mdx new file mode 100644 index 00000000..a7b68b66 --- /dev/null +++ b/content/docs/(functions)/Text/findNumbers.mdx @@ -0,0 +1,21 @@ +--- +title: "$findNumbers" +--- + +Find numbers from inside a text. + +## Usage + +```bash +$findNumbers[text;separator] +``` + +### Example: + + +!!exec $findNumbers[My age is 99 years old, and located 15 miles away from nearest station.;, ]

+
+ +99, 15 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/findSpecialChars.mdx b/content/docs/(functions)/Text/findSpecialChars.mdx new file mode 100644 index 00000000..1ffe744c --- /dev/null +++ b/content/docs/(functions)/Text/findSpecialChars.mdx @@ -0,0 +1,29 @@ +--- +title: "$findSpecialChars" +--- + +Takes all the non number/letter from given string and returns the alone + +## Usage + +```bash +$findSpecialChars[string] +``` + +## Example + + + +!!exec $findSpecialChars[$username] + + +$/? + + + + + +- `$findChars` +- `$findNumbers` + + diff --git a/guide/Text/indexOf.md b/content/docs/(functions)/Text/indexOf.mdx similarity index 83% rename from guide/Text/indexOf.md rename to content/docs/(functions)/Text/indexOf.mdx index 635fa2ed..cb4c9649 100644 --- a/guide/Text/indexOf.md +++ b/content/docs/(functions)/Text/indexOf.mdx @@ -1,4 +1,6 @@ -# $indexOf +--- +title: "$indexOf" +--- Returns the position of \ in \.\ Returns 0 if there's no char in text. diff --git a/content/docs/(functions)/Text/isChannelMention.mdx b/content/docs/(functions)/Text/isChannelMention.mdx new file mode 100644 index 00000000..31fbcb77 --- /dev/null +++ b/content/docs/(functions)/Text/isChannelMention.mdx @@ -0,0 +1,31 @@ +--- +title: "$isChannelMention" +--- + +To check if text provided satisfy discord channel mention format or not + +## Usage + +```bash +$isChannelMention[Text] +``` + +### Example: + + +!!exec $isChannelMention[abc]

+
+ +false

+
+
+ +### Example: + + +!!exec $isChannelMention[<#1234567890>]

+
+ +true + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/isUserMention.mdx b/content/docs/(functions)/Text/isUserMention.mdx new file mode 100644 index 00000000..80524166 --- /dev/null +++ b/content/docs/(functions)/Text/isUserMention.mdx @@ -0,0 +1,31 @@ +--- +title: "$isUserMention" +--- + +To check if text provided satisfy discord user mention format or not + +## Usage + +```bash +$isUserMention[Text] +``` + +### Example: + + +!!exec $isUserMention[abc]

+
+ +false

+
+
+ +### Example: + + +!!exec $isUserMention[<@!1234567890>]

+
+ +true + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx new file mode 100644 index 00000000..9e02d083 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -0,0 +1,23 @@ +--- +title: "$isBoosting" +--- + +checks if a user is Boosting ,returns true or false + +#### Usage: `$isBoosting[userid]` +Example: +
+ + +!!exec $isBoosting[$authorID] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx new file mode 100644 index 00000000..14c4dab0 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -0,0 +1,23 @@ +--- +title: "$isbot" +--- + +checks if the user is a bot or not ,returns true or false + +#### Usage: `$isbot` or `$isbot[userid]` +Example: +
+ + +!!exec $isbot | $isbot[891210194925809695] + + +false | true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isConnected.mdx b/content/docs/(functions)/Text/isandhas/isConnected.mdx new file mode 100644 index 00000000..92ec0181 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isConnected.mdx @@ -0,0 +1,21 @@ +--- +title: "$isConnected" +--- + +To check whether user is connected to voice channel or not (only cached users) + +## Usage + +```bash +$isConnected[User ID] +``` + +### Example: + + +!!exec Is $username Connected To Channel?: $isConnected

+
+ +Is Mido Connected To Channel?: true + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx new file mode 100644 index 00000000..0d5f99dc --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -0,0 +1,23 @@ +--- +title: "$isDeafened" +--- + +checks if a user is Deafened ,returns true,false or undefined + +#### Usage: `$isDeafened[userid]` +Example: +
+ + +!!exec $isDeafened[$authorID] + + +undefined + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx new file mode 100644 index 00000000..542bbd44 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -0,0 +1,23 @@ +--- +title: "$isEmoji" +--- + +Checks if the given Emoji is a default emoji ,returns true or false + +#### Usage: `$isEmoji[emoji]` +Example: +
+ + +!!exec $isEmoji[:smile:] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx new file mode 100644 index 00000000..962db884 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -0,0 +1,23 @@ +--- +title: "$isHoisted" +--- + +Checks if the given id of role is hoisted above all the other roles ,returns true or false + +#### Usage: `$isHoisted[roleid]` +Example: +
+ + +!!exec $isHoisted[$roleID[test]] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx new file mode 100644 index 00000000..f7af4969 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -0,0 +1,23 @@ +--- +title: "$isManaged" +--- + +Checks if the given id of role is Managed ,returns true or false + +#### Usage: `$isManaged[roleid]` +Example: +
+ + +!!exec $isManaged[$roleID[Custom Command]] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx new file mode 100644 index 00000000..53fb7592 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -0,0 +1,23 @@ +--- +title: "$isMentionable" +--- + +Checks if the given id of role is Mentionable ,returns true or false + +#### Usage: `$isMentionable[roleid]` +Example: +
+ + +!!exec $isMentionable[$roleID[test]] + + +false + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx new file mode 100644 index 00000000..0a936e53 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -0,0 +1,23 @@ +--- +title: "$isMentioned" +--- + +Checks if the given id of userID/roleID/channelID/everyone is Mentioned ,returns true or false + +#### Usage: `$isMentioned[userID/roleID/channelID/everyone]` +Example: +
+ + +!!exec $mention $isMentioned[$authorID] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx new file mode 100644 index 00000000..a6d09e01 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -0,0 +1,23 @@ +--- +title: "$isMuted" +--- + +checks if a user is selfMuted ,returns true,false or undefined + +#### Usage: `$isMuted[userid]` +Example: +
+ + +!!exec $isMuted[$authorID] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx new file mode 100644 index 00000000..5b2c6d5a --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -0,0 +1,20 @@ +--- +title: "$isNumber" +--- + +Checks if a string is a valid number. + +#### Usage: `$isNumber[number]` +
+ + +!!exec $isNumber[10] | $isNumber[number] + + +true | false + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isStreaming.mdx b/content/docs/(functions)/Text/isandhas/isStreaming.mdx new file mode 100644 index 00000000..eec32700 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isStreaming.mdx @@ -0,0 +1,21 @@ +--- +title: "$isStreaming" +--- + +To check whether user is streaming in a voice channel or not (only cached users) + +## Usage + +```bash +$isStreaming[User ID] +``` + +### Example: + + +!!exec Is $username Streaming?: $isStreaming

+
+ +Is Mido Streaming?: false + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx new file mode 100644 index 00000000..1856acf8 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -0,0 +1,23 @@ +--- +title: "$isTicket" +--- + +checks if a channel is a ticket or not created with $newTicket function,returns true or false + +#### Usage: `$isTicket` or `$isTicket[channelid]` +Example: +
+ + +!!exec $isTicket | $isTicket[891210194925809695] + + +false | true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx new file mode 100644 index 00000000..53e46f89 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -0,0 +1,23 @@ +--- +title: "$isValidHex" +--- + +checks if the given int or hex code or [color name](/CodeReferences/ref.embed.colors) is valid ,returns true,false + +#### Usage: `$isValidHex[int or hexcode or color name]` +Example: +
+ + +!!exec $isValidHex[#ffffff] , $isValidHex[test], $isValidHex[Red] + + +true , false, true + + + +**Function difficulty:** + +###### Tags: + + diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx new file mode 100644 index 00000000..f40902ed --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -0,0 +1,23 @@ +--- +title: "$isValidInvite" +--- + +checks if the given Invite code is valid ,returns true,false + +#### Usage: `$isValidInvite[invite code]` +Example: +
+ + +!!exec $isValidInvite[hjhjkh] + + +false + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx new file mode 100644 index 00000000..d966e657 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -0,0 +1,23 @@ +--- +title: "$isValidLink" +--- + +checks if the given Link / url is valid ,returns true,false + +#### Usage: `$isValidLink[Link]` +Example: +
+ + +!!exec $isValidLink[https://example.com] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx new file mode 100644 index 00000000..701090f5 --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -0,0 +1,23 @@ +--- +title: "$isValidObject" +--- + +checks if the given Object is valid ,returns true,false + +#### Usage: `$isValidObject[Object]` +Example: +
+ + +!!exec $isValidObject[\{"key":"value"}] + + +true + + + +**Function difficulty:** + +###### Tags: + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/meta.json b/content/docs/(functions)/Text/isandhas/meta.json new file mode 100644 index 00000000..a2ad692e --- /dev/null +++ b/content/docs/(functions)/Text/isandhas/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Is and Has Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Text/mentionType.md b/content/docs/(functions)/Text/mentionType.mdx similarity index 82% rename from guide/Text/mentionType.md rename to content/docs/(functions)/Text/mentionType.mdx index 54ed2dc4..4b9460e3 100644 --- a/guide/Text/mentionType.md +++ b/content/docs/(functions)/Text/mentionType.mdx @@ -1,4 +1,6 @@ -# $mentionType +--- +title: "$mentionType" +--- Uses an argument to determine the type of the mention (role, user, channel or none). diff --git a/content/docs/(functions)/Text/mentioned.mdx b/content/docs/(functions)/Text/mentioned.mdx new file mode 100644 index 00000000..7000f5b8 --- /dev/null +++ b/content/docs/(functions)/Text/mentioned.mdx @@ -0,0 +1,21 @@ +--- +title: "$mentioned" +--- + +Returns the ID of the mentioned user + +## Usage + +```bash +$mentioned[mention number or all;return author ID (yes/no)(optional)] +``` + +### Example: + + +!!exec First mention is $mentioned[1]
All mentions are: $mentioned[all]

+
+ +First mention is 788361834360864808
All mentions are: 788361834360864808, 840526017260945468 +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/mentionedChannels.mdx b/content/docs/(functions)/Text/mentionedChannels.mdx new file mode 100644 index 00000000..356dfe51 --- /dev/null +++ b/content/docs/(functions)/Text/mentionedChannels.mdx @@ -0,0 +1,20 @@ +--- +title: "$mentionedChannels" +--- + +Returns the ID of one of the channels that was mentioned by the user + +#### Usage: `$mentionedChannels[number]` +
+ + +!!exec $mentionedChannels[1] user-support + + +869243919697846379 + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/mentionedRoles.mdx b/content/docs/(functions)/Text/mentionedRoles.mdx new file mode 100644 index 00000000..0aeab349 --- /dev/null +++ b/content/docs/(functions)/Text/mentionedRoles.mdx @@ -0,0 +1,20 @@ +--- +title: "$mentionedRoles" +--- + +Returns the ID of one of the roles that was mentioned by the user + +#### Usage: `$mentionedRoles[number]` +
+ + +!!exec $mentionedRoles[1] Support + + +869243918787686432 + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/meta.json b/content/docs/(functions)/Text/meta.json new file mode 100644 index 00000000..a4619fa3 --- /dev/null +++ b/content/docs/(functions)/Text/meta.json @@ -0,0 +1,16 @@ +{ + "title": "Text Functions", + "pages": [ + "...", + "!Condition", + "!Embed", + "!Components", + "!Math", + "!textSplit", + "!Array", + "!Object", + "!isandhas", + "!only", + "!Regex" + ] +} diff --git a/content/docs/(functions)/Text/noMentionMessage.mdx b/content/docs/(functions)/Text/noMentionMessage.mdx new file mode 100644 index 00000000..b9b8ac98 --- /dev/null +++ b/content/docs/(functions)/Text/noMentionMessage.mdx @@ -0,0 +1,21 @@ +--- +title: "$noMentionMessage" +--- + +User's message without any mentions. (members, roles & channels) + +#### Usage: `$noMentionMessage` + +
+ + +!!exec aaa Member $noMentionMessage + + +aaa + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/numToWord.mdx b/content/docs/(functions)/Text/numToWord.mdx new file mode 100644 index 00000000..3a3741ab --- /dev/null +++ b/content/docs/(functions)/Text/numToWord.mdx @@ -0,0 +1,22 @@ +--- +title: "$numToWord" +--- + +convert a number to their verbal equivalents i.\ +e 5 \> five, maximum number would be "nine hundred ninety-nine nonillion" + +## Usage + +```bash +$numToWord[Number] +``` + +### Example: + + +!!exec $numToWord[1001]

+
+ +one thousand one + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/numberSeparator.mdx b/content/docs/(functions)/Text/numberSeparator.mdx new file mode 100644 index 00000000..37e7f3e0 --- /dev/null +++ b/content/docs/(functions)/Text/numberSeparator.mdx @@ -0,0 +1,21 @@ +--- +title: "$numberSeparator" +--- + +Separates a number in thousands + +## Usage + +```bash +$numberSeparator[number;separator (optional)] +``` + +### Example: + + +!!exec Your number is $numberSeparator[3352311]

+
+ +Your number is 3,352,311 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/only/meta.json b/content/docs/(functions)/Text/only/meta.json new file mode 100644 index 00000000..adca936c --- /dev/null +++ b/content/docs/(functions)/Text/only/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Only Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx new file mode 100644 index 00000000..d5561685 --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -0,0 +1,31 @@ +--- +title: "$onlyBotPerms" +--- + +Only if custom command bot has the permssions,user will be able to execute this command + +#### Usage: `$onlyBotPerms[perm;perm;...;error message]` + +#### Example: `$onlyBotPerms[managemessage;:x: - Bot does not have manage message permission]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +Check this [list](/CodeReferences/ref.permissions_list) to view all permissions names + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForCategories.mdx b/content/docs/(functions)/Text/only/onlyForCategories.mdx new file mode 100644 index 00000000..d94032a0 --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyForCategories.mdx @@ -0,0 +1,26 @@ +--- +title: "$onlyForCategories" +--- + +The command will only be executable in the provided categories. + +#### Usage: `$onlyForCategories[categoryID;categoryID;...;error message]` + +#### Example: `$onlyForCategories[797978978978988;:x: - this command is restricted to the Main category]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Text/only/onlyForChannels.md b/content/docs/(functions)/Text/only/onlyForChannels.mdx similarity index 81% rename from guide/Text/only/onlyForChannels.md rename to content/docs/(functions)/Text/only/onlyForChannels.mdx index a9d048c8..c24e785e 100644 --- a/guide/Text/only/onlyForChannels.md +++ b/content/docs/(functions)/Text/only/onlyForChannels.mdx @@ -1,4 +1,6 @@ -# $onlyForChannels +--- +title: "$onlyForChannels" +--- The command will only be executable in the provided channel IDs. diff --git a/content/docs/(functions)/Text/only/onlyForIDs.mdx b/content/docs/(functions)/Text/only/onlyForIDs.mdx new file mode 100644 index 00000000..670c181c --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyForIDs.mdx @@ -0,0 +1,25 @@ +--- +title: "$onlyForIDs" +--- + +Only given user IDs will be able to execute this command + +#### Usage: `$onlyForIDs[userID;userID;...;error message]` + +#### Example: `$onlyForIDs[$guild[owner];:x: - this command is restricted to the guild owner]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx new file mode 100644 index 00000000..574861fc --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -0,0 +1,25 @@ +--- +title: "$onlyForRoles" +--- + +Only person with the given Roles will be able to execute this command + +#### Usage: `$onlyForRoles[roleID;roleID;...;error message]` + +#### Example: `$onlyForRoles[797978978978988;:x: - this command is restricted to person with test role]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyIf.mdx b/content/docs/(functions)/Text/only/onlyIf.mdx new file mode 100644 index 00000000..07b1bc5e --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyIf.mdx @@ -0,0 +1,26 @@ +--- +title: "$onlyIf" +--- + +Continue the execution only if certain [expression](/CodeReferences/ref.expression) is satisfied, otherwise stop the execution and send the error message. +In theory $onlyif can replace all other $onlyFor with the proper [expression](/CodeReferences/ref.expression) +#### Usage: `$onlyif[Expression;error message]` + +#### Example: `$onlyIf[$username==Mido;You are not mido]` + + + +Read about [Expression](/CodeReferences/ref.expression) + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx new file mode 100644 index 00000000..4b1fbe62 --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx @@ -0,0 +1,21 @@ +--- +title: "$onlyIfMessageContains" +--- + +Continues the execution only if 'text' contains all provided words, returns the `error message` parameter if it does not. + +## Usage + +```bash +$onlyIfMessageContains[text;word1;word2;...;error message] +``` + +## Example + + +!!exec $onlyIfMessageContains[$username[$authorID];mem;My username doesn't contain `mem`] My username contains `mem`!

+
+ +My username contains `mem`

+
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx new file mode 100644 index 00000000..b91d014e --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -0,0 +1,25 @@ +--- +title: "$onlyNSFW" +--- + +Only in given nsfw channel user will be able to execute this command + +#### Usage: `$onlyNSFW[channelID;channelID;...;error message]` + +#### Example: `$onlyNSFW[797978978978988;:x: - this command is restricted to nsfw channel]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx new file mode 100644 index 00000000..f6c2f93b --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -0,0 +1,31 @@ +--- +title: "$onlyPerms" +--- + +Only if user has the given permssions,they will be able to execute this command + +#### Usage: `$onlyPerms[perm;perm;...;error message]` + +#### Example: `$onlyPerms[managemessage;:x: - You don't have manage message permission]` + + + +Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! + + + + + +Check this [list](/CodeReferences/ref.permissions_list) to view all permissions names + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/padLeft.mdx b/content/docs/(functions)/Text/padLeft.mdx new file mode 100644 index 00000000..5b573679 --- /dev/null +++ b/content/docs/(functions)/Text/padLeft.mdx @@ -0,0 +1,21 @@ +--- +title: "$padLeft" +--- + +Adds a filling text at the start of text, depend on the maximum length + +## Usage + +```bash +$padLeft[Text;Max Length;Filling Text] +``` + +### Example: + + +!!exec $padLeft[5;2;0]
$padLeft[13;2;0]

+
+ +05
13 +
+
\ No newline at end of file diff --git a/content/docs/(functions)/Text/padRight.mdx b/content/docs/(functions)/Text/padRight.mdx new file mode 100644 index 00000000..bbb9c83a --- /dev/null +++ b/content/docs/(functions)/Text/padRight.mdx @@ -0,0 +1,21 @@ +--- +title: "$padRight" +--- + +Adds a filling text at the end of text, depend on the maximum length + +## Usage + +```bash +$padRight[Text;Max Length;Filling Text] +``` + +### Example: + + +!!exec $padRight[I like custom commands;25;.]

+
+ +I like custom commands... + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/repeatMessage.mdx b/content/docs/(functions)/Text/repeatMessage.mdx new file mode 100644 index 00000000..6f860921 --- /dev/null +++ b/content/docs/(functions)/Text/repeatMessage.mdx @@ -0,0 +1,23 @@ +--- +title: "$repeatMessage" +--- + +this functions repeats the provided message x times + +#### Usage: +`$repeatMessage[times;text]` + +
+ + +!!exec $repeatMessage[3;a] + + +aaa + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/replaceText.mdx b/content/docs/(functions)/Text/replaceText.mdx new file mode 100644 index 00000000..37cc06ed --- /dev/null +++ b/content/docs/(functions)/Text/replaceText.mdx @@ -0,0 +1,23 @@ +--- +title: "$replaceText" +--- + +Replaces `A` with `X` in `TEXT` + +#### Usage: +`$replaceText[some text;sample;new]` + +
+ + +!!exec $replaceText[testing;ing;] + + +test + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/stringEndsWith.mdx b/content/docs/(functions)/Text/stringEndsWith.mdx new file mode 100644 index 00000000..42309751 --- /dev/null +++ b/content/docs/(functions)/Text/stringEndsWith.mdx @@ -0,0 +1,31 @@ +--- +title: "$stringEndsWith" +--- + +Checks if given message ends with given text + +## Usage + +```bash +$stringEndsWith[message;text] +``` + +### Example: + + +!!exec $stringEndsWith[Hello World;World]

+
+ +true

+
+
+ +### Example: + + +!!exec $stringEndsWith[Hello World;Discord]

+
+ +false + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/stringStartsWith.mdx b/content/docs/(functions)/Text/stringStartsWith.mdx new file mode 100644 index 00000000..7aef3e83 --- /dev/null +++ b/content/docs/(functions)/Text/stringStartsWith.mdx @@ -0,0 +1,31 @@ +--- +title: "$stringStartsWith" +--- + +Determines whether given message starts by another message or not + +## Usage + +```bash +$stringStartsWith[message;text] +``` + +### Example: + + +!!exec $stringStartsWith[Hello World;Hello]

+
+ +true

+
+
+ +### Example: + + +!!exec $stringStartsWith[Hello World;Hate]

+
+ +false + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/textLength.mdx b/content/docs/(functions)/Text/textLength.mdx new file mode 100644 index 00000000..5e1cb8f0 --- /dev/null +++ b/content/docs/(functions)/Text/textLength.mdx @@ -0,0 +1,31 @@ +--- +title: "$textLength" +--- + +Counts character of a text, or the user's message. + +## Usage + +```bash +$textLength or $textLength[text] +``` + +### Example: + + +!!exec $textLength[Mido]

+
+ +4

+
+
+ +### Example: + + +!!exec $textLength[Hello]

+
+ +6 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/textShuffle.mdx b/content/docs/(functions)/Text/textShuffle.mdx new file mode 100644 index 00000000..34e87c48 --- /dev/null +++ b/content/docs/(functions)/Text/textShuffle.mdx @@ -0,0 +1,22 @@ +--- +title: "$textShuffle" +--- + +Shuffle a text\ +**Return**: the shuffled text + +## Usage + +```bash +$textShuffle[Text;Separator (optional)] +``` + +### Example: + + +!!exec $textShuffle[Hello WOrld]

+
+ +rHl ldeOolW + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/textSlice.mdx b/content/docs/(functions)/Text/textSlice.mdx new file mode 100644 index 00000000..abfd3fb7 --- /dev/null +++ b/content/docs/(functions)/Text/textSlice.mdx @@ -0,0 +1,21 @@ +--- +title: "$textSlice" +--- + +Returns \ after given position or text in between X and Y + +## Usage + +```bash +$textSlice[text;x;y (optional)] +``` + +### Example: + + +!!exec $textSlice[Hello world;0;5]

+
+ +Hello + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx new file mode 100644 index 00000000..ecb072ae --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -0,0 +1,28 @@ +--- +title: "$advancedTextSplit" +--- + +The first field is the message we want to split and get indexes for. The second +field would be the split/seperator used in the text, and the next field would get the value of the index provided, setting this index value as the new text. The next +fields work as splitters/seperators and new indexes for this new text. + + +#### Usage: `$advancedTextSplit[text;split;index;split;index;...]` +
+ + +!!exec $advancedTextSplit[Wow, what a nice day, i'll go outside;,;2] /* Will get the second index */ + + +what a nice day + + + + + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx new file mode 100644 index 00000000..4496c8c3 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -0,0 +1,26 @@ +--- +title: "$concatTextSplit" +--- + +adds an array to the end of an array from `$textsplit` + +#### Usage: `$concatTextSplit[text;separator(optional, default = ,)]` +
+ + +!!exec $textsplit[Rake Mido; ]
$concatTextSplit[Wiki,Mika;,]
$arrayJoin[ ] +
+ +Rake Mido Wiki Mika + +
+ + + +This function got deprecated, use `$arrayConcat` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx new file mode 100644 index 00000000..2304c5c0 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -0,0 +1,25 @@ +--- +title: "$editTextSplitElement" +--- + +adds an element to an array from `$textsplit` or replaces the value by index of the split text from `$textsplit` + +#### Usage: `$editTextSplitElement[index;new value]` +
+ + +!!exec $textsplit[Wiki Rake; ]
$editTextSplitElement[1;Mido]
$arrayJoin[ ] +
+ +Mido Rake + +
+ + + +This function got deprecated, use `$arraySet` instead + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx new file mode 100644 index 00000000..c4e55434 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -0,0 +1,26 @@ +--- +title: "$findTextSplitIndex" +--- + +returns the index of the first occurrence of a value in an array from `$textsplit` + +#### Usage: `$findTextSplitIndex[value]` +
+ + +!!exec $textsplit[Rake Wiki Mika Mido; ]
$findTextSplitIndex[Wiki] +
+ +2 + +
+ + + +This function got deprecated, use `$arraySearch` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx new file mode 100644 index 00000000..838fd6ea --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx @@ -0,0 +1,30 @@ +--- +title: "$getTextSplitLength" +--- + +Returns the amount of objects created by `$textSplit` + + +
+ + + +!!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] +
+$getTextSplitLength +
+
+ +10 + +
+ + + +This function got deprecated, use `$arrayLength` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx new file mode 100644 index 00000000..d8e64af9 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx @@ -0,0 +1,29 @@ +--- +title: "$joinSplitText" +--- + +Joins the `$textSplit` indexes by a given separator + +
+ + + +!!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] +
+$joinSplitText[-] +
+
+ +1-2-3-4-5-6-7-8-9-10 + +
+ + + +This function got deprecated, use `$arrayJoin` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/meta.json b/content/docs/(functions)/Text/textSplit/meta.json new file mode 100644 index 00000000..8a6f55f5 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Text Split Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Text/textSplit/removeSplitTextElement.md b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx similarity index 72% rename from guide/Text/textSplit/removeSplitTextElement.md rename to content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx index 3ea15199..71da6366 100644 --- a/guide/Text/textSplit/removeSplitTextElement.md +++ b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx @@ -1,4 +1,6 @@ -# $removeSplitTextElement +--- +title: "$removeSplitTextElement" +--- Removes an element or elements from $textSplit by using their indexes. @@ -8,6 +10,8 @@ Removes an element or elements from $textSplit by using their indexes. $removeSplitTextElement[index;index2;...] ``` -::: danger + + This function got deprecated, use `$arrayRemove` instead -::: \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx new file mode 100644 index 00000000..5c487f15 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx @@ -0,0 +1,18 @@ +--- +title: "$removeTextSplitElement" +--- + +removes an element from an array from `$textsplit` + +#### Usage: `$removeTextSplitElement[Index]` +
+ + + +This function got deprecated, use `$arrayRemove` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx new file mode 100644 index 00000000..4f3be50b --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -0,0 +1,21 @@ +--- +title: "$spliceTextJoin" +--- + +Splits a text with `separator1`, then joins with it `separator2` every `x` times, and then joins with `separator3` every `x-1` times. + +#### Usage: `$spliceTextJoin[text;separator1;separator2;separator3;every]` +
+ + +!!exec $spliceTextJoin[1 2 3 4 5 6 7; ;+;-;2] + + +1+2-3+4-5+6 + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx new file mode 100644 index 00000000..9678963e --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -0,0 +1,30 @@ +--- +title: "$splitText" +--- + +returns the element by index from `$textSplit` + +#### Usage: `$splitText[index]` +
+ + + +!!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] +
+$splitText[2] +
+
+ +2 + +
+ + + +This function got deprecated, use `$arrayGet` instead + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx new file mode 100644 index 00000000..5dfd2ae8 --- /dev/null +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -0,0 +1,21 @@ +--- +title: "$textSplit" +--- + +Splits the provided text with `seperator` and creates an array. To access them use: `$arrayGet` or other array functions + + +#### Usage: `$textSplit[text;separator(optional, default = ,)]` +
+ + + +!!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] + + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/textTrim.mdx b/content/docs/(functions)/Text/textTrim.mdx new file mode 100644 index 00000000..bcc15456 --- /dev/null +++ b/content/docs/(functions)/Text/textTrim.mdx @@ -0,0 +1,21 @@ +--- +title: "$textTrim" +--- + +Removes useless spaces from given text. + +## Usage + +```bash +$textTrim[text] +``` + +### Example: + + +!!exec $textTrim[ My name is Mido ]

+
+ +My name is Mido + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/toLocaleUpperCase.mdx b/content/docs/(functions)/Text/toLocaleUpperCase.mdx new file mode 100644 index 00000000..708f85f1 --- /dev/null +++ b/content/docs/(functions)/Text/toLocaleUpperCase.mdx @@ -0,0 +1,24 @@ +--- +title: "$toLocaleUppercase[text]" +--- + +this sentence uppercases every first char of a word in a sentence + +#### Usage: +`$toLocaleUppercase[text]` + +
+ + +!!exec $toLocaleUppercase[hello how are you?] + + +Hello How Are You? + + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Text/toLowercase.mdx b/content/docs/(functions)/Text/toLowercase.mdx new file mode 100644 index 00000000..d840507a --- /dev/null +++ b/content/docs/(functions)/Text/toLowercase.mdx @@ -0,0 +1,23 @@ +--- +title: "$toLowercase[text]" +--- + +this functions lowercases every character + +#### Usage: +`$toLowercase[text]` + +
+ + +!!exec $toLowercase[HeLlO] + + +hello + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/toUppercase.mdx b/content/docs/(functions)/Text/toUppercase.mdx new file mode 100644 index 00000000..133c86d1 --- /dev/null +++ b/content/docs/(functions)/Text/toUppercase.mdx @@ -0,0 +1,23 @@ +--- +title: "$toUppercase[text]" +--- + +this functions uppercases every character + +#### Usage: +`$toUppercase[text]` + +
+ + +!!exec $touppercase[hElLo] + + +HELLO + + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Text/uri.mdx b/content/docs/(functions)/Text/uri.mdx new file mode 100644 index 00000000..dff2e6ff --- /dev/null +++ b/content/docs/(functions)/Text/uri.mdx @@ -0,0 +1,31 @@ +--- +title: "$uri" +--- + +Decodes or Encodes a url Example when you encode a url 'hello world' = 'hello%20world' + +## Usage + +```bash +$uri[decode/encode;text] +``` + +### Example (Encoding): + + +!!exec $uri[encode;Hello World]

+
+ +Hello%20World

+
+
+ +### Example (Decoding): + + +!!exec $uri[decode;Hello%20World]

+
+ +Hello World + +
\ No newline at end of file diff --git a/content/docs/(functions)/Text/void.mdx b/content/docs/(functions)/Text/void.mdx new file mode 100644 index 00000000..6d601ab9 --- /dev/null +++ b/content/docs/(functions)/Text/void.mdx @@ -0,0 +1,21 @@ +--- +title: "$void" +--- + +A function that eats input but return nothing! + +## Usage + +```bash +$void[ANYTHING] +``` + +### Example: + + +!!exec $let[name;Mido]
My name is $void[$get[name]]

+
+ +My name is + +
\ No newline at end of file diff --git a/guide/Threads/addUsersToThread.md b/content/docs/(functions)/Threads/addUsersToThread.mdx similarity index 90% rename from guide/Threads/addUsersToThread.md rename to content/docs/(functions)/Threads/addUsersToThread.mdx index acdcad40..d33b996b 100644 --- a/guide/Threads/addUsersToThread.md +++ b/content/docs/(functions)/Threads/addUsersToThread.mdx @@ -1,4 +1,6 @@ -# $addUsersToThread +--- +title: "$addUsersToThread" +--- Add users to a thread diff --git a/guide/Threads/archiveThread.md b/content/docs/(functions)/Threads/archiveThread.mdx similarity index 89% rename from guide/Threads/archiveThread.md rename to content/docs/(functions)/Threads/archiveThread.mdx index a77621aa..55b94d6a 100644 --- a/guide/Threads/archiveThread.md +++ b/content/docs/(functions)/Threads/archiveThread.mdx @@ -1,4 +1,6 @@ -# $archiveThread +--- +title: "$archiveThread" +--- archive/unarchive a thread diff --git a/guide/Threads/closePost.md b/content/docs/(functions)/Threads/closePost.mdx similarity index 89% rename from guide/Threads/closePost.md rename to content/docs/(functions)/Threads/closePost.mdx index b187bbd0..ded539db 100644 --- a/guide/Threads/closePost.md +++ b/content/docs/(functions)/Threads/closePost.mdx @@ -1,4 +1,6 @@ -# $closePost +--- +title: "$closePost" +--- Close/Open a post diff --git a/guide/Threads/createPost.md b/content/docs/(functions)/Threads/createPost.mdx similarity index 94% rename from guide/Threads/createPost.md rename to content/docs/(functions)/Threads/createPost.mdx index ba133b51..eebf4f6c 100644 --- a/guide/Threads/createPost.md +++ b/content/docs/(functions)/Threads/createPost.mdx @@ -1,4 +1,6 @@ -# $createPost +--- +title: "$createPost" +--- add a new post in forum channel diff --git a/guide/Threads/createThread.md b/content/docs/(functions)/Threads/createThread.mdx similarity index 57% rename from guide/Threads/createThread.md rename to content/docs/(functions)/Threads/createThread.mdx index c667aa53..43cde070 100644 --- a/guide/Threads/createThread.md +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -1,4 +1,9 @@ -# $createThread +--- +title: "$createThread" +--- + + + Create a thread, corresponding to the messageID specified in the function #### Usage: `$createThread[Channel ID;Message ID;Thread Name;Reason;Duration (1h/1d/3d/7d)(optional);Return ID (yes/no)(optional);Private Thread? (yes/no)]` @@ -22,15 +27,21 @@ $createThread[ ] ``` -::: tip Related Functions + + `$createChannel`, create a channel `$createRole`, create a role -::: -::: tip + + + + This Command supports Curl Arguments, a link to the page explaining it, will get added when done -::: -##### Function difficulty -###### Tags: + + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Threads/deletePost.md b/content/docs/(functions)/Threads/deletePost.mdx similarity index 80% rename from guide/Threads/deletePost.md rename to content/docs/(functions)/Threads/deletePost.mdx index 0b677cba..46ac279d 100644 --- a/guide/Threads/deletePost.md +++ b/content/docs/(functions)/Threads/deletePost.mdx @@ -1,4 +1,6 @@ -# $deletePost +--- +title: "$deletePost" +--- delete a post diff --git a/guide/Threads/deletePosts.md b/content/docs/(functions)/Threads/deletePosts.mdx similarity index 85% rename from guide/Threads/deletePosts.md rename to content/docs/(functions)/Threads/deletePosts.mdx index 9a42af7b..8350eba4 100644 --- a/guide/Threads/deletePosts.md +++ b/content/docs/(functions)/Threads/deletePosts.mdx @@ -1,4 +1,6 @@ -# $deletePosts +--- +title: "$deletePosts" +--- delete posts up to 10 post diff --git a/content/docs/(functions)/Threads/deleteThreads.mdx b/content/docs/(functions)/Threads/deleteThreads.mdx new file mode 100644 index 00000000..76838b35 --- /dev/null +++ b/content/docs/(functions)/Threads/deleteThreads.mdx @@ -0,0 +1,14 @@ +--- +title: "$deleteThreads" +--- + +threads with the provided thread id gets deleted +### Usage: `$deleteThreads[threadid;threadid2;...]` + +Example: `$deleteThreads[809890890890000]` +Don't forget to change the thread id + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Threads/editPost.md b/content/docs/(functions)/Threads/editPost.mdx similarity index 97% rename from guide/Threads/editPost.md rename to content/docs/(functions)/Threads/editPost.mdx index 7643c33b..04e1e242 100644 --- a/guide/Threads/editPost.md +++ b/content/docs/(functions)/Threads/editPost.mdx @@ -1,4 +1,6 @@ -# $editPost +--- +title: "$editPost" +--- edit an existing post in forum channel diff --git a/guide/Threads/editThread.md b/content/docs/(functions)/Threads/editThread.mdx similarity index 53% rename from guide/Threads/editThread.md rename to content/docs/(functions)/Threads/editThread.mdx index 8e0b956b..2d8144ae 100644 --- a/guide/Threads/editThread.md +++ b/content/docs/(functions)/Threads/editThread.mdx @@ -1,4 +1,9 @@ -# $editThread +--- +title: "$editThread" +--- + + + Edit a Thread. #### Usage: @@ -8,13 +13,18 @@ Edit a Thread. `$editThread[$channelID;$getServerVar[threadID];Cat Discussion;yes]` Will edit the thread stored in the server var "threadID" -::: danger + + You can only use the durations, allowed by your boosting level! Please do not try to use `7d` if your server hasn't got level 3 boosting perks -::: -::: tip + + + + This Command supports Curl Arguments, a link to the page explaining it, will get added when done -::: -##### Function difficulty -###### Tags: \ No newline at end of file + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx new file mode 100644 index 00000000..9fe5a8dc --- /dev/null +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -0,0 +1,28 @@ +--- +title: "$getThreads" +--- + +Get all threads from a channel. + +#### Usage: +`$getThreads[Channel ID;Type to return (name/id);Seperator (default:, )]` + +
+ + +!!exec $getThreads[$channelID;name; | ] + + +Cat Disscussion | Help + + + + + +This Command supports Curl Arguments, a link to the page explaining it, will get added when done + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Threads/joinThreads.mdx b/content/docs/(functions)/Threads/joinThreads.mdx new file mode 100644 index 00000000..a8fe2b80 --- /dev/null +++ b/content/docs/(functions)/Threads/joinThreads.mdx @@ -0,0 +1,14 @@ +--- +title: "$joinThreads" +--- + +custom command bot joins the threads with the provided thread id +### Usage: `$joinThreads[threadid;threadid2;...]` + +Example: `$joinThreads[809890890890000]` +Don't forget to change the thread id + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Threads/leaveThreads.mdx b/content/docs/(functions)/Threads/leaveThreads.mdx new file mode 100644 index 00000000..962c6290 --- /dev/null +++ b/content/docs/(functions)/Threads/leaveThreads.mdx @@ -0,0 +1,14 @@ +--- +title: "$leaveThreads" +--- + +custom command bot leaves the threads with the provided thread id +### Usage: `$leaveThreads[threadid;threadid2;...]` + +Example: `$leaveThreads[809890890890000]` +Don't forget to change the thread id + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Threads/lockPost.md b/content/docs/(functions)/Threads/lockPost.mdx similarity index 89% rename from guide/Threads/lockPost.md rename to content/docs/(functions)/Threads/lockPost.mdx index 0c9a932e..fbe30473 100644 --- a/guide/Threads/lockPost.md +++ b/content/docs/(functions)/Threads/lockPost.mdx @@ -1,4 +1,6 @@ -# $lockPost +--- +title: "$lockPost" +--- lock/unlock a post diff --git a/guide/Threads/lockThread.md b/content/docs/(functions)/Threads/lockThread.mdx similarity index 89% rename from guide/Threads/lockThread.md rename to content/docs/(functions)/Threads/lockThread.mdx index 491b210e..ec4a3c23 100644 --- a/guide/Threads/lockThread.md +++ b/content/docs/(functions)/Threads/lockThread.mdx @@ -1,4 +1,6 @@ -# $lockThread +--- +title: "$lockThread" +--- lock/unlock a thread diff --git a/content/docs/(functions)/Threads/meta.json b/content/docs/(functions)/Threads/meta.json new file mode 100644 index 00000000..20057db8 --- /dev/null +++ b/content/docs/(functions)/Threads/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Threads Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Threads/pinPost.md b/content/docs/(functions)/Threads/pinPost.mdx similarity index 89% rename from guide/Threads/pinPost.md rename to content/docs/(functions)/Threads/pinPost.mdx index 62db0dd9..ea0eecf3 100644 --- a/guide/Threads/pinPost.md +++ b/content/docs/(functions)/Threads/pinPost.mdx @@ -1,4 +1,6 @@ -# $pinPost +--- +title: "$pinPost" +--- pin/unpin a post diff --git a/guide/Threads/removeUsersFromThread.md b/content/docs/(functions)/Threads/removeUsersFromThread.mdx similarity index 90% rename from guide/Threads/removeUsersFromThread.md rename to content/docs/(functions)/Threads/removeUsersFromThread.mdx index 91336672..b50b36ea 100644 --- a/guide/Threads/removeUsersFromThread.md +++ b/content/docs/(functions)/Threads/removeUsersFromThread.mdx @@ -1,4 +1,6 @@ -# $removeUsersFromThread +--- +title: "$removeUsersFromThread" +--- remove users from a thread diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx new file mode 100644 index 00000000..8e524d6b --- /dev/null +++ b/content/docs/(functions)/Threads/thread.mdx @@ -0,0 +1,45 @@ +--- +title: "$thread" +--- + +Gets info trom a thread. + +#### Usage: +`$thread[Thread ID;Type]` + +
+ + +!!exec <@!$thread[owner]> + + +Member + + + + + + +* `archivedat` +* `duration` +* `id` +* `members` +* `memberscount` +* `messagescount` +* `name` +* `owner` +* `locked` +* `parent` + + + + + + +This Command supports Curl Arguments, a link to the page explaining it, will get added when done + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Timeout/meta.json b/content/docs/(functions)/Timeout/meta.json new file mode 100644 index 00000000..bec6ed69 --- /dev/null +++ b/content/docs/(functions)/Timeout/meta.json @@ -0,0 +1,6 @@ +{ + "title": "User Timeout Functions", + "pages": [ + "..." + ] +} diff --git a/guide/Timeout/timeoutAction.md b/content/docs/(functions)/Timeout/timeoutAction.mdx similarity index 83% rename from guide/Timeout/timeoutAction.md rename to content/docs/(functions)/Timeout/timeoutAction.mdx index 238c8b47..ae3df14c 100644 --- a/guide/Timeout/timeoutAction.md +++ b/content/docs/(functions)/Timeout/timeoutAction.mdx @@ -1,4 +1,6 @@ -# $timeoutAction +--- +title: "$timeoutAction" +--- Returns `add` if a user was timed out, `remove` if the timeout was removed.\ This function only works in the Timeout trigger. diff --git a/guide/Timeout/timeoutBy.md b/content/docs/(functions)/Timeout/timeoutBy.mdx similarity index 84% rename from guide/Timeout/timeoutBy.md rename to content/docs/(functions)/Timeout/timeoutBy.mdx index 41b3b1f8..4c6a4051 100644 --- a/guide/Timeout/timeoutBy.md +++ b/content/docs/(functions)/Timeout/timeoutBy.mdx @@ -1,4 +1,6 @@ -# $timeoutBy +--- +title: "$timeoutBy" +--- Return the user id of the admin/mod that timed out the user.\ This function only works in the Timeout trigger. diff --git a/guide/Timeout/timeoutReason.md b/content/docs/(functions)/Timeout/timeoutReason.mdx similarity index 79% rename from guide/Timeout/timeoutReason.md rename to content/docs/(functions)/Timeout/timeoutReason.mdx index e8de3372..6824ff24 100644 --- a/guide/Timeout/timeoutReason.md +++ b/content/docs/(functions)/Timeout/timeoutReason.mdx @@ -1,4 +1,6 @@ -# $timeoutReason +--- +title: "$timeoutReason" +--- Return the reason of the timeout.\ This function only works in the Timeout trigger. diff --git a/guide/Timeout/userGetTimeout.md b/content/docs/(functions)/Timeout/userGetTimeout.mdx similarity index 81% rename from guide/Timeout/userGetTimeout.md rename to content/docs/(functions)/Timeout/userGetTimeout.mdx index d9d8b013..58f263a5 100644 --- a/guide/Timeout/userGetTimeout.md +++ b/content/docs/(functions)/Timeout/userGetTimeout.mdx @@ -1,4 +1,6 @@ -# $userGetTimeout +--- +title: "$userGetTimeout" +--- Return the time left of the timeout in milliseconds.\ If user is not timed out, it will return 0. diff --git a/guide/Timeout/userRemoveTimeout.md b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx similarity index 73% rename from guide/Timeout/userRemoveTimeout.md rename to content/docs/(functions)/Timeout/userRemoveTimeout.mdx index 5240fd5f..2a399e7b 100644 --- a/guide/Timeout/userRemoveTimeout.md +++ b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx @@ -1,4 +1,6 @@ -# $userRemoveTimeout +--- +title: "$userRemoveTimeout" +--- Removes a timeout from a user. diff --git a/guide/Timeout/userSetTimeout.md b/content/docs/(functions)/Timeout/userSetTimeout.mdx similarity index 83% rename from guide/Timeout/userSetTimeout.md rename to content/docs/(functions)/Timeout/userSetTimeout.mdx index ec644607..21c74730 100644 --- a/guide/Timeout/userSetTimeout.md +++ b/content/docs/(functions)/Timeout/userSetTimeout.mdx @@ -1,4 +1,6 @@ -# $userSetTimeout +--- +title: "$userSetTimeout" +--- Sets a user timeout, so the user cannot talk/interact in the server. diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx new file mode 100644 index 00000000..77926c51 --- /dev/null +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -0,0 +1,60 @@ +--- +title: "$callFunction" +--- + +To call a user-defined function created with `$function` + + +#### Usage: +`$callFunction[Function Name;Argument 1 (optional);Argument 2....(optional)]` + +#### Example: +```bash +$callFunction[printHello;Mika] +``` + +Call the function, using `$callFunction` +
+ + + +!!exec $function[printHello;name] +
+Hello $name 👋 +
+$endFunction +$callFunction[printhello;Mika] +
+
+ +Hello Mika 👋 + +
+ +Call the function, using `$printHello` +
+ + + +!!exec $function[printHello;name] +
+Hello $name 👋 +
+$endFunction +$printhello[Mika] +
+
+ +Hello Mika 👋 + +
+ + + +A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] + + + +**Function difficulty:** + +**Tags:** diff --git a/guide/Useful/commandCode.md b/content/docs/(functions)/Useful/commandCode.mdx similarity index 95% rename from guide/Useful/commandCode.md rename to content/docs/(functions)/Useful/commandCode.mdx index e53f388d..9ff431fa 100644 --- a/guide/Useful/commandCode.md +++ b/content/docs/(functions)/Useful/commandCode.mdx @@ -1,4 +1,6 @@ -# $commandCode +--- +title: "$commandCode" +--- Returns the code of the current command. diff --git a/guide/Useful/deleteTrigger.md b/content/docs/(functions)/Useful/deleteTrigger.mdx similarity index 84% rename from guide/Useful/deleteTrigger.md rename to content/docs/(functions)/Useful/deleteTrigger.mdx index 51ffc748..ce8d6ed0 100644 --- a/guide/Useful/deleteTrigger.md +++ b/content/docs/(functions)/Useful/deleteTrigger.mdx @@ -1,4 +1,6 @@ -# $deleteTrigger +--- +title: "$deleteTrigger" +--- Delete a command using its token, **empty token = delete current command** diff --git a/guide/Useful/editTrigger.md b/content/docs/(functions)/Useful/editTrigger.mdx similarity index 94% rename from guide/Useful/editTrigger.md rename to content/docs/(functions)/Useful/editTrigger.mdx index bbc272a8..4b991dce 100644 --- a/guide/Useful/editTrigger.md +++ b/content/docs/(functions)/Useful/editTrigger.mdx @@ -1,4 +1,6 @@ -# $editTrigger +--- +title: "$editTrigger" +--- Edit a command information like `name` or `type`\ \ diff --git a/guide/Useful/endForEach.md b/content/docs/(functions)/Useful/endForEach.mdx similarity index 74% rename from guide/Useful/endForEach.md rename to content/docs/(functions)/Useful/endForEach.mdx index 365016ec..23e83892 100644 --- a/guide/Useful/endForEach.md +++ b/content/docs/(functions)/Useful/endForEach.mdx @@ -1,4 +1,6 @@ -# $endForEach +--- +title: "$endForEach" +--- To close $foreach diff --git a/guide/Useful/endFunction.md b/content/docs/(functions)/Useful/endFunction.mdx similarity index 82% rename from guide/Useful/endFunction.md rename to content/docs/(functions)/Useful/endFunction.mdx index e8c645ee..f7b7e153 100644 --- a/guide/Useful/endFunction.md +++ b/content/docs/(functions)/Useful/endFunction.mdx @@ -1,4 +1,6 @@ -# $endFunction +--- +title: "$endFunction" +--- To close $function diff --git a/guide/Useful/endTimeout.md b/content/docs/(functions)/Useful/endTimeout.mdx similarity index 66% rename from guide/Useful/endTimeout.md rename to content/docs/(functions)/Useful/endTimeout.mdx index 6b4d85bb..e95222f3 100644 --- a/guide/Useful/endTimeout.md +++ b/content/docs/(functions)/Useful/endTimeout.mdx @@ -1,4 +1,6 @@ -# $endTimeout +--- +title: "$endTimeout" +--- To close $setTimeout diff --git a/content/docs/(functions)/Useful/error.mdx b/content/docs/(functions)/Useful/error.mdx new file mode 100644 index 00000000..da77e29e --- /dev/null +++ b/content/docs/(functions)/Useful/error.mdx @@ -0,0 +1,36 @@ +--- +title: "$error" +--- + +Returns the error the interpreter threw + +#### Usage: +`$error` + +#### Example: +
+ + + +!!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] +$error + + + +❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] + + + + + + +The way `$modifyChannelPerms` shown here is **NOT** correct! + +Check the `$modifyChannelPerms` for the correct usage + + + +**Function Difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx new file mode 100644 index 00000000..57581641 --- /dev/null +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -0,0 +1,69 @@ +--- +title: "$forEach" +--- + +Will loop over a list and every loop it will take an item and assign it inside varname accessible by $get[varname] or $varname + +## Usage: +```bash +$forEach[varname;LIST (ex: mido rake azz);Separator (Optional, default is space)] +``` +## Loop Limits +Loops in this function are limited to a certain number of cycles. These limits vary between different tiers of premium. +| Tier | Limit | +| :------- | :--- | +| 0 (Free) | 10 | +| 3 (Freemium) | 15 | +| 4 (Pro) | 30 | +| 5 (Ultra) | 60 | + +## Example: +```bash +$forEach[member;Rake, Mido, Mika, Azz, Felix, Flinkz, Wiki, Ddk;, ] +$get[member], is one of our Staff Members! +$endForEach +``` + +
+ + + +!!exec $forEach[member;Rake, Mido, Azz, Mika, Felix, Flinkz, Wiki, Ddk;, ] +
+$get[member], is one of our Staff Members! +
+$endForEach +
+
+ + +Rake, is one of our Staff Members! +
+Mido, is one of our Staff Members! +
+Azz, is one of our Staff Members! +
+Mika, is one of our Staff Members! +
+Felix, is one of our Staff Members! +
+Flinkz, is one of our Staff Members! +
+Wiki, is one of our Staff Members! +
+Ddk, is one of our Staff Members! +
+
+
+
+ + + +This can be used with `$seq`! + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx new file mode 100644 index 00000000..cc5903fa --- /dev/null +++ b/content/docs/(functions)/Useful/function.mdx @@ -0,0 +1,71 @@ +--- +title: "$function" +--- + +Create a user-defined function that can be called by $callFunction or $functionName + + +#### Usage: +`$function[Function name;Param 1 (optional);Param 2...(optional)]` + +#### Example: +```bash +$function[printHello;name] + Hello $name +$endFunction +``` + +Call the function, using `$callFunction` +
+ + + +!!exec $function[printHello;name] +
+Hello $name 👋 +
+$endFunction +$callFunction[printhello;Mika] +
+
+ +Hello Mika 👋 + +
+ +Call the function, using `$printHello` +
+ + + +!!exec $function[printHello;name] +
+Hello $name 👋 +
+$endFunction +$printhello[Mika] +
+
+ +Hello Mika 👋 + +
+ + + +Code inside the function is isolated from outside, which means changing of variables, arrays, random,...won't effect the outside.\ +you can access outside temporary variables (assigned by `$let`) but you can't change them. + + + + + +A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] for short format ($functionName) +but if you are using $callFunction to call the function, any name is valid + + + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Useful/getToken.md b/content/docs/(functions)/Useful/getToken.mdx similarity index 89% rename from guide/Useful/getToken.md rename to content/docs/(functions)/Useful/getToken.mdx index ec926453..a4aa6a43 100644 --- a/guide/Useful/getToken.md +++ b/content/docs/(functions)/Useful/getToken.mdx @@ -1,4 +1,6 @@ -# $getToken +--- +title: "$getToken" +--- search for command name, and return the first matching command token.\ if no command found with that name `undefined` will be returned diff --git a/guide/Useful/getTrigger.md b/content/docs/(functions)/Useful/getTrigger.mdx similarity index 90% rename from guide/Useful/getTrigger.md rename to content/docs/(functions)/Useful/getTrigger.mdx index a51b9cde..6c067a43 100644 --- a/guide/Useful/getTrigger.md +++ b/content/docs/(functions)/Useful/getTrigger.mdx @@ -1,4 +1,6 @@ -# $getTrigger +--- +title: "$getTrigger" +--- Return the command trigger information like `name` or `type`\ \ diff --git a/guide/Useful/ignoreErrors.md b/content/docs/(functions)/Useful/ignoreErrors.mdx similarity index 91% rename from guide/Useful/ignoreErrors.md rename to content/docs/(functions)/Useful/ignoreErrors.mdx index 64f95e73..6aa1f64e 100644 --- a/guide/Useful/ignoreErrors.md +++ b/content/docs/(functions)/Useful/ignoreErrors.mdx @@ -1,4 +1,6 @@ -# $ignoreErrors +--- +title: "$ignoreErrors" +--- It will tell the interpreter to ignore the errors and in case of error, the function will return the placeholder you specified diff --git a/guide/Useful/includeLibrary.md b/content/docs/(functions)/Useful/includeLibrary.mdx similarity index 74% rename from guide/Useful/includeLibrary.md rename to content/docs/(functions)/Useful/includeLibrary.mdx index 437589d7..8ece6926 100644 --- a/guide/Useful/includeLibrary.md +++ b/content/docs/(functions)/Useful/includeLibrary.mdx @@ -1,4 +1,6 @@ -# $includeLibrary +--- +title: "$includeLibrary" +--- To include code created in Library trigger diff --git a/guide/Useful/jsonRequest.md b/content/docs/(functions)/Useful/jsonRequest.mdx similarity index 86% rename from guide/Useful/jsonRequest.md rename to content/docs/(functions)/Useful/jsonRequest.mdx index d47d9fea..39d1b647 100644 --- a/guide/Useful/jsonRequest.md +++ b/content/docs/(functions)/Useful/jsonRequest.mdx @@ -1,9 +1,13 @@ -# $jsonRequest +--- +title: "$jsonRequest" +--- Makes an API request (`GET`) and returns its response. -::: tip Note + + The URL must be whitelisted, you can check in our support server. -::: + + ## Usage diff --git a/content/docs/(functions)/Useful/meta.json b/content/docs/(functions)/Useful/meta.json new file mode 100644 index 00000000..828326dc --- /dev/null +++ b/content/docs/(functions)/Useful/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Useful Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx new file mode 100644 index 00000000..d89d93cf --- /dev/null +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -0,0 +1,40 @@ +--- +title: "$redirectErrors" +--- + +To redirect any kind of errors to a specific channel, by default errors will appear in the execution channel + +#### Usage: +`$redirectErrors[Channel ID]` + +#### Example: +
+ + + +!!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] +$redirectErrors[Channel ID] + + + + +
+ + +❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] + + + + + + +The way `$modifyChannelPerms` shown here is **NOT** correct! + +Check the `$modifyChannelPerms` for the correct usage + + + +**Function difficulty:** + +**Tags:** + diff --git a/guide/Useful/return.md b/content/docs/(functions)/Useful/return.mdx similarity index 93% rename from guide/Useful/return.md rename to content/docs/(functions)/Useful/return.mdx index 271fbbc6..00861524 100644 --- a/guide/Useful/return.md +++ b/content/docs/(functions)/Useful/return.mdx @@ -1,4 +1,6 @@ -# $return +--- +title: "$return" +--- Stops a user defined function execution and returns the Return Value diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx new file mode 100644 index 00000000..671d0635 --- /dev/null +++ b/content/docs/(functions)/Useful/seq.mdx @@ -0,0 +1,29 @@ +--- +title: "$seq" +--- + +Returns a sequence of numbers, decided by a starting (inclusive) number and stop at ending (inclusive) number with step. + +#### Usage: +`$seq[Start;End;Step (optional, default=1);Separator (default ' ')]` + +#### Example: +
+ + +!!exec $seq[1;10] + + +1 2 3 4 5 6 7 8 9 10 + + + + + +This can be used with `$forEach` quite easily + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Useful/setTimeout.mdx b/content/docs/(functions)/Useful/setTimeout.mdx new file mode 100644 index 00000000..2516baba --- /dev/null +++ b/content/docs/(functions)/Useful/setTimeout.mdx @@ -0,0 +1,43 @@ +--- +title: "$setTimeout" +--- + +Will execute the code inside it after certain time + +#### Usage: +`$setTimeout[time;file name (optional, default=$undefined));author (optional, default=$authorID)]` + +#### Example: +
+ + + +!!exec This part gets executed before the 2d timeout +
+$setTimeout[2d;Testing;$authorID] +
+This part after the 2d +
+$endTimeout +
+
+ +This part gets executed before the 2d timeout + + +This part after the 2d + +
+ + + +If you only want to wait less then 1m, you can use `$wait` + + + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx new file mode 100644 index 00000000..89a08d4d --- /dev/null +++ b/content/docs/(functions)/Useful/spread.mdx @@ -0,0 +1,23 @@ +--- +title: "$spread" +--- + +spreads text as arguments inside functions + +#### Usage: `$spread[separator (optional, default: ,);data to spread]` + +#### Example: +
+ + +!!exec Your color is $randomtext[$spread[,;Blue,Yellow,Green]] + + +Your color is Yellow + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx new file mode 100644 index 00000000..52d2bddc --- /dev/null +++ b/content/docs/(functions)/Useful/stop.mdx @@ -0,0 +1,52 @@ +--- +title: "$stop" +--- + +This function will cause the interpetender to stop the command execution & return a message if wanted. + +#### Usage: +`$stop[Message (optional)]` + +#### Example: +
+ + + +!!exec $sendMessage[This message will be send;no] +
+$stop[This funtion will cause the interpetender to stop the code] +
+$sendMesssage[This message won't be send;no] +
+
+ +This message will be send + + +This funtion will cause the interpetender to stop the code + +
+ + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + + + +Using plain text in your code, like below will **NOT** work!! + +This code doesn't work: +```bash +This is plain text before the stop function +$stop +This is plain text after the stop function +``` +^^ - This will not send anything! + + + +**Function difficulty:** + +**Tags:** diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx new file mode 100644 index 00000000..509408b4 --- /dev/null +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -0,0 +1,41 @@ +--- +title: "$suppressErrors" +--- + +Suppress all the errors and sends a custom one. \{error} will contain the error that was thrown. + +#### Usage: +`$suppressErrors[message]` + +#### Example: +
+ + + +!!exec $suppressErrors[Wrong usage of $modifyChannelPerms] +$modifyChannelPerms[$authorID;-sendmessages;$channelID] + + + +Wrong usage of $modifyChannelPerms + + + + + +You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_format) + + + + + +The way `$modifyChannelPerms` shown here is **NOT** correct! + +Check the `$modifyChannelPerms` for the correct usage + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Useful/triggerExists.mdx b/content/docs/(functions)/Useful/triggerExists.mdx new file mode 100644 index 00000000..aacb9986 --- /dev/null +++ b/content/docs/(functions)/Useful/triggerExists.mdx @@ -0,0 +1,31 @@ +--- +title: "$triggerExists" +--- + +Check if a trigger with the specified token exists + +## Usage + +```bash +$triggerExists[Token] +``` + +### Example (An existing trigger): + + +!!exec $triggerExists[fx1d53]

+
+ +true

+
+
+ +### Example (not available trigger): + + +!!exec $triggerExists[abcdef]

+
+ +false + +
diff --git a/content/docs/(functions)/Useful/wait.mdx b/content/docs/(functions)/Useful/wait.mdx new file mode 100644 index 00000000..b8d432e5 --- /dev/null +++ b/content/docs/(functions)/Useful/wait.mdx @@ -0,0 +1,39 @@ +--- +title: "$wait" +--- + +Will wait an X time, before executing the code below it. + +#### Usage: +`$wait[time]` + +#### Example: +
+ + + +!!exec $sendMessage[This part gets executed before the 10s] +
+$wait[10s] +
+$sendMessage[This part after the 10s] +
+
+ +This part gets executed before the 10s + + +This part after the 10s + +
+ + + +If you want to wait more then 1m, we suggest you use `$setTimeout` + + + +**Function difficulty:** + +**Tags:** + diff --git a/content/docs/(functions)/Variables/deleteChannelVar.mdx b/content/docs/(functions)/Variables/deleteChannelVar.mdx new file mode 100644 index 00000000..acadff01 --- /dev/null +++ b/content/docs/(functions)/Variables/deleteChannelVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$deleteChannelVar" +--- + +Deletes a channel variable, from the command trigger channel or from the ID specified. + +#### Usage: `$deleteChannelVar[variable;channelID(optional)]` +
+ + +!!exec $deleteChannelVar[Creator] + + + + + +Check out: `$setChannelVar` + +Check out: `$getChannelVar` + + diff --git a/content/docs/(functions)/Variables/deleteMessageVar.mdx b/content/docs/(functions)/Variables/deleteMessageVar.mdx new file mode 100644 index 00000000..44038b48 --- /dev/null +++ b/content/docs/(functions)/Variables/deleteMessageVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$deleteMessageVar" +--- + +Deletes a message variable, from the command trigger or from the ID specified. + +#### Usage: `$deleteMessageVar[variable;MessageID(optional)]` +
+ + +!!exec $deleteMessageVar[Author] + + + + + +Check out: `$setMessageVar` + +Check out: `$getMessageVar` + + diff --git a/content/docs/(functions)/Variables/deleteServerVar.mdx b/content/docs/(functions)/Variables/deleteServerVar.mdx new file mode 100644 index 00000000..c3348f8a --- /dev/null +++ b/content/docs/(functions)/Variables/deleteServerVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$deleteServerVar" +--- + +Deletes a server variable. + +#### Usage: `$deleteServerVar[variable]` +
+ + +!!exec $deleteServerVar[TopMember] + + + + + +Check out: `$setServerVar` + +Check out: `$getServerVar` + + diff --git a/content/docs/(functions)/Variables/deleteUserVar.mdx b/content/docs/(functions)/Variables/deleteUserVar.mdx new file mode 100644 index 00000000..c5b1619d --- /dev/null +++ b/content/docs/(functions)/Variables/deleteUserVar.mdx @@ -0,0 +1,23 @@ +--- +title: "$deleteUserVar" +--- + +Deletes a user variable, from the author of the command or from the ID specified. + +#### Usage: `$deleteUserVar[variable;userID]` +
+ + +!!exec $deleteUserVar[Creator;$authorID] + + + + + +Check out: `$setUserVar` + +Check out: `$getUserVar` + +Check out: `$resetUserVar` + + diff --git a/content/docs/(functions)/Variables/get.mdx b/content/docs/(functions)/Variables/get.mdx new file mode 100644 index 00000000..5089ef1d --- /dev/null +++ b/content/docs/(functions)/Variables/get.mdx @@ -0,0 +1,33 @@ +--- +title: "$get" +--- + +retrieve variable defined by `$let` + +## Usage: `$get[varname;value if not exists] or $varname` + +### Example 1: + + +!!exec $let[orange;10]
$get[orange] or $orange +
+ +10 or 10 + +
+ +### Example 2 (Use default value if not exists): + + +!!exec Your name is $get[name;Mido] + + +Your name is Mido + + + + + +Check out: `$let` + + diff --git a/content/docs/(functions)/Variables/getChannelVar.mdx b/content/docs/(functions)/Variables/getChannelVar.mdx new file mode 100644 index 00000000..4f1673d1 --- /dev/null +++ b/content/docs/(functions)/Variables/getChannelVar.mdx @@ -0,0 +1,24 @@ +--- +title: "$getChannelVar" +--- + +Gets a channel variable value + +#### Usage: `$getChannelVar[variable;channelID(optional)]` +
+ + +!!exec $getChannelVar[Creator] + + +Mido + + + + + +Check out: `$setChannelVar` + +Check out: `$deleteChannelVar` + + diff --git a/content/docs/(functions)/Variables/getMessageVar.mdx b/content/docs/(functions)/Variables/getMessageVar.mdx new file mode 100644 index 00000000..e476c68d --- /dev/null +++ b/content/docs/(functions)/Variables/getMessageVar.mdx @@ -0,0 +1,24 @@ +--- +title: "$getMessageVar" +--- + +Gets a message variable value + +#### Usage: `$getMessageVar[variable;messageID(optional)]` +
+ + +!!exec $getMessageVar[data] + + +Mido + + + + + +Check out: `$setMessageVar` + +Check out: `$deleteMessageVar` + + diff --git a/content/docs/(functions)/Variables/getServerVar.mdx b/content/docs/(functions)/Variables/getServerVar.mdx new file mode 100644 index 00000000..fe091f28 --- /dev/null +++ b/content/docs/(functions)/Variables/getServerVar.mdx @@ -0,0 +1,24 @@ +--- +title: "$getServerVar" +--- + +Gets a server variable value + +#### Usage: `$getServerVar[variable]` +
+ + +!!exec $getServerVar[holder] + + +Mika + + + + + +Check out: `$setServerVar` + +Check out: `$deleteServerVar` + + diff --git a/content/docs/(functions)/Variables/getUserVar.mdx b/content/docs/(functions)/Variables/getUserVar.mdx new file mode 100644 index 00000000..96093e40 --- /dev/null +++ b/content/docs/(functions)/Variables/getUserVar.mdx @@ -0,0 +1,37 @@ +--- +title: "$getUserVar" +--- + +Gets a user variable value + +#### Usage: `$getUserVar[variable;userid(optional)]` +
+ + +!!exec $getUserVar[warnings;683630053686378498] + + +4 + + + +or executors(author/you) warning count: + + + +!!exec $getUserVar[warnings] + + +1 + + + + + +Check out: `$setUserVar` + +Check out: `$deleteUserVar` + +Check out: `$resetUserVar` + + diff --git a/content/docs/(functions)/Variables/increaseChannelVar.mdx b/content/docs/(functions)/Variables/increaseChannelVar.mdx new file mode 100644 index 00000000..94de2b79 --- /dev/null +++ b/content/docs/(functions)/Variables/increaseChannelVar.mdx @@ -0,0 +1,29 @@ +--- +title: "$increaseChannelVar" +--- + +To increase channel variable with a certain amount.\ +If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. + +## Usage + +```bash +$increaseChannelVar[variable name;amount/expression;channel id;default amount (default is 0)] +``` + +### Example (increase channel messages by 1): +```bash +$increaseChannelVar[messages;1] + + +``` + +### Example (double the messages): + + +!!exec Before: $getChannelVar[messages]
$increaseChannelVar[messages;x*2]
After: $getChannelVar[messages]

+
+ +Before: 5
After: 10 +
+
diff --git a/content/docs/(functions)/Variables/increaseServerVar.mdx b/content/docs/(functions)/Variables/increaseServerVar.mdx new file mode 100644 index 00000000..8a5860bf --- /dev/null +++ b/content/docs/(functions)/Variables/increaseServerVar.mdx @@ -0,0 +1,29 @@ +--- +title: "$increaseServerVar" +--- + +To increase server variable with a certain amount.\ +If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. + +## Usage + +```bash +$increaseServerVar[variable name;amount/expression;default amount (default is 0)] +``` + +### Example (increase ticket numbers by 1): +```bash +$increaseServerVar[ticket numbers;1] + + +``` + +### Example (double the messages): + + +!!exec Before: $getServerVar[ticket numbers]
$increaseServerVar[ticket numbers;x*2]
After: $getServerVar[ticket numbers]

+
+ +Before: 5
After: 10 +
+
diff --git a/content/docs/(functions)/Variables/increaseUserVar.mdx b/content/docs/(functions)/Variables/increaseUserVar.mdx new file mode 100644 index 00000000..71907b44 --- /dev/null +++ b/content/docs/(functions)/Variables/increaseUserVar.mdx @@ -0,0 +1,29 @@ +--- +title: "$increaseUserVar" +--- + +To increase user variable with a certain amount.\ +If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. + +## Usage + +```bash +$increaseUserVar[variable name;amount/expression;user id;default amount (default is 0)] +``` + +### Example (increase user money by 1000): +```bash +$increaseUserVar[money;1000] + + +``` + +### Example (double the money): + + +!!exec Before: $getUserVar[money]
$increaseUserVar[money;x*2]
After: $getUserVar[money]

+
+ +Before: 1000
After: 2000 +
+
diff --git a/guide/Variables/initVar.md b/content/docs/(functions)/Variables/initVar.mdx similarity index 96% rename from guide/Variables/initVar.md rename to content/docs/(functions)/Variables/initVar.mdx index eae822d3..2cdc14ce 100644 --- a/guide/Variables/initVar.md +++ b/content/docs/(functions)/Variables/initVar.mdx @@ -1,4 +1,6 @@ -# $initVar +--- +title: "$initVar" +--- Initializes a variable with a default value if the var is undefined or does not exist diff --git a/guide/Variables/let.md b/content/docs/(functions)/Variables/let.mdx similarity index 66% rename from guide/Variables/let.md rename to content/docs/(functions)/Variables/let.mdx index 2b2e6f51..a2461594 100644 --- a/guide/Variables/let.md +++ b/content/docs/(functions)/Variables/let.mdx @@ -1,4 +1,7 @@ -# $let +--- +title: "$let" +--- + Define a variable, that you can access later through `$get`. This function is useful to temporarily store variables, like to save the result of a calculation @@ -6,13 +9,15 @@ This function is useful to temporarily store variables, like to save the result The first value will only exist until cc ends its execution,the second will still be accessable until next bot restart (every 5d) You can use $get[varname] or $varname to retrieve the value
- - - !!exec $let[orange;10] or $let[apple;10;yes] - - + + +!!exec $let[orange;10] or $let[apple;10;yes] + + + + -::: tip Related Functions Check out: `$get` -::: + + diff --git a/content/docs/(functions)/Variables/meta.json b/content/docs/(functions)/Variables/meta.json new file mode 100644 index 00000000..aced8042 --- /dev/null +++ b/content/docs/(functions)/Variables/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Variables Functions", + "pages": [ + "..." + ] +} diff --git a/content/docs/(functions)/Variables/resetUserVar.mdx b/content/docs/(functions)/Variables/resetUserVar.mdx new file mode 100644 index 00000000..c012f0b6 --- /dev/null +++ b/content/docs/(functions)/Variables/resetUserVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$resetUserVar" +--- + +Resets a user variable for all users. + +#### Usage: `$resetUserVar[variable]` +
+ + +!!exec $resetUserVar[warnings] + + + + + +Check out: `$setUserVar` + +Check out: `$getUserVar` + + diff --git a/content/docs/(functions)/Variables/setChannelVar.mdx b/content/docs/(functions)/Variables/setChannelVar.mdx new file mode 100644 index 00000000..0221c0c5 --- /dev/null +++ b/content/docs/(functions)/Variables/setChannelVar.mdx @@ -0,0 +1,29 @@ +--- +title: "$setChannelVar" +--- + +Sets a channel variable value. + +#### Usage: `$setChannelVar[variable;value;channelID (optional)]` +
+ + +!!exec $setChannelVar[Creator;Mido;$channelID] + + + +or for current Channel + + + +!!exec $setChannelVar[Creator;Mido] + + + + + +Check out: `$getChannelVar` + +Check out: `$deleteChannelVar` + + diff --git a/content/docs/(functions)/Variables/setMessageVar.mdx b/content/docs/(functions)/Variables/setMessageVar.mdx new file mode 100644 index 00000000..d7409482 --- /dev/null +++ b/content/docs/(functions)/Variables/setMessageVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$setMessageVar" +--- + +Sets a message variable value. + +#### Usage: `$setMessageVar[variable;value;messageID(optional)]` +
+ + +!!exec $setMessageVar[Creator;Mido;$messageID] + + + + + +Check out: `$getMessageVar` + +Check out: `$deleteMessageVar` + + diff --git a/content/docs/(functions)/Variables/setServerVar.mdx b/content/docs/(functions)/Variables/setServerVar.mdx new file mode 100644 index 00000000..9e81c095 --- /dev/null +++ b/content/docs/(functions)/Variables/setServerVar.mdx @@ -0,0 +1,21 @@ +--- +title: "$setServerVar" +--- + +Sets a Server variable value. + +#### Usage: `$setServerVar[variable;value]` +
+ + +!!exec $setServerVar[holder;Mika] + + + + + +Check out: `$getServerVar` + +Check out: `$deleteServerVar` + + diff --git a/content/docs/(functions)/Variables/setUserVar.mdx b/content/docs/(functions)/Variables/setUserVar.mdx new file mode 100644 index 00000000..cd2d935b --- /dev/null +++ b/content/docs/(functions)/Variables/setUserVar.mdx @@ -0,0 +1,23 @@ +--- +title: "$setUserVar" +--- + +Sets a user variable value. + +#### Usage: `$setUserVar[variable;value;userID(optional)]` +
+ + +!!exec $setMessageVar[warnings;5] + + + + + +Check out: `$getUserVar` + +Check out: `$deleteUserVar` + +Check out: `$resetUserVar` + + diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx new file mode 100644 index 00000000..1e62dd79 --- /dev/null +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -0,0 +1,49 @@ +--- +title: "$userLeaderboard" +--- + +Generates a leaderboard of a user variable and return it. + +#### Usage: `$userLeaderboard[variable;asc/desc (optional);{top}.- {username} - {value};list (optional, max=40);page (optional)]` + +Available Variables: +| Variable | Description | +| --- | ----------- | +| \{top} | returns the rank number | +| \{value} | returns the numerical value of the variable | +| \{raw_value} | returns the raw value in case it's not number | +| \{id} | returns the user id | +| \{mention} | returns the user mention | +| \{username} | returns the username | +| \{nickname} | returns the nickname | +| \{tag} | returns the tag like Mido#1234 | +| \{discriminator} | returns the discriminator like 1234 | + +Order: +* `desc`: Will display all the members' ranks from largest to smallest. +* `asc`: Will display all the members' ranks from smallest to largest. + +#### Example: +To use this function your uservar must have numeric values . +
+ + +!!exec $setUserVar[money;100]
+!!exec $userLeaderboard[money;asc;\{top}.- \{username} - \{value}] +
+ +1.- Mido - 100 + +
+ + + +Check out: `$setUserVar` + +Check out: `$getUserVar` + +Check out: `$deleteUserVar` + +Check out: `$resetUserVar` + + diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx new file mode 100644 index 00000000..9657dadc --- /dev/null +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -0,0 +1,21 @@ +--- +title: "$userVarRank" +--- + +Return user var rank returned by $userleaderboard for a single user + +## Usage + +```bash +$uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);User ID (optional)] +``` + +### Example: + + +!!exec Your rank is $userVarRank[xp]

+
+ +Your rank is 3 + +
\ No newline at end of file diff --git a/content/docs/(functions)/Variables/viewChannelVars.mdx b/content/docs/(functions)/Variables/viewChannelVars.mdx new file mode 100644 index 00000000..cd13c814 --- /dev/null +++ b/content/docs/(functions)/Variables/viewChannelVars.mdx @@ -0,0 +1,31 @@ +--- +title: "$viewChannelVars" +--- + +View a list of all the variables that are defined for a specific channel, and search for specific variables using a regular expression query filter + +## Usage + +```bash +$viewChannelVars[Channel ID (default: $channelID);Separator;Query Regex (optional)] +``` + +### Example: + + +!!exec $viewChannelVars

+
+ +ticket, ticket_owner, staff

+
+
+ +### Example (return only variables that starts with ticket): + + +!!exec $viewChannelVars[$channelID; ,;^ticket]

+
+ +ticket, ticket_owner + +
\ No newline at end of file diff --git a/content/docs/(functions)/Variables/viewServerVars.mdx b/content/docs/(functions)/Variables/viewServerVars.mdx new file mode 100644 index 00000000..f5e5a0a9 --- /dev/null +++ b/content/docs/(functions)/Variables/viewServerVars.mdx @@ -0,0 +1,31 @@ +--- +title: "$viewServerVars" +--- + +View a list of all the variables that are defined for the server, and search for specific variables using a regular expression query filter + +## Usage + +```bash +$viewServerVars[Separator;Query Regex (optional)] +``` + +### Example: + + +!!exec $viewServerVars

+
+ +level1_xp, names, staffs, level2_xp, level3_xp, level1_reward

+
+
+ +### Example (return only variables that starts with level): + + +!!exec $viewServerVars[, ;^level]

+
+ +level1_xp, level2_xp, level3_xp,level1_reward + +
diff --git a/content/docs/(functions)/Variables/viewUserVars.mdx b/content/docs/(functions)/Variables/viewUserVars.mdx new file mode 100644 index 00000000..7492fafa --- /dev/null +++ b/content/docs/(functions)/Variables/viewUserVars.mdx @@ -0,0 +1,21 @@ +--- +title: "$viewUserVars" +--- + +View a list of all the variables that are defined for a specific user + +## Usage + +```bash +$viewUserVars[User ID;Separator] +``` + +### Example: + + +!!exec $viewUsersVars[$authorID]

+
+ +xp, money, bonus + +
diff --git a/content/docs/(functions)/meta.json b/content/docs/(functions)/meta.json new file mode 100644 index 00000000..b996eb36 --- /dev/null +++ b/content/docs/(functions)/meta.json @@ -0,0 +1,34 @@ +{ + "title": "Functions", + "pages": [ + "Member", + "Channel", + "Message", + "Interaction", + "Threads", + "Role", + "Server", + "Random", + "Text", + "./Text/Condition", + "Stickers", + "Events", + "Timeout", + "./Text/Embed", + "./Text/Components", + "./Text/Math", + "./Text/textSplit", + "./Text/Array", + "./Text/Object", + "./Text/isandhas", + "./Text/only", + "./Text/Regex", + "Date", + "Variables", + "Bot", + "Useful", + "Cooldown", + "Request", + "Image" + ] +} diff --git a/guide/Changelogs/1.v1.md b/content/docs/Changelogs/1.v1.mdx similarity index 90% rename from guide/Changelogs/1.v1.md rename to content/docs/Changelogs/1.v1.mdx index 20ca9ae4..5f04ced9 100644 --- a/guide/Changelogs/1.v1.md +++ b/content/docs/Changelogs/1.v1.mdx @@ -1,4 +1,6 @@ -# v1.x (Current) +--- +title: "v1.x (Current)" +--- ## v1.6.0 (Beta) > Release Date: TBD @@ -6,21 +8,21 @@ * Support for combined duration expressions in `$parseTime` (e.g. `1h30m` and `1h 30m`). * Support for specifying the output unit in `$parseTime` (`ms`, `s`, `m`, `h`, `d`, `w`, `M`, `y`). -* New trigger for upvoting with a referral link, [learn more here](../Trigger/upvote.md). +* New trigger for upvoting with a referral link, [learn more here](/Trigger/upvote). * New functions `$upvoteTime` and `$upvoteReferralUserID` for the new upvote trigger. * Added a **Custom** option for Custom Bot status (Tier 4+) in **Dashboard > Premium**. * Improved the Word Trigger UI with more intuitive options such as **Starts With**. New commands use the updated system while maintaining backward compatibility. * Support for Forwarded Messages in the new Word Trigger. * `$msg` now supports forward-related options such as `isforward`, `forwardmsgid`, `forwardsvid`, and `forwardchid`. * `$message` now returns the forwarded message content when the message is a forwarded message. -* New trigger for User Commands (Context Menu), [learn more here](../Trigger/app_cmd_user.md). -* New trigger for Message Commands (Context Menu), [learn more here](../Trigger/app_cmd_message.md). +* New trigger for User Commands (Context Menu), [learn more here](/Trigger/app_cmd_user). +* New trigger for Message Commands (Context Menu), [learn more here](/Trigger/app_cmd_message). * New function `$eventTargetID` to retrieve the User ID or Message ID for the new User Command and Message Command triggers. * For testing purposes, the `emit` command now supports the Upvote event. Use `[prefix]emit upvote`. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) -* Fix for message fails to edit if used some curl message like {color} inside `$editIn` +* Fix for message fails to edit if used some curl message like \{color} inside `$editIn` ## v1.5.0 (Main) diff --git a/content/docs/Changelogs/meta.json b/content/docs/Changelogs/meta.json new file mode 100644 index 00000000..7b80bb78 --- /dev/null +++ b/content/docs/Changelogs/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Changelogs", + "pages": [ + "..." + ] +} diff --git a/guide/Changelogs/v1.4.4.md b/content/docs/Changelogs/v1.4.4.mdx similarity index 75% rename from guide/Changelogs/v1.4.4.md rename to content/docs/Changelogs/v1.4.4.mdx index a9fd6fb7..8b756eda 100644 --- a/guide/Changelogs/v1.4.4.md +++ b/content/docs/Changelogs/v1.4.4.mdx @@ -1,8 +1,13 @@ -# V1.4.4 +--- +title: "V1.4.4" +--- + ### New -::: details New functions: $mentionRole, $mentionChannel + + + An easy user-friendly way to mention a role or a channel with name or id. Example @@ -10,11 +15,15 @@ Example $mentionRole[Member] $mentionChannel[updates-beta] ``` -::: -::: details New curl: removebutton, removemenu + + + + + + -You can now use {removebutton} and {removemenu} to remove a menu/button while editing a message content with curl +You can now use \{removebutton} and \{removemenu} to remove a menu/button while editing a message content with curl Usage ``` @@ -32,9 +41,13 @@ my new content {removebutton} ] ``` -::: -::: details New function: $removeEmbed + + + + + + Will help you to remove specific embed from a message or all embeds of a message. @@ -49,10 +62,14 @@ Example (Remove all embeds of a message) $removeEmbed[$channelID;$messageID;all] ``` -::: + + + -::: details New debug command + + + This command is mainly to brief you some basic information, that staff might request such as: * Cluster * Tier @@ -61,14 +78,22 @@ This command is mainly to brief you some basic information, that staff might req > you can see it with `[prefix]debug` ![](https://i.imgur.com/SQWCm0z.png) -::: -::: details New function: $numToWord + + + + + + it will convert the number to it's verbal equivalents i.e 5 to five ![](https://i.imgur.com/aYHQy2C.png) -::: -::: details New Menu Types + + + + + + You can use the new menu types supported by discord which are: `user, role, mention, channel` In addition to the default `text` type @@ -92,8 +117,12 @@ In curl format you can use `{type:the menu type}` like `{type:user}` As shown in the image ![](https://i.imgur.com/X4tHvig.png) -::: -::: details New function: $imageCrop + + + + + + a new image builder function, where it crop a loaded image. @@ -103,8 +132,12 @@ $imageCrop[image name;offset x;offset y;width;height] ``` ![](https://i.imgur.com/xT1US6y.png) -::: -::: details New Word Trigger Tags like %has_attachment% + + + + + + other than %all%, a new new useful tags like %has_attachment% were added. ##### What is a tag? @@ -124,20 +157,32 @@ if you used %thread_created% tag, it will only trigger for thread created discor ##### has poll tag if you used %has_poll% tag, it will only trigger when user send a poll -::: -::: details New function: $poll + + + + + + This function will help you get info about message poll, like question, answers, votes and so on. -You can read about it [here](../Message/poll.md) +You can read about it [here](/Message/poll) + + + + + + -::: -::: details New Trigger: Poll Updates This new trigger is related to any poll updates like: when poll ends ![](https://i.imgur.com/TtG6aUD.png) ![](https://i.imgur.com/b1h1gLu.png) -::: -::: details New Curl: {poll} + + + + + + This new curl name, will help you send a new poll ##### Structure @@ -174,14 +219,22 @@ $sendMessage[ #### Output ![](https://i.imgur.com/Y25DJFG.png) -::: -::: details New Trigger: Scheduled Event Updates + + + + + + This new trigger will help you detect some useful actions of events like: when it starts/ends/created/cancelled ![](https://i.imgur.com/wFt7Pvx.png) ![](https://i.imgur.com/MYlINsO.png) -::: -::: details New Function: $memberJoinedCode + + + + + + This function gonna help you know which invite method and code the user used to join the server, it uses member search behind the scene to retrieve the value. #### Usage @@ -207,8 +260,12 @@ $memberJoinedCode[$userID;code] ``` XABCDEF ``` -::: -::: details New Function: $securityPause + + + + + + This function allows you to pause invites/DMs for the server for a period of time (up to you). #### Usage @@ -232,8 +289,12 @@ $securityPause[24h;yes;yes] ``` > Note: Max Pause Duration is 24h -::: -::: details New Function: $memberSearch + + + + + + This function allows you, to search for a member if his username/nickname started with a query. it does not rely on cache and instead use discord api. #### Usage @@ -254,8 +315,12 @@ By default it is `id`, but you can pick from: ##### Amount to Return: It determines how many users it will return if they match the query, by default it is 1 > When multiple user returned, they will merged together with the `separator` -::: -::: details Update Function: $user + + + + + + Added `displayname` property, that will help you know the user display name if exists ##### Usage @@ -264,11 +329,19 @@ $user[12345678987654321;displayname] ``` > This is not equal to $displayName, as $displayName take user nickname in your server into account. -::: -::: details New Font for Image Builder + + + + + + A new font named `Minecraft` was added to the image builder, this font is useful for game fonts that is a bit pixelated. -::: -::: details Support for Sending V2 Components + + + + + + Discord added V2 components that enhance the way embeds looks (Check the image). So added new curl that allow you to shape them when sending a new messsage, here is a example: @@ -308,18 +381,22 @@ So added new curl that allow you to shape them when sending a new messsage, here ] ``` -* container (`{container}`) can contain: {color}, {spoiler}, {text}, {section}, {gallery}, {separator}, {file}, {button}, {menu}, {row} -* section (`{section}`) can contain: {text}, {thumbnail}, {button}, {spoiler} -* gallery (`{gallery}`) can contain images up to 10 images with {image} +* container (`{container}`) can contain: \{color}, \{spoiler}, \{text}, \{section}, \{gallery}, \{separator}, \{file}, \{button}, \{menu}, \{row} +* section (`{section}`) can contain: \{text}, \{thumbnail}, \{button}, \{spoiler} +* gallery (`{gallery}`) can contain images up to 10 images with \{image} * row (`{row}`) can contain 5 button or 1 menu * spoiler (`{spoiler}`) can be used in some components to mark it as spoiler -* separator (`{separator}`) with options {separator:divider(yes or no):size(1 or 2)} +* separator (`{separator}`) with options \{separator:divider(yes or no):size(1 or 2)} -> Read more about it [here](../CodeReferences/ref.v2_components.md) +> Read more about it [here](/CodeReferences/ref.v2_components) ![](https://i.imgur.com/hTSCGQU.png) -::: -::: details Support Menu in Modal + + + + + + ##### Usage: ```php $modal[... @@ -359,8 +436,12 @@ $modal[ ``` ![](https://i.imgur.com/2iDvQ4A.png) -::: -::: details Support selected option for menus + + + + + + when sending a menu with curl, you can specify the selected options by default (it will be useful for the modal menu) @@ -387,8 +468,12 @@ $sendMessage[ } ] ``` -::: -::: details New Function: $forwardMessage + + + + + + You can now forward a message from a channel to another. ##### Usage: @@ -402,8 +487,12 @@ $forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return Mes ```php $forwardMessage[$channelID;$messageID;Another Channel] ``` -::: -::: details Support User, Role, Channel, Mentionable Menus in Modal + + + + + + You can add other types of menus like user selection in the modal ##### Usage: @@ -440,8 +529,12 @@ $modal[ ``` ![](https://i.imgur.com/LnZt5B7.png) -::: -::: details Get User equipped clan tag and the server + + + + + + An update in $user, to allow you to get the equipped clan tag of the user, in addition to the icon and the server where it is originated from. ##### New options @@ -455,8 +548,12 @@ $user[1234567;clantag] ``` ![](https://i.imgur.com/tcNhcDv.png) -::: -::: details Support Upload File (Attachment) Input for Modal + + + + + + You can now ask the user to upload a file in the modal ##### Usage: @@ -498,9 +595,13 @@ $modal[ ``` ![](https://i.imgur.com/LPEkezb.png) -::: -::: details Support Checkbox & Radio Group Inputs for Modals + + + + + + You can now natively add interactive **Radio Groups** (select one option) and **Checkbox Groups** (select multiple options) directly inside your modals! ##### Usage: @@ -573,8 +674,12 @@ $modal[ #### Output For Radio ![](https://i.imgur.com/kfjr5lQ.png) -::: -::: details Getting User Global Name + + + + + + Return the global name of a user using $globalName or $user @@ -587,10 +692,14 @@ Or $user[User ID;globalname] ``` -::: + + + ### Update -::: details Function: $getMessage + + + This function was completely unusable and produce error on use, now it was fixed @@ -599,9 +708,13 @@ Added alias in options: * userid > author * description > desc -::: -::: details Function: $findNumbers + + + + + + added `separator` input for it, to return all numbers with certain separator **Example** @@ -613,9 +726,13 @@ $findNumbers[my name is mido, i'm 999 years old, living in the 1000th floor in h ``` 999, 1000 ``` -::: -::: details user mention is accepted as input + + + + + + You can use user mention as acceptable user input for functions such as $giveRoles Example @@ -623,16 +740,22 @@ Example $giveRoles[$mention;Role name] ``` will work as expected -::: -::: details Function: $getCooldownTime + + + + + + A new input added to the function called `command token`, it allows you to specify which command cooldown you want to retrieve, instead of the running command New Usage ```php $getCooldownTime[time (i.e 5m);type (i.e user);id (i.e 123456);token (i.e xGhkd)] ``` -::: + + + @@ -641,7 +764,9 @@ $getCooldownTime[time (i.e 5m);type (i.e user);id (i.e 123456);token (i.e xGhkd) -::: details Change of expressions: Soft comparison + + + Now in expression, when comparing between two values with `==` or `!=`, it will compare it after triming the spaces around the values, if you want to compare without trimming use `===` or `!==`. @@ -653,9 +778,13 @@ A === A (false) > This change applies for any function that expect expression such as $if, $checkCondition.. ![](https://i.imgur.com/kaYAsa9.png) -::: -::: details New Permissions: sendvc, usesoundboard, sendpolls,... + + + + + + Added two new permissions to the list: * sendvc: allow user to send voice message * usesoundboard: allow user to use sound board @@ -669,8 +798,12 @@ Added two new permissions to the list: * bypassslowmode: Allows bypassing slowmode restrictions * setvcstatus: Allows setting voice channel status * manageexpression: alias for `manageemoji`, Allows for editing and deleting emojis, stickers, and soundboard sounds created by all users -::: -::: details Function Update: $clearCooldown + + + + + + Added a new optional input: `Command Token` Allows you to clear another command token instead of the running one @@ -678,8 +811,12 @@ New Usage ```php $clearCooldown[type;id;token] ``` -::: -::: details Function Update: $mentioned + + + + + + `Mention Number` input accept `all` as input, which means return all mentioned users with `, ` as separator @@ -694,8 +831,12 @@ id1, id2, id3 ``` -::: -::: details Function Update: $sendWebhook + + + + + + Added `post name` as input, if you would like to create a post inside a forum using the webhook @@ -704,9 +845,13 @@ Example $sendWebhook[Webhook ID;Webhook Token;Your message content;;;;;Post name] ``` -::: -::: details Function Update: $deleteCommand + + + + + + Added `Delete After` input, if you would like to wait a certain amount of time before deleting the message @@ -715,16 +860,24 @@ Added `Delete After` input, if you would like to wait a certain amount of time b $deleteCommand[5m] ``` -::: -::: details Function Update: $clear + + + + + + Added an input to control if you would like to skip deleting pinned messages or not. #### Example ```php $clear[amount;userid;channel;skip pinned messages (yes/no)] ``` -::: -::: details Function Update: $channel, $editChannel, $createChannel + + + + + + Added `rtc region` as input to get/set information about voice channel RTC region. @@ -736,8 +889,12 @@ auto, brazil, hongkong, india, japan, rotterdam, russia, singapore, southafrica, > You can find the usage in the functions: `$channel`, `$editChannel`, `$createChannel` -::: -::: details Function Update: $timezone + + + + + + You can now use UTC+HH:MM or UTC-HH:MM format inside $timezone in case you want a custom timezone offset. ##### Example @@ -748,8 +905,12 @@ After: $hour ``` ![](https://i.imgur.com/d2tQMJ2.png) -::: -::: details Function Update: $getEmbed + + + + + + added `color_hex` property to get the color as hex instead of integer. ##### Example @@ -761,8 +922,12 @@ $getEmbed[$channelID;12345;color_hex] ``` #c133ff ``` -::: -::: details Update Function: $nickname + + + + + + It behaved same as $displayName, so we added new option to control if you would like to return the display name if nickname is not set or not, by default it will return the display name. @@ -770,8 +935,12 @@ It behaved same as $displayName, so we added new option to control if you would ```php $nickname[User ID;Return Display name if no nickname set (yes/no, default is yes)] ``` -::: -::: details New Curl: {removefields} + + + + + + This new curl name, will help you to remove field(s) from your embed ##### Structure @@ -787,16 +956,24 @@ Remove specific fields ```php $editEmbed[$channelID;$messageID;{removefields}] ``` -::: -::: details Update Function: $seq + + + + + + added a new optional option to set the separator of the returned list of numbers, by default it is space ##### Usage ```php $seq[Start;Stop;Step;Separator (default ' ')] ``` -::: -::: details Gradient Color for Role Support + + + + + + $colorRole and $role functions were updated to support the new gradient colors of the role ##### Usage: @@ -815,8 +992,12 @@ $role[Role name;ThirdColor] ```php $colorRole[Admin;green;red] ``` -::: -::: details $msg update to see the message components + + + + + + You can see the message components in form of curl property `components` in $msg ##### Usage: @@ -827,14 +1008,22 @@ $msg[channel ID;message ID;components] ##### Example: ![](https://i.imgur.com/QAkhwPm.png) -::: -::: details Renaming `desc` for modal menu + + + + + + The description of the menu in a modal changed from `{desc}` to `{subtitle}`. So it does not conflict with the option's `{desc}` the original update, was modified as well to reflect that change. -::: -::: details Get voice channel user limit + + + + + + You can get the voice channel user limit using `limit` in $channel it will return 0 when there is no limit. @@ -842,31 +1031,57 @@ it will return 0 when there is no limit. ```php $channel[1234567;limit] ``` -::: -::: details Improvement to $transcriptChannel + + + + + + the function will show more details about the embeds and the attachments of a message as of now, the text will be not be rendered in markdown, in the future it will be further beautified. ![](https://i.imgur.com/y9tGjzI.png) ![](https://i.imgur.com/MPLHWWA.png) -::: -::: details Emiting Timed events + + + + + + Now you can use `!!emit timed ` to emit timed events (that was created with $setTimeout or in dashboard) -::: + + + ### Fix -::: details Displaying generated image with `{image}` inside `{embed}` + + + using `{image:$imageOutput}` inside `{embed}` is now fixed and should show as usual. -::: -::: details Functions: $objectKeys, $objectKeyExists, $objectLoop, $objectValues + + + + + + When a key is `undefined` it breaks the object and return invalid values. -::: -::: details Function: $displayName + + + + + + when it errors when user has no global name set, it will return display name instead. -::: -::: details Position 0 in $editChannel + + + + + + Previously setting position to 0 in $editChannel does not set the channel position at top. Now it will work as intended. -::: \ No newline at end of file + + + \ No newline at end of file diff --git a/guide/CodeReferences/ref.channel_types.md b/content/docs/CodeReferences/ref.channel_types.mdx similarity index 73% rename from guide/CodeReferences/ref.channel_types.md rename to content/docs/CodeReferences/ref.channel_types.mdx index 5501698c..3f7ec254 100644 --- a/guide/CodeReferences/ref.channel_types.md +++ b/content/docs/CodeReferences/ref.channel_types.mdx @@ -1,4 +1,6 @@ -# Understanding Channel Types +--- +title: "Understanding Channel Types" +--- Several functions, like `$channelType` and `$channelCount`, require you to specify a channel type. This page outlines the available channel types and provides an example of their usage. @@ -36,13 +38,13 @@ We'll use the `$channelType` function inside a **public thread**. #### Result: - - - !!exec $channelType - - - thread_public - - + + +!!exec $channelType + + +thread_public + + -###### Tags: \ No newline at end of file +**Tags:** diff --git a/content/docs/CodeReferences/ref.embed.colors.mdx b/content/docs/CodeReferences/ref.embed.colors.mdx new file mode 100644 index 00000000..2e731ff0 --- /dev/null +++ b/content/docs/CodeReferences/ref.embed.colors.mdx @@ -0,0 +1,67 @@ +--- +title: "Acceptable Embed Colors" +--- + +### Name List: +| Name | Equivalent Hex | +|:-----------:|:-------------:| +| Default | #000000 | +| White | #ffffff | +| Aqua | #1abc9c | +| Green | #57f287 | +| Blue | #3498db | +| Yellow | #fee75c | +| Purple | #9b59b6 | +| LuminousVividPink | #e91e63 | +| Fuchsia | #eb459e | +| Gold | #f1c40f | +| Orange | #e67e22 | +| Red | #ed4245 | +| Grey | #95a5a6 | +| Navy | #34495e | +| DarkAqua | #11806a | +| DarkGreen | #1f8b4c | +| DarkBlue | #206694 | +| DarkPurple | #71368a | +| DarkVividPink | #ad1457 | +| DarkGold | #c27c0e | +| DarkOrange | #a84300 | +| DarkRed | #992d22 | +| DarkGrey | #979c9f | +| DarkerGrey | #7f8c8d | +| LightGrey | #bcc0c0 | +| DarkNavy | #2c3e50 | +| Blurple | #5865f2 | +| Greyple | #99aab5 | +| DarkButNotBlack | #2c2f33 | +| NotQuiteBlack | #23272a | +| Transparent | #2b2d31 | +| Trans | #2b2d31 | +| Random | A random color from #000000 to #ffffff | + +### Hex +It can also accept hex colors like `#1abc9c` + +### Example 1 + + +!!exec $sendMessage[
\{desc:You are awesome}
\{color:Aqua}
] +
+ + +You are awesome + + +
+ +### Example 2 + + +!!exec $description[You are awesome}]
$color[#0099ff] +
+ + +You are awesome + + +
diff --git a/guide/CodeReferences/ref.expression.md b/content/docs/CodeReferences/ref.expression.mdx similarity index 99% rename from guide/CodeReferences/ref.expression.md rename to content/docs/CodeReferences/ref.expression.mdx index 276fe358..350da2b3 100644 --- a/guide/CodeReferences/ref.expression.md +++ b/content/docs/CodeReferences/ref.expression.mdx @@ -1,4 +1,6 @@ -# Expressions +--- +title: "Expressions" +--- ## Why Use Expressions? diff --git a/guide/CodeReferences/ref.imgbuild.position.md b/content/docs/CodeReferences/ref.imgbuild.position.mdx similarity index 98% rename from guide/CodeReferences/ref.imgbuild.position.md rename to content/docs/CodeReferences/ref.imgbuild.position.mdx index 69ef0ab5..a2678b39 100644 --- a/guide/CodeReferences/ref.imgbuild.position.md +++ b/content/docs/CodeReferences/ref.imgbuild.position.mdx @@ -1,4 +1,6 @@ -# Image Builder: Positioning Elements +--- +title: "Image Builder: Positioning Elements" +--- Positioning images and objects is a crucial step in building your images. Position is defined by two values, X and Y, which determine the object's location on the canvas. diff --git a/guide/CodeReferences/ref.imgbuild.size.md b/content/docs/CodeReferences/ref.imgbuild.size.mdx similarity index 98% rename from guide/CodeReferences/ref.imgbuild.size.md rename to content/docs/CodeReferences/ref.imgbuild.size.mdx index c1da8292..fc6f3858 100644 --- a/guide/CodeReferences/ref.imgbuild.size.md +++ b/content/docs/CodeReferences/ref.imgbuild.size.mdx @@ -1,4 +1,6 @@ -# Image Builder: Understanding Size +--- +title: "Image Builder: Understanding Size" +--- Sizing is crucial for determining the dimensions of objects and images within your canvas. This document explains how size works in our image builder functions. diff --git a/guide/CodeReferences/ref.message_curl_format.md b/content/docs/CodeReferences/ref.message_curl_format.mdx similarity index 62% rename from guide/CodeReferences/ref.message_curl_format.md rename to content/docs/CodeReferences/ref.message_curl_format.mdx index ed84215f..29db8563 100644 --- a/guide/CodeReferences/ref.message_curl_format.md +++ b/content/docs/CodeReferences/ref.message_curl_format.mdx @@ -1,4 +1,6 @@ -# Message Curl Format +--- +title: "Message Curl Format" +--- Some functions, like `$sendMessage` and `$editMessage`, accept message content as an argument. While you can send plain text, you might want to send a more visually appealing embed instead. @@ -12,46 +14,46 @@ This format uses curly braces `{}` to define different aspects of your message. Here's how to send an embed with the title "Hello" and the description "World": - - - !!exec $sendMessage[{title:Hello}{description:World}] - - - - - World - - - - + + +!!exec $sendMessage[\{title:Hello}\{description:World}] + + + + +World + + + + ### Available Curl Formats: | Curl Format | Description | Example (click to see output) | |:-----------:|-------------|---------| | `{content:text}` | to set message content | `{content:Message content}` | -| `{title:text}` | Adds a title to the embed. | [{title:My name is $username}](https://i.imgur.com/vUfjDLa.png) | -| `{url:link}` | Makes the title a clickable link. | [{url:https://discord.com}](https://i.imgur.com/k234oP0.png) | -| `{footer:text:url}` | Adds a footer with optional image. The URL is for the footer icon. | [{footer:You see my small profile?:$authorAvatar}](https://i.imgur.com/MbG9VQ3.png) | -| `{description:text}` | Sets the main text content of the embed. | [{description:Do you know that this month is $month?}](https://i.imgur.com/BV7wZpY.png) | -| `{desc:text}` | An alias (shorter version) of `{description:text}`. | {desc:Hello World, do you see this description?} | -| `{color:hex}` | Sets the color of the embed's side border. Use a hex code (like `#ff0000`) or a color name (like `RED`). | [{color:RED} or {color:#ff0000}](https://i.imgur.com/f9no81k.png) | -| `{author:text:image url:link url}` | Adds an author section to the embed. You can specify the author's name, an image URL for their avatar, and a URL that the author's name links to. | [{author:$username:$authorAvatar:$authorAvatar}](https://i.imgur.com/2DU2dwn.png) | -| `{thumbnail:url}` | Adds a small image in the top right corner of the embed. | [{thumbnail:$authorAvatar}](https://i.imgur.com/HruXoXs.png) | -| `{field:name:value:inline}` | Adds a field (a small section with a title and value). Set `inline` to `true` or `false` (or `yes`/`no`) to make the field appear next to other inline fields. | [{field:My name:$username}](https://i.imgur.com/zSdpHiW.png) | -| `{removefields:field number 1:field number 2:...}` | remove field(s), leave input empty to remove all fields | {removefields:1:2} | -| `{timestamp:ms}` | Adds a timestamp to the embed. If you don't provide a value, it uses the current time. You can also provide a specific timestamp in milliseconds. | [{timestamp} or {timestamp:1680871946176}](https://i.imgur.com/2CEzTcp.png) | -| `{image:url}` | Adds a large image at the bottom of the embed. | [{image:$authorAvatar}](https://i.imgur.com/Gmrxc69.png) | -| `{reactions:emoji,emoji2,...}` | Adds reactions to the message after it's sent. Separate multiple emojis with commas. Use the standard Discord emoji format (e.g., `:+1:`). | [{reactions: :+1:, :-1:}](https://i.imgur.com/Niff1PI.png) | -| `{reaction:emoji,emoji2,...}` | Alias for `{reactions}`. | {reaction: :+1:, :-1:} | -| `{suppress:yes/no}` | Suppresses the embed for URLs in the message, preventing link previews. | [{suppress:yes}](https://i.imgur.com/xomAWFd.png) | -| `{delete:time(s/m/h...)}` | Deletes the message automatically after a certain amount of time. Use `s` for seconds, `m` for minutes, `h` for hours, etc. | {delete:5s} | -| `{button:Name:style:emoji:button id:new line(yes/no):disabled(yes/no)}` | Adds a button to the message. `style` can be `blue`, `green`, `red`, `grey` or a url, `emoji` is optional, `new line` indicates if the button should be in a new line, `disabled` to disable the button | [{button:Green button:green::id1}](https://i.imgur.com/CIj0FMU.png) | -| `{edit:Time in ms:New Content}` | Edits the message after a specified time (in milliseconds) with new content. | [{edit:5s:My edited content}](https://i.imgur.com/p7LsT5C.png) | +| `{title:text}` | Adds a title to the embed. | [\{title:My name is $username}](https://i.imgur.com/vUfjDLa.png) | +| `{url:link}` | Makes the title a clickable link. | [\{url:https://discord.com}](https://i.imgur.com/k234oP0.png) | +| `{footer:text:url}` | Adds a footer with optional image. The URL is for the footer icon. | [\{footer:You see my small profile?:$authorAvatar}](https://i.imgur.com/MbG9VQ3.png) | +| `{description:text}` | Sets the main text content of the embed. | [\{description:Do you know that this month is $month?}](https://i.imgur.com/BV7wZpY.png) | +| `{desc:text}` | An alias (shorter version) of `{description:text}`. | \{desc:Hello World, do you see this description?} | +| `{color:hex}` | Sets the color of the embed's side border. Use a hex code (like `#ff0000`) or a color name (like `RED`). | [\{color:RED} or \{color:#ff0000}](https://i.imgur.com/f9no81k.png) | +| `{author:text:image url:link url}` | Adds an author section to the embed. You can specify the author's name, an image URL for their avatar, and a URL that the author's name links to. | [\{author:$username:$authorAvatar:$authorAvatar}](https://i.imgur.com/2DU2dwn.png) | +| `{thumbnail:url}` | Adds a small image in the top right corner of the embed. | [\{thumbnail:$authorAvatar}](https://i.imgur.com/HruXoXs.png) | +| `{field:name:value:inline}` | Adds a field (a small section with a title and value). Set `inline` to `true` or `false` (or `yes`/`no`) to make the field appear next to other inline fields. | [\{field:My name:$username}](https://i.imgur.com/zSdpHiW.png) | +| `{removefields:field number 1:field number 2:...}` | remove field(s), leave input empty to remove all fields | \{removefields:1:2} | +| `{timestamp:ms}` | Adds a timestamp to the embed. If you don't provide a value, it uses the current time. You can also provide a specific timestamp in milliseconds. | [\{timestamp} or \{timestamp:1680871946176}](https://i.imgur.com/2CEzTcp.png) | +| `{image:url}` | Adds a large image at the bottom of the embed. | [\{image:$authorAvatar}](https://i.imgur.com/Gmrxc69.png) | +| `{reactions:emoji,emoji2,...}` | Adds reactions to the message after it's sent. Separate multiple emojis with commas. Use the standard Discord emoji format (e.g., `:+1:`). | [\{reactions: :+1:, :-1:}](https://i.imgur.com/Niff1PI.png) | +| `{reaction:emoji,emoji2,...}` | Alias for `{reactions}`. | \{reaction: :+1:, :-1:} | +| `{suppress:yes/no}` | Suppresses the embed for URLs in the message, preventing link previews. | [\{suppress:yes}](https://i.imgur.com/xomAWFd.png) | +| `{delete:time(s/m/h...)}` | Deletes the message automatically after a certain amount of time. Use `s` for seconds, `m` for minutes, `h` for hours, etc. | \{delete:5s} | +| `{button:Name:style:emoji:button id:new line(yes/no):disabled(yes/no)}` | Adds a button to the message. `style` can be `blue`, `green`, `red`, `grey` or a url, `emoji` is optional, `new line` indicates if the button should be in a new line, `disabled` to disable the button | [\{button:Green button:green::id1}](https://i.imgur.com/CIj0FMU.png) | +| `{edit:Time in ms:New Content}` | Edits the message after a specified time (in milliseconds) with new content. | [\{edit:5s:My edited content}](https://i.imgur.com/p7LsT5C.png) | | `{file:Name:Content}` | Adds an attachment file to the message, using the provided text as the file content. | No example | | `{attachment:Name:URL}` | Adds an attachment file to the message, fetching the file from the given URL. | No example | | `{deletecommand}` | Deletes the original command message immediately after the new message is sent. | No example | -| `{deletecommand:time}` | Deletes the original command message after a specified time (e.g., `5s`). | {deletecommand:5s} | +| `{deletecommand:time}` | Deletes the original command message after a specified time (e.g., `5s`). | \{deletecommand:5s} | | `{reply:message id}` | Replies to a specific message using its ID. | No example | | `{reply_mention:yes/no}` | Determines whether the user being replied to should be mentioned (pinged). | No example | | `{interaction}` | Sends the message through an interaction (e.g., a slash command). This is often required for ephemeral messages. | No example | @@ -59,21 +61,23 @@ Here's how to send an embed with the title "Hello" and the description "World": | `{private:yes/no}` | Alias for `{ephemeral:yes/no}`. | No example | | `{stickers:Sticker 1 ID:Sticker 2 ID:Sticker 3 ID}` | Sends stickers using their IDs. | No example | | `{pin}` | Pins the sent message to the channel. | No example | -| `{silent}` | Sends the message in silent mode, which doesn't send push notifications to Discord users. | [{silent}](https://i.imgur.com/HhSr6ec.png) | +| `{silent}` | Sends the message in silent mode, which doesn't send push notifications to Discord users. | [\{silent}](https://i.imgur.com/HhSr6ec.png) | | `{removebutton:id}` | remove a button with id, empty id will remove all buttons | `{removebutton:mybtnid}` | | `{removemenu:id}` | remove a menu with id, empty id will remove all buttons | `{removemenu:mybtnid}` | -| `{poll:data}` | add a new poll to the message, learn more about data [here](../CodeReferences/ref.poll_data.md) | see example [here](../CodeReferences/ref.poll_data.md) | -| `{container:data}` | add container for discord v2 components. | [see example here](../CodeReferences/ref.v2_components.md) | +| `{poll:data}` | add a new poll to the message, learn more about data [here](/CodeReferences/ref.poll_data) | see example [here](/CodeReferences/ref.poll_data) | +| `{container:data}` | add container for discord v2 components. | [see example here](/CodeReferences/ref.v2_components) | -::: tip Note + + Sometimes values contain special characters like colons (`:`), square brackets (`[` and `]`), semicolons (`:`), or backslashes (`\`). You need to *escape* these characters by placing a backslash (`\`) before them to prevent unexpected results. For example, to use a colon in your text, you would write `\:`. If your original format is: `{author:I love:World}` Correct is: `{author:I love\:World} ` -::: -###### Tags: \ No newline at end of file + + +**Tags:** diff --git a/guide/CodeReferences/ref.message_types.md b/content/docs/CodeReferences/ref.message_types.mdx similarity index 98% rename from guide/CodeReferences/ref.message_types.md rename to content/docs/CodeReferences/ref.message_types.mdx index af1514b9..e96e1bf7 100644 --- a/guide/CodeReferences/ref.message_types.md +++ b/content/docs/CodeReferences/ref.message_types.mdx @@ -1,4 +1,6 @@ -# Understanding Message Types +--- +title: "Understanding Message Types" +--- The `$messageType` function is your key to identifying the kind of message you're dealing with. It returns a specific type, allowing you to tailor your bot's behavior accordingly. Think of it as a way to understand the *context* of a message beyond just the text. diff --git a/guide/CodeReferences/ref.permissions_list.md b/content/docs/CodeReferences/ref.permissions_list.mdx similarity index 98% rename from guide/CodeReferences/ref.permissions_list.md rename to content/docs/CodeReferences/ref.permissions_list.mdx index 48dc3aa1..cea4ef42 100644 --- a/guide/CodeReferences/ref.permissions_list.md +++ b/content/docs/CodeReferences/ref.permissions_list.mdx @@ -1,4 +1,6 @@ -# Understanding Channel, User, and Role Permissions +--- +title: "Understanding Channel, User, and Role Permissions" +--- Several bot functions, such as `$modifyChannelPerms` and `$modifyRolePerms`, require you to specify permission names. This page provides a comprehensive list of these permission names and their descriptions. diff --git a/guide/CodeReferences/ref.poll_data.md b/content/docs/CodeReferences/ref.poll_data.mdx similarity index 85% rename from guide/CodeReferences/ref.poll_data.md rename to content/docs/CodeReferences/ref.poll_data.mdx index c7f8009d..b709427f 100644 --- a/guide/CodeReferences/ref.poll_data.md +++ b/content/docs/CodeReferences/ref.poll_data.mdx @@ -1,5 +1,8 @@ -# Poll Curl Format -You can use {poll:data} to send a message with a poll +--- +title: "Poll Curl Format" +--- + +You can use \{poll:data} to send a message with a poll ### Usage ``` diff --git a/guide/CodeReferences/ref.time_format.md b/content/docs/CodeReferences/ref.time_format.mdx similarity index 97% rename from guide/CodeReferences/ref.time_format.md rename to content/docs/CodeReferences/ref.time_format.mdx index bc4d43db..a88e3a2b 100644 --- a/guide/CodeReferences/ref.time_format.md +++ b/content/docs/CodeReferences/ref.time_format.mdx @@ -1,4 +1,6 @@ -# Understanding Time Formats +--- +title: "Understanding Time Formats" +--- Many functions require you to specify a time format to correctly construct date and time values. This guide explains the accepted time format macros you can use. diff --git a/guide/CodeReferences/ref.v2_components.md b/content/docs/CodeReferences/ref.v2_components.mdx similarity index 91% rename from guide/CodeReferences/ref.v2_components.md rename to content/docs/CodeReferences/ref.v2_components.mdx index 8f22c4c7..120f9b1e 100644 --- a/guide/CodeReferences/ref.v2_components.md +++ b/content/docs/CodeReferences/ref.v2_components.mdx @@ -1,5 +1,8 @@ -# Discord V2 Components Curl Format -You can use {container:data} to send a message with v2 component +--- +title: "Discord V2 Components Curl Format" +--- + +You can use \{container:data} to send a message with v2 component ### Usage ``` @@ -20,7 +23,7 @@ You can use {container:data} to send a message with v2 component * Total text content length in the message cannot exceed 4000 #### Section structure -Section allows you to add a text + image + button together inside a container. A section should contain at least one text and one accessory (image or button). If you are putting this inside a container and want *only* the thumbnail to be a spoiler, use {spoiler:yes} inside the section. +Section allows you to add a text + image + button together inside a container. A section should contain at least one text and one accessory (image or button). If you are putting this inside a container and want *only* the thumbnail to be a spoiler, use \{spoiler:yes} inside the section. The structure is: ``` {section: @@ -65,7 +68,7 @@ You can set a file in the container for downloading, the structure is: ``` #### Separator structure -You can set a separator between other components in the container with {separator}, the structure is: +You can set a separator between other components in the container with \{separator}, the structure is: ``` {separator:divide (yes/no):size (1 or 2)} ``` diff --git a/guide/CodeReferences/specialCharacters.md b/content/docs/CodeReferences/specialCharacters.mdx similarity index 74% rename from guide/CodeReferences/specialCharacters.md rename to content/docs/CodeReferences/specialCharacters.mdx index 6d8a42c0..9c028498 100644 --- a/guide/CodeReferences/specialCharacters.md +++ b/content/docs/CodeReferences/specialCharacters.mdx @@ -1,4 +1,6 @@ -# Special Characters +--- +title: "Special Characters" +--- Here is a list, of characters found "special": diff --git a/guide/Contribution_Info/Templating.md b/content/docs/Contribution_Info/Templating.mdx similarity index 98% rename from guide/Contribution_Info/Templating.md rename to content/docs/Contribution_Info/Templating.mdx index 5dcb894d..bf908732 100644 --- a/guide/Contribution_Info/Templating.md +++ b/content/docs/Contribution_Info/Templating.mdx @@ -1,4 +1,6 @@ -# Templating System +--- +title: "Templating System" +--- This page explains how to use the new templating system and how to make your commands compatible with it. The new system includes parsing of Metadata and Inputs, making command creation and customization easier. @@ -122,7 +124,8 @@ $onTemplate[type;field;title;help;default value] * **`default value`:** The value that's pre-filled or pre-selected in the input field. -:::warning Escaping Special Characters + + You **cannot** use the characters `[` `]` and `;` directly within the `$onTemplate` function. They are unsupported by the parser. Use the following escape sequences instead: @@ -130,7 +133,8 @@ Use the following escape sequences instead: * `#RIGHT#` for `]` * `#LEFT#` for `[` * `#SEMI#` for `;` -::: + + #### Example Ticket System diff --git a/guide/Contribution_Info/function_template.md b/content/docs/Contribution_Info/function_template.mdx similarity index 95% rename from guide/Contribution_Info/function_template.md rename to content/docs/Contribution_Info/function_template.mdx index 72f5dc2a..af4c9607 100644 --- a/guide/Contribution_Info/function_template.md +++ b/content/docs/Contribution_Info/function_template.mdx @@ -1,4 +1,6 @@ -# Function Template +--- +title: "Function Template" +--- ```md # $FUNCTION diff --git a/guide/Contribution_Info/main.md b/content/docs/Contribution_Info/main.mdx similarity index 87% rename from guide/Contribution_Info/main.md rename to content/docs/Contribution_Info/main.mdx index dbf0688a..e6a66ded 100644 --- a/guide/Contribution_Info/main.md +++ b/content/docs/Contribution_Info/main.mdx @@ -1,4 +1,6 @@ -# Contributing to the Documentation +--- +title: "Contributing to the Documentation" +--- This guide outlines how to contribute to the project documentation. We appreciate your help in making our documentation clear, accurate, and comprehensive! @@ -6,7 +8,7 @@ This guide outlines how to contribute to the project documentation. We apprecia Please adhere to the following guidelines when contributing: -* **Use the Template:** A template ensures consistency across all function documentation. You can find the template [here](./function_template.md). +* **Use the Template:** A template ensures consistency across all function documentation. You can find the template [here](/Contribution_Info/function_template). * **Clear and Correct English:** Please use proper English grammar and spelling. Avoid slang and profanity. * **Descriptive Pull Requests:** When submitting a pull request, clearly explain the changes you've made in the title and description. Be specific about what you've added, modified, or removed. * **Document What You Know:** Only document functions you are familiar with. Accuracy is paramount. Double-check your work to avoid introducing errors. @@ -37,7 +39,7 @@ Here's a step-by-step guide to adding documentation for a function that doesn't * _Example: Create a file named `botCount.md`._ ![](https://i.ibb.co/BLCbs7q/image.png) -4. **Use the Template and Populate It:** Use the [template](./function_template.md) as a starting point. Fill in the template with accurate and detailed information about the function. You can also refer to existing function documentation files for inspiration. +4. **Use the Template and Populate It:** Use the [template](/Contribution_Info/function_template) as a starting point. Fill in the template with accurate and detailed information about the function. You can also refer to existing function documentation files for inspiration. ![](https://i.ibb.co/X5M0s01/image.png) 5. **Save and Commit:** Save your changes and commit them to your forked repository with a descriptive commit message. diff --git a/content/docs/Contribution_Info/meta.json b/content/docs/Contribution_Info/meta.json new file mode 100644 index 00000000..34e210e6 --- /dev/null +++ b/content/docs/Contribution_Info/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Contribute", + "pages": [ + "..." + ] +} diff --git a/guide/Guide/1.create.md b/content/docs/Guide/1.create.mdx similarity index 91% rename from guide/Guide/1.create.md rename to content/docs/Guide/1.create.mdx index 6c151606..8390411d 100644 --- a/guide/Guide/1.create.md +++ b/content/docs/Guide/1.create.mdx @@ -1,18 +1,19 @@ --- +title: "Creating Custom Commands" weight: 1 --- -# Creating Custom Commands - Creating custom commands for your server is easier than it looks. Read through this guide, and you'll be building your own commands in no time. ## Creating a New Command To create a new command, you must first login into our [dashboard](https://ccommandbot.com/dashboard). -::: tip Dashboard Guide + + On your first visit, you'll be greeted with a helpful dashboard tour. We highly recommend taking it since it will save you a lot of time figuring things out. -::: + + After logging in, select the server where you'd like to create a new command. ![](/images/guide/creating-cc/0.png) diff --git a/guide/Guide/2.faq.md b/content/docs/Guide/2.faq.mdx similarity index 63% rename from guide/Guide/2.faq.md rename to content/docs/Guide/2.faq.mdx index 92872a0c..76fad0cd 100644 --- a/guide/Guide/2.faq.md +++ b/content/docs/Guide/2.faq.mdx @@ -1,25 +1,44 @@ --- +title: "Frequently Asked Questions" weight: 7 --- -# Frequently Asked Questions + + -:::details Why are there cooldowns on certain functions? As our bot grows, we are still subject to Discord's standard rate limits. Cooldowns help us stay within these limits and **prevent the bot from being penalized**, ensuring a smooth experience for everyone. -::: -:::details How can I disable the command cooldown message? + + + + + + It is not possible to disable this message. You can instead **limit this command to only specific roles or channels**, or **set channel slowmode to 5 seconds** to avoid it. -::: -:::details Where can I get help with CC? + + + + + + We are ready to assist you with your code in our [Discord server](https://ccommandbot.com/join). Keep in mind that **we will not code for you**, we want to encourage you to learn coding yourself, since that's the best for everyone. -::: -:::details How many variables can I create? + + + + + + Currently there is **no limitation** to how many variables you can create. However, single **variable can contain up to 5120 characters**. -::: -:::details Why is my embed content being cut off? + + + + + + If you use curl method for sending embeds, the bot may cut your content if it contains a colon (`:`). To avoid this, you can either **use the `$buffer` function** or **replace all colons with `#COLON#`**. -::: + + + diff --git a/guide/Guide/3.policy.md b/content/docs/Guide/3.policy.mdx similarity index 99% rename from guide/Guide/3.policy.md rename to content/docs/Guide/3.policy.mdx index 0b17a2ee..7f364896 100644 --- a/guide/Guide/3.policy.md +++ b/content/docs/Guide/3.policy.mdx @@ -1,9 +1,8 @@ --- +title: "Privacy Policy" hidden: true --- -# Privacy Policy - **Last Updated:** July 27, 2026 We take your privacy seriously and are committed to protecting the information required to operate Custom Command Bot ("the Bot"). This Privacy Policy explains what information we collect, how it is used, how long it is retained, and your rights regarding that information. diff --git a/guide/Guide/4.template.md b/content/docs/Guide/4.template.mdx similarity index 66% rename from guide/Guide/4.template.md rename to content/docs/Guide/4.template.mdx index 684941ab..52513e68 100644 --- a/guide/Guide/4.template.md +++ b/content/docs/Guide/4.template.mdx @@ -1,9 +1,8 @@ --- +title: "Using Templates" weight: 6 --- -# Using Templates - Templates are pre-built commands created by our awesome community. They're designed to be easily imported and set up directly from the dashboard, no coding knowledge required. ## Importing Templates @@ -23,24 +22,24 @@ After choosing what to import, click next to continue. Some commands may require Once everything is done, you're ready to go! After the commands are clonned, it will show you how the commands are used. To test if it works, we can try it out in Discord now. - - !wordle - - - - There is a word of 5 characters, can you guess it? - - - [ ] [ ] [ ] [ ] [ ] - - - - - - Guess - - - + +!wordle + + + +There is a word of 5 characters, can you guess it? + + +[ ] [ ] [ ] [ ] [ ] + + + + + +Guess + + + ## Sharing Your Templates diff --git a/guide/Guide/5.comment.md b/content/docs/Guide/5.comment.mdx similarity index 51% rename from guide/Guide/5.comment.md rename to content/docs/Guide/5.comment.mdx index bc4d86f8..b2cfcd72 100644 --- a/guide/Guide/5.comment.md +++ b/content/docs/Guide/5.comment.mdx @@ -1,14 +1,15 @@ --- +title: "Code and Comments" weight: 3 --- -# Code and Comments - Comments are lines in your code that are ignored by the interpreter. They're useful for making your code easier to understand. -::: info Info + + Comments are important to make your code readable, and are widely used across this documentation. -::: + + ## Single-Line Comments @@ -29,17 +30,17 @@ Your age is: $age ``` - - !!exec $let[userYear;2000]

- // User's age
- $let[age;$math[$year-$userYear]] // $userYear is year the user was born in

- // Send a message with age
- Your age is: $age

- // TODO: Save into user variable -
- - Your age is: 26 - + +!!exec $let[userYear;2000]

+// User's age
+$let[age;$math[$year-$userYear]] // $userYear is year the user was born in

+// Send a message with age
+Your age is: $age

+// TODO: Save into user variable +
+ +Your age is: 26 +
## Multi-Line Comments @@ -61,20 +62,22 @@ Your age is: $age /* <- The variable */ ``` - - !!exec /*
- userYear -> Year the user was born in
- age -> User's age
- */

- $let[userYear;2000]
- $let[age;$math[$year /* current year - born year */ - $userYear]]
- Your age is: $age /* <- The variable */ -
- - Your age is: 26 - + +!!exec /*
+userYear -> Year the user was born in
+age -> User's age
+*/

+$let[userYear;2000]
+$let[age;$math[$year /* current year - born year */ - $userYear]]
+Your age is: $age /* \<- The variable */ +
+ +Your age is: 26 +
-::: tip Dashboard Editor + + In the dashboard editor, you can quickly comment out selected line(s) by pressing `Ctrl + /` -::: + + diff --git a/guide/Guide/6.variables.md b/content/docs/Guide/6.variables.mdx similarity index 84% rename from guide/Guide/6.variables.md rename to content/docs/Guide/6.variables.mdx index 7ac3b99a..7e650521 100644 --- a/guide/Guide/6.variables.md +++ b/content/docs/Guide/6.variables.mdx @@ -1,9 +1,8 @@ --- +title: "Using Variables" weight: 4 --- -# Using Variables - Variables are important for storing and manipulating data within Custom Command. There are temporary and permanent variables. ## Temporary Variables @@ -27,14 +26,14 @@ User’s name: $name ``` - - !!exec $let[uid;$randomUserID]
- $let[name;$displayName[$uid]]

- Random User's name: $name -
- - Random User's name: Member - + +!!exec $let[uid;$randomUserID]
+$let[name;$displayName[$uid]]

+Random User's name: $name +
+ +Random User's name: Member +
## Permanent Variables @@ -71,6 +70,8 @@ Your level: $getUserVar[level] // 4 $increaseUserVar[level;1] Your new level: $getUserVar[level] // 5 ``` -::: tip Where are the variables saved? -All variables are saved in our database. If you have privacy concerns, please read our [Privacy Policy](../Legal/policy.md). -::: + + +All variables are saved in our database. If you have privacy concerns, please read our [Privacy Policy](/Legal/policy). + + diff --git a/guide/Guide/7.array.md b/content/docs/Guide/7.array.mdx similarity index 54% rename from guide/Guide/7.array.md rename to content/docs/Guide/7.array.mdx index 0e39e6a7..5c934ff9 100644 --- a/guide/Guide/7.array.md +++ b/content/docs/Guide/7.array.mdx @@ -1,9 +1,8 @@ --- +title: "Using Arrays" weight: 5 --- -# Using Arrays - Array is a list of items that you can loop through, or join with a specific separator. Once you create an array, you can use functions to modify it or retrieve information from it. @@ -23,15 +22,15 @@ All items: $arrayJoin[/] ``` - - !!exec $arrayCreate[Apple Banana Kiwi; ]

- First item: $arrayGet[1]
- Last item: $arrayGet[$arrayLength]
- All items: $arrayJoin[/] -
- - First item: Apple
- Last item: Kiwi
- All items: Apple/Banana/Kiwi -
+ +!!exec $arrayCreate[Apple Banana Kiwi; ]

+First item: $arrayGet[1]
+Last item: $arrayGet[$arrayLength]
+All items: $arrayJoin[/] +
+ +First item: Apple
+Last item: Kiwi
+All items: Apple/Banana/Kiwi +
diff --git a/content/docs/Guide/meta.json b/content/docs/Guide/meta.json new file mode 100644 index 00000000..e75116e1 --- /dev/null +++ b/content/docs/Guide/meta.json @@ -0,0 +1,13 @@ +{ + "pages": [ + "1.create", + "syntax", + "5.comment", + "6.variables", + "7.array", + "4.template", + "2.faq", + "...", + "!3.policy" + ] +} diff --git a/guide/Guide/syntax.md b/content/docs/Guide/syntax.mdx similarity index 68% rename from guide/Guide/syntax.md rename to content/docs/Guide/syntax.mdx index 65e8eb83..6d188587 100644 --- a/guide/Guide/syntax.md +++ b/content/docs/Guide/syntax.mdx @@ -1,9 +1,8 @@ --- +title: "Syntax" weight: 2 --- -# Syntax - Learning about the syntax used by this bot is necessary to understand how to write commands. ## Syntax Overview @@ -40,9 +39,11 @@ A function is a special instruction that begins with a dollar sign (`$`), for ex All arguments are kept inside of square brackets (`[HERE]`). Function names are case insensitive. -::: info How to execute functions + + All functions can be either executed by writing a command in the dashboard, or using the built in `!!exec` command. -::: + + ### Example @@ -53,12 +54,12 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] ``` - - !!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] - - - 2 = 2 = 2 - + +!!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] + + +2 = 2 = 2 + Function doesn't have to be closed at the same line where it was opened: @@ -70,17 +71,17 @@ Click to reveal: ||$math[2^11]||] ``` - - !!exec $title[Math question]
- $description[What is 2^11?
- Click to reveal: ||$math[2^11]||] -
- - - What is 2^11?
- Click to reveal: 2048 -
-
+ +!!exec $title[Math question]
+$description[What is 2^11?
+Click to reveal: ||$math[2^11]||] +
+ + +What is 2^11?
+Click to reveal: 2048 +
+
## Function Actions @@ -110,10 +111,10 @@ $msg[Channel ID;Message ID;Option;Additional 1;Additional 2] Example of using `$msg` with multiple arguments - - !!exec Message content: $msg[$channelID;$messageID;content] - - - Message content: !!exec Message content: $msg[$channelID;$messageID;content] - + +!!exec Message content: $msg[$channelID;$messageID;content] + + +Message content: !!exec Message content: $msg[$channelID;$messageID;content] + diff --git a/content/docs/Legal/meta.json b/content/docs/Legal/meta.json new file mode 100644 index 00000000..cf0ac539 --- /dev/null +++ b/content/docs/Legal/meta.json @@ -0,0 +1,8 @@ +{ + "title": "Legal", + "pages": [ + "..." + ], + "collapsible": false, + "defaultOpen": true +} diff --git a/guide/Legal/policy.md b/content/docs/Legal/policy.mdx similarity index 99% rename from guide/Legal/policy.md rename to content/docs/Legal/policy.mdx index 4356cf3c..3f743fd9 100644 --- a/guide/Legal/policy.md +++ b/content/docs/Legal/policy.mdx @@ -1,4 +1,6 @@ -# Privacy Policy +--- +title: "Privacy Policy" +--- **Last Updated:** July 27, 2026 diff --git a/guide/Legal/tos.md b/content/docs/Legal/tos.mdx similarity index 99% rename from guide/Legal/tos.md rename to content/docs/Legal/tos.mdx index 0c5d6283..61b0a88c 100644 --- a/guide/Legal/tos.md +++ b/content/docs/Legal/tos.mdx @@ -1,4 +1,6 @@ -# Terms of Service +--- +title: "Terms of Service" +--- **Effective Date:** July 26, 2026 diff --git a/guide/Other/CustomBot.md b/content/docs/Other/CustomBot.mdx similarity index 98% rename from guide/Other/CustomBot.md rename to content/docs/Other/CustomBot.mdx index 5c36b4be..98ba4847 100644 --- a/guide/Other/CustomBot.md +++ b/content/docs/Other/CustomBot.mdx @@ -1,4 +1,6 @@ -# Setting Up Your Custom Bot +--- +title: "Setting Up Your Custom Bot" +--- This guide will walk you through setting up your own custom bot. This feature is available to users who have achieved Tier 3+ access, either by redeeming it or by winning it in our support server. diff --git a/guide/Other/curl.md b/content/docs/Other/curl.mdx similarity index 98% rename from guide/Other/curl.md rename to content/docs/Other/curl.mdx index 38b28aea..57507807 100644 --- a/guide/Other/curl.md +++ b/content/docs/Other/curl.mdx @@ -1,4 +1,6 @@ -# Curl Arguments +--- +title: "Curl Arguments" +--- Tired of long, complicated function calls with tons of empty parameters? Curl arguments are here to help! They provide a more readable and intuitive way to pass options to functions, making your code cleaner and easier to understand. diff --git a/guide/Other/embedBuilder.md b/content/docs/Other/embedBuilder.mdx similarity index 79% rename from guide/Other/embedBuilder.md rename to content/docs/Other/embedBuilder.mdx index 5e48ff30..3556835a 100644 --- a/guide/Other/embedBuilder.md +++ b/content/docs/Other/embedBuilder.mdx @@ -1,34 +1,36 @@ -# Creating Embeds with the Embed Builder +--- +title: "Creating Embeds with the Embed Builder" +--- This guide will walk you through using the Embed Builder within the dashboard to create and send custom embeds to your Discord server. ## Accessing the Embed Creator 1. After logging into the dashboard, navigate to the `Embed Creator` tab. - ![](./images/embedBuilder/1.png) + ![](/images/other/embedBuilder/1.png) ## Customizing Your Embed 2. In the `Embed Editor` section, you can define all the details of your embed, such as the title, description, color, fields, author, and more. Experiment with the options to create the perfect embed for your needs! - ![](./images/embedBuilder/2.png) - ![](./images/embedBuilder/embedInfo.png) + ![](/images/other/embedBuilder/2.png) + ![](/images/other/embedBuilder/embedInfo.png) ## Selecting a Destination Channel 3. Once you've configured your embed, choose the channel where you want to send it. Click the channel selection box to reveal a dropdown menu of available channels. - ![](./images/embedBuilder/3.png) + ![](/images/other/embedBuilder/3.png) 4. Select the desired channel. In this example, we're using `#general`. **Important:** Ensure the bot has permission to view and send messages, including embeds and images, in the selected channel. This usually requires the "View Channel," "Send Messages," "Embed Links," and "Attach Files" permissions. - ![](./images/embedBuilder/4.png) + ![](/images/other/embedBuilder/4.png) ## Sending Your Embed 5. To send your embed to the selected channel, click the `Send` button. If you wish to discard your changes, click the orange "Cancel" button. - ![](./images/embedBuilder/5.png) + ![](/images/other/embedBuilder/5.png) ## Success! 6. Your embed should now appear in the chosen channel. - ![](./images/embedBuilder/6.png) + ![](/images/other/embedBuilder/6.png) Now you can create visually appealing and informative messages for your Discord server using the Embed Builder! \ No newline at end of file diff --git a/content/docs/Other/meta.json b/content/docs/Other/meta.json new file mode 100644 index 00000000..d6fee26a --- /dev/null +++ b/content/docs/Other/meta.json @@ -0,0 +1,9 @@ +{ + "title": "Other Information", + "pages": [ + "...", + "!syntax" + ], + "collapsible": false, + "defaultOpen": true +} diff --git a/guide/Other/ratelimits.md b/content/docs/Other/ratelimits.mdx similarity index 94% rename from guide/Other/ratelimits.md rename to content/docs/Other/ratelimits.mdx index ba08f76f..372f6a05 100644 --- a/guide/Other/ratelimits.md +++ b/content/docs/Other/ratelimits.mdx @@ -1,4 +1,6 @@ -# Understanding Discord Rate Limits and Bot Cooldowns +--- +title: "Understanding Discord Rate Limits and Bot Cooldowns" +--- To ensure fair usage and prevent abuse, Discord implements rate limits on its API. Our bot also uses a cooldown system to manage requests efficiently. This page explains how these limits work and how they might affect your custom commands. @@ -22,9 +24,11 @@ The bot's behavior depends on the function and its configuration: * **Error Message:** The bot sends an error message indicating that the function is on cooldown. * **Silent Cancellation:** The bot cancels the execution without any warning message. -::: tip How to Check Function Cooldowns + + You can use the command `!!func function name` to check the cooldown period (if any) of a specific function. This will help you understand how long you need to wait before using the function again. -::: + + ## Function Limits diff --git a/guide/Other/syntax.md b/content/docs/Other/syntax.mdx similarity index 68% rename from guide/Other/syntax.md rename to content/docs/Other/syntax.mdx index a561df77..17b72681 100644 --- a/guide/Other/syntax.md +++ b/content/docs/Other/syntax.mdx @@ -1,9 +1,8 @@ --- +title: "Syntax" hidden: true --- -# Syntax - Learning about the syntax used by this bot is necessary to understand how to write commands. ## Syntax Overview @@ -40,9 +39,11 @@ A function is a special instruction that begins with a dollar sign (`$`), for ex All arguments are kept inside of square brackets (`[HERE]`). Function names are case insensitive. -::: info How to execute functions + + All functions can be either executed by writing a command in the dashboard, or using the built in `!!exec` command. -::: + + ### Example @@ -53,12 +54,12 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] ``` - - !!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] - - - 2 = 2 = 2 - + +!!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] + + +2 = 2 = 2 + Function doesn't have to be closed at the same line where it was opened: @@ -70,17 +71,17 @@ Click to reveal: ||$math[2^11]||] ``` - - !!exec $title[Math question]
- $description[What is 2^11?
- Click to reveal: ||$math[2^11]||] -
- - - What is 2^11?
- Click to reveal: 2048 -
-
+ +!!exec $title[Math question]
+$description[What is 2^11?
+Click to reveal: ||$math[2^11]||] +
+ + +What is 2^11?
+Click to reveal: 2048 +
+
## Function Actions @@ -110,10 +111,10 @@ $msg[Channel ID;Message ID;Option;Additional 1;Additional 2] Example of using `$msg` with multiple arguments - - !!exec Message content: $msg[$channelID;$messageID;content] - - - Message content: !!exec Message content: $msg[$channelID;$messageID;content] - + +!!exec Message content: $msg[$channelID;$messageID;content] + + +Message content: !!exec Message content: $msg[$channelID;$messageID;content] + diff --git a/guide/Other/troubleshooting.md b/content/docs/Other/troubleshooting.mdx similarity index 92% rename from guide/Other/troubleshooting.md rename to content/docs/Other/troubleshooting.mdx index 38af7254..d3c049bd 100644 --- a/guide/Other/troubleshooting.md +++ b/content/docs/Other/troubleshooting.mdx @@ -1,10 +1,14 @@ -# Troubleshooting +--- +title: "Troubleshooting" +--- Our bot's advanced features mean users may encounter unique issues. This section addresses common problems, ordered from most frequent to less frequent. Each problem is presented as a question, followed by troubleshooting steps and the trigger type. -## My command doesn't trigger +## My command doesn't trigger + + **Possible Causes:** diff --git a/guide/Other/useful.md b/content/docs/Other/useful.mdx similarity index 58% rename from guide/Other/useful.md rename to content/docs/Other/useful.mdx index 0703d9c7..7c6ebb41 100644 --- a/guide/Other/useful.md +++ b/content/docs/Other/useful.mdx @@ -1,4 +1,6 @@ -# Useful Information +--- +title: "Useful Information" +--- This page provides helpful information about the bot and this documentation itself. Let's get you started! @@ -6,14 +8,16 @@ This page provides helpful information about the bot and this documentation itse ### Function Parameters Explained -::: tip What are Parameters? + + Parameters are values that a function needs to operate correctly. Think of them as ingredients for a recipe. Let's look at the function `$giveRoles[userid;roleid]` as an example. * **Parameter 1: `userid`** - This is the unique ID of the user you want to give the role to. You can get this ID using the `$authorID` function, which returns the ID of the command executor. * **Parameter 2: `roleid`** - This is the ID of the role you want to give. You can copy the role ID directly from Discord or use the `$roleID[rolename]` function to get the ID by the role's name. -::: + + #### Parameter Examples @@ -41,19 +45,19 @@ Now that you understand the basic components, you need to choose a trigger. A tr | Trigger Type | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ | -| [Word](../Trigger/word.md) | Executes when a user sends a message containing a specific word or phrase. | -| [On Join/Leave](../Trigger/joinorleave.md) | Executes when a user joins or leaves your server. | -| [On Reaction](../Trigger/reaction.md) | Executes when a user reacts to a message. | -| [Voice](../Trigger/voicecondecon.md) | Executes when a user connects to or disconnects from a voice channel. | -| [Timed or Interval](../Trigger/time.md) | Executes repeatedly at a set interval or at a specific time. | -| [Button](../Trigger/button.md) | Executes when a user clicks a Discord button. | -| [Role add/remove](../Trigger/roleaddremove.md) | Executes when a user receives or loses a role. | -| [On Upvote](../Trigger/upvote.md) | Executes when someone upvote in Top.gg. | -| [User Command (Context Menu)](../Trigger/app_cmd_user.md) | Executes when someone select user command on the user. | -| [Message Command (Context Menu)](../Trigger/app_cmd_message.md) | Executes when someone select message command on the selected message. | - -| [Library](../Trigger/library.md) | Create A library | +| [Word](/Trigger/word) | Executes when a user sends a message containing a specific word or phrase. | +| [On Join/Leave](/Trigger/joinorleave) | Executes when a user joins or leaves your server. | +| [On Reaction](/Trigger/reaction) | Executes when a user reacts to a message. | +| [Voice](/Trigger/voicecondecon) | Executes when a user connects to or disconnects from a voice channel. | +| [Timed or Interval](/Trigger/time) | Executes repeatedly at a set interval or at a specific time. | +| [Button](/Trigger/button) | Executes when a user clicks a Discord button. | +| [Role add/remove](/Trigger/roleaddremove) | Executes when a user receives or loses a role. | +| [On Upvote](/Trigger/upvote) | Executes when someone upvote in Top.gg. | +| [User Command (Context Menu)](/Trigger/app_cmd_user) | Executes when someone select user command on the user. | +| [Message Command (Context Menu)](/Trigger/app_cmd_message) | Executes when someone select message command on the selected message. | + +| [Library](/Trigger/library) | Create A library | ### Congratulations! Ready to Create? -Now that you grasp the basics, let's create your first command! Head over to [this page](../Guide/1.create.md). \ No newline at end of file +Now that you grasp the basics, let's create your first command! Head over to [this page](/Guide/1.create). \ No newline at end of file diff --git a/guide/Other/welcomer.md b/content/docs/Other/welcomer.mdx similarity index 88% rename from guide/Other/welcomer.md rename to content/docs/Other/welcomer.mdx index 690ef380..325be177 100644 --- a/guide/Other/welcomer.md +++ b/content/docs/Other/welcomer.mdx @@ -1,4 +1,6 @@ -# Setting Up Welcomer +--- +title: "Setting Up Welcomer" +--- Welcome to the Welcomer setup guide! This feature allows you to automatically send a custom message when a new member joins your server or when a member leaves. Let's walk through the process step-by-step. @@ -6,19 +8,19 @@ Welcome to the Welcomer setup guide! This feature allows you to automatically se First, navigate to the dashboard and click on the `welcomer` tab. This will bring you to the Welcomer settings page. - ![](./images/welcomer/1.png) + ![](/images/other/welcomer/1.png) 2. **Configure Member Join/Leave Settings:** Within the Welcomer tab, you'll find a section labeled `Member Join/Leave`. This is where you customize the messages for when members join or leave your server. Set your desired custom details in this section, such as the welcome message, member goodbye message, and image. - ![](./images/welcomer/2.png) + ![](/images/other/welcomer/2.png) 3. **Select a Channel:** Next, you need to specify the channel where the welcome and leave messages will be sent. Click on the channel selection box. A dropdown menu will appear, displaying the available channels. - ![](./images/welcomer/3.png) + ![](/images/other/welcomer/3.png) 4. **Choose Your Channel:** @@ -26,7 +28,7 @@ Welcome to the Welcomer setup guide! This feature allows you to automatically se **Important:** Ensure the bot has the "Embed Links" and "Attach Files" permissions in the selected channel. This is crucial for the bot to be able to send rich embedded messages and images without any issues. - ![](./images/welcomer/4.png) + ![](/images/other/welcomer/4.png) 5. **Save or Deactivate:** @@ -34,12 +36,12 @@ Welcome to the Welcomer setup guide! This feature allows you to automatically se * **Deactivate:** If you want to temporarily disable the Welcomer, simply click the red "Deactivate" button. - ![](./images/welcomer/5.png) + ![](/images/other/welcomer/5.png) 6. **Example Outcome:** After saving, your Welcomer configuration should look similar to this, reflecting the channel and custom settings you've chosen: - ![](./images/welcomer/6.png) + ![](/images/other/welcomer/6.png) That's it! You've successfully configured the Welcomer feature. New members joining or members leaving will now receive your personalized messages in the specified channel. Remember to adjust the settings as needed to keep your community welcoming and engaged. \ No newline at end of file diff --git a/content/docs/Templates/eco_bal.mdx b/content/docs/Templates/eco_bal.mdx new file mode 100644 index 00000000..ef0cd76e --- /dev/null +++ b/content/docs/Templates/eco_bal.mdx @@ -0,0 +1,19 @@ +--- +title: "Economy - Balance" +--- + +## Info: +A command for checking your economy balance + +## Configuration: +Trigger Type: `Message`
+Trigger: `/!(bal|balance)/gi`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `None`
+ +## Token: +Clone by using this command in your own server: `!!clone vFHnD` + +**Tags:** diff --git a/content/docs/Templates/eco_rob.mdx b/content/docs/Templates/eco_rob.mdx new file mode 100644 index 00000000..a6d5dcae --- /dev/null +++ b/content/docs/Templates/eco_rob.mdx @@ -0,0 +1,19 @@ +--- +title: "Economy - Rob" +--- + +## Info: +A command for robbing someone + +## Configuration: +Trigger Type: `Message`
+Trigger: `/!(rob|robbery)/gi`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `None`
+ +## Token: +Clone by using this command in your own server: `!!clone XC5sK` + +**Tags:** diff --git a/content/docs/Templates/mod_ban.mdx b/content/docs/Templates/mod_ban.mdx new file mode 100644 index 00000000..a43205e6 --- /dev/null +++ b/content/docs/Templates/mod_ban.mdx @@ -0,0 +1,26 @@ +--- +title: "Moderation - Ban" +--- + +## Info: +A command for banning members from your server. + +## Configuration: +Trigger Type: `Word`
+Trigger: `!ban`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `None`
+ +## Clone: +Clone by using this command in your own server: `!!clone VyCfP` + + + +Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters + + + + +**Tags:** diff --git a/content/docs/Templates/mod_joinGate.mdx b/content/docs/Templates/mod_joinGate.mdx new file mode 100644 index 00000000..458b202e --- /dev/null +++ b/content/docs/Templates/mod_joinGate.mdx @@ -0,0 +1,19 @@ +--- +title: "Moderation - Captcha Verification" +--- + +## Info: +A command for verification before the user can join the server. + +## Configuration: +Trigger Type: `On Join/Leave`
+Trigger: `add`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `YOUR STAFF CHAT`
+ +## Clone: +Clone by using this command in your own server: `!!clone 5Tr2e` + +**Tags:** diff --git a/content/docs/Templates/mod_mute.mdx b/content/docs/Templates/mod_mute.mdx new file mode 100644 index 00000000..71cd67e6 --- /dev/null +++ b/content/docs/Templates/mod_mute.mdx @@ -0,0 +1,25 @@ +--- +title: "Moderation - Mute" +--- + +## Info: +A command for muting members from your server. + +## Configuration: +Trigger Type: `Word`
+Trigger: `/!(mute|shut)/gi`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `None`
+ +## Clone: +Clone by using this command in your own server: `!!clone Otk6C` + + + +Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters + + + +**Tags:** diff --git a/content/docs/Templates/mod_warn.mdx b/content/docs/Templates/mod_warn.mdx new file mode 100644 index 00000000..a8a2a25a --- /dev/null +++ b/content/docs/Templates/mod_warn.mdx @@ -0,0 +1,25 @@ +--- +title: "Moderation - Warn" +--- + +## Info: +A command for warning members from your server. + +## Configuration: +Trigger Type: `Word`
+Trigger: `/!(warn|warning)/gi`
+Min. Perms: `None`
+Ignored Roles: `None`
+Run Only In: `None`
+Channel Used: `None`
+ +## Clone: +Clone by using this command in your own server: `!!clone lpDsX` + + + +Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters + + + +**Tags:** diff --git a/content/docs/Trigger/1.triggers.mdx b/content/docs/Trigger/1.triggers.mdx new file mode 100644 index 00000000..ba27a9cb --- /dev/null +++ b/content/docs/Trigger/1.triggers.mdx @@ -0,0 +1,72 @@ +--- +title: "Triggers showcase" +--- + +Here's a quick preview of all available triggers: + +## Word +[Triggers on specific words/patterns](/Trigger/word) +> ![Word](https://i.imgur.com/zQtDgDM.png) + +## Reaction +[Fires once someone reacts to a message](/Trigger/reaction) +> ![](https://i.imgur.com/h1pe28J.gif) + +## Button +[Detects users clicking buttons sent by the bot](/Trigger/button) +> ![](https://i.imgur.com/QrxFg8d.png) + +## Menu +[Activates when someone confirms their choice in menu](/Trigger/menu) +> ![](https://i.imgur.com/7wZLMIq.gif) + +## Slash command +[Responds to a discord slash command created with the bot](/Trigger/slash) +> ![](https://i.imgur.com/Hspy46H.gif) + +## Modal +[Triggers on submittion of a modal (form) if that modal was sent by the bot](/Trigger/modal) +> ![](https://i.imgur.com/ON9e1D4.png) + +## Channel +[Detects channels being added or removed](/Trigger/channel) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105138748414492772/channel-trigger.gif) + +## Role +[Triggers on role assignment](/Trigger/roleaddremove) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) + +## Timed event +[Executes the code at a set time](/Trigger/time) +> ![](https://cdn.discordapp.com/attachments/1105135517055594508/1105141376083038240/image.png) + +## Interval +[Repeatedly executes the code once in a specific time (e.g every hour)](/Trigger/time) +> ![](https://cdn.discordapp.com/attachments/1100128432395927765/1116042286812385370/image.png) + +## Voice +[Fires of when user leaves or joins a voice channel](/Trigger/voicecondecon) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) + +## Server boost +[Detects people boosting the server](/Trigger/serverboost) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105142982270783587/image.png) + +## Join or Leave +[Triggers when someone joins or leaves the server](/Trigger/joinorleave) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105143572510027806/image.png) + +## On Upvote +[Triggers when someone upvote in Top.gg.](/Trigger/upvote) + +## User Command +[Triggers when user command is selected from the user's context menu.](/Trigger/app_cmd_user) + +## Message Command +[Triggers when user command is selected from the message's context menu.](/Trigger/app_cmd_message) + +## Library +[A code which can be imported in any other code](/Trigger/library) +> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105145858581872750/image.png) +> +> In this example $includeLibrary has been used to import a library called `tools` which contained a custom $embedMsg function. diff --git a/guide/Trigger/app_cmd_message.md b/content/docs/Trigger/app_cmd_message.mdx similarity index 97% rename from guide/Trigger/app_cmd_message.md rename to content/docs/Trigger/app_cmd_message.mdx index 2dfdaa04..3c717a4f 100644 --- a/guide/Trigger/app_cmd_message.md +++ b/content/docs/Trigger/app_cmd_message.mdx @@ -1,4 +1,6 @@ -# On Message Command (Context Menu) +--- +title: "On Message Command (Context Menu)" +--- ## Basic Information diff --git a/guide/Trigger/app_cmd_user.md b/content/docs/Trigger/app_cmd_user.mdx similarity index 97% rename from guide/Trigger/app_cmd_user.md rename to content/docs/Trigger/app_cmd_user.mdx index 9cab803a..92e5986e 100644 --- a/guide/Trigger/app_cmd_user.md +++ b/content/docs/Trigger/app_cmd_user.mdx @@ -1,4 +1,6 @@ -# On User Command (Context Menu) +--- +title: "On User Command (Context Menu)" +--- ## Basic Information diff --git a/guide/Trigger/button.md b/content/docs/Trigger/button.mdx similarity index 89% rename from guide/Trigger/button.md rename to content/docs/Trigger/button.mdx index 445a4d5a..ea54b945 100644 --- a/guide/Trigger/button.md +++ b/content/docs/Trigger/button.mdx @@ -1,4 +1,6 @@ -# Button Click +--- +title: "Button Click" +--- This trigger type will detect when a user clicks a button. The button has to be sent by the bot. @@ -18,11 +20,14 @@ In order for a button command to work, there must be a button ID specified. Here | Regex | `/RegExp/` | `/User-\d{18,}/` | Will trigger on any button following the pattern "User-ID" like "User-434342521997492224" | -::: tip Capitalization + + All button IDs are CASE SENSITIVE, so a if a command doesn't trigger, check the capitalization! -::: -::: tip Tricky behavior + + + + Button commands use regex to match the button ID, so commands with IDs with similiar beginnings may interfere. #### For Example: @@ -36,7 +41,8 @@ If we had a command `Button: test` both buttons will trigger it. ##### Resolving the Problem Just change your id to `^id$` In regex ^ and $ are used to match the start and end of the string. -::: + + ### Related Functions * `$button` - sends a button @@ -49,4 +55,4 @@ In regex ^ and $ are used to match the start and end of the string. ## More Info -Do you want to know more about the bot's syntax? You can check out [this](../Other/syntax.md) page to learn more! +Do you want to know more about the bot's syntax? You can check out [this](/Other/syntax) page to learn more! diff --git a/guide/Trigger/channel.md b/content/docs/Trigger/channel.mdx similarity index 87% rename from guide/Trigger/channel.md rename to content/docs/Trigger/channel.mdx index cf6867d7..249e8652 100644 --- a/guide/Trigger/channel.md +++ b/content/docs/Trigger/channel.mdx @@ -1,4 +1,6 @@ -# Channel add/remove +--- +title: "Channel add/remove" +--- ## Syntax Use this syntax to let the bot trigger when a channel is added or removed or both @@ -17,9 +19,11 @@ Use this syntax to let the bot trigger when a channel is added or removed or bot `remove=category id` -> trigger when a channel is being deleted in category with id `category id` -::: tip Supported Channel Types -You can see the whole list [here.](../CodeReferences/ref.channel_types.md) -::: + + +You can see the whole list [here.](/CodeReferences/ref.channel_types) + + ## Related Functions The following list is functions that you might need: diff --git a/guide/Trigger/joinorleave.md b/content/docs/Trigger/joinorleave.mdx similarity index 50% rename from guide/Trigger/joinorleave.md rename to content/docs/Trigger/joinorleave.mdx index f2aa11ef..f4013399 100644 --- a/guide/Trigger/joinorleave.md +++ b/content/docs/Trigger/joinorleave.mdx @@ -1,10 +1,14 @@ -# On Join/Leave +--- +title: "On Join/Leave" +--- This trigger type will trigger when a user joins or leaves the server depending on your configuration. -::: warning Custom Bots + + Custom bots using Tier 3+ are required to have the `Guild Members` intent enabled for this trigger to work. -::: + + ## Example @@ -23,20 +27,22 @@ Hello $displayName! Welcome to our server. Wait for a user to join and see if it worked! - - Hello Member! Welcome to our server. - + +Hello Member! Welcome to our server. + -::: tip Test Command + + For member joins/leaves you can use `!!emit` command to trigger the On Join/Leave trigger. -::: + + - - !!emit uadd - - - Hello Member! Welcome to our server. - + +!!emit uadd + + +Hello Member! Welcome to our server. + diff --git a/guide/Trigger/library.md b/content/docs/Trigger/library.mdx similarity index 98% rename from guide/Trigger/library.md rename to content/docs/Trigger/library.mdx index 711a2b68..3d091d3d 100644 --- a/guide/Trigger/library.md +++ b/content/docs/Trigger/library.mdx @@ -1,4 +1,6 @@ -# Library +--- +title: "Library" +--- ## Basic Information Library is one of the unique triggers, that doesn't get triggered by events in your server. A library can be included (referenced) in other commands so you can use the code in it after calling `$includeLibrary[Library name]`. diff --git a/guide/Trigger/menu.md b/content/docs/Trigger/menu.mdx similarity index 96% rename from guide/Trigger/menu.md rename to content/docs/Trigger/menu.mdx index 3662a849..8675533e 100644 --- a/guide/Trigger/menu.md +++ b/content/docs/Trigger/menu.mdx @@ -1,4 +1,6 @@ -# Menu Interaction +--- +title: "Menu Interaction" +--- ## Basic Information This trigger type will trigger when a user selects an option in a menu. diff --git a/content/docs/Trigger/meta.json b/content/docs/Trigger/meta.json new file mode 100644 index 00000000..40ebb413 --- /dev/null +++ b/content/docs/Trigger/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Trigger Types", + "pages": [ + "..." + ] +} diff --git a/guide/Trigger/modal.md b/content/docs/Trigger/modal.mdx similarity index 86% rename from guide/Trigger/modal.md rename to content/docs/Trigger/modal.mdx index 6a568c2c..d43a0bd4 100644 --- a/guide/Trigger/modal.md +++ b/content/docs/Trigger/modal.mdx @@ -1,4 +1,6 @@ -# Modal (Form) Interaction +--- +title: "Modal (Form) Interaction" +--- ## Basic Information This trigger type will trigger when a user submits a modal. @@ -37,8 +39,11 @@ To get what user input in the modal, we will use `$modalAnswer` `$modalAnswer`: Return a data user input in submitting the modal -::: danger + + You need to send a modal with `$modal` within 1 second of button/menu/slash execution -::: -###### Tags: + + +**Tags:** + diff --git a/guide/Trigger/poll.md b/content/docs/Trigger/poll.mdx similarity index 92% rename from guide/Trigger/poll.md rename to content/docs/Trigger/poll.mdx index 11633e59..f87ca61c 100644 --- a/guide/Trigger/poll.md +++ b/content/docs/Trigger/poll.mdx @@ -1,4 +1,7 @@ -# Poll Updates Trigger +--- +title: "Poll Updates Trigger" +--- + It trigger when a changes happen to a poll, like when it ends ## When Poll End diff --git a/guide/Trigger/reaction.md b/content/docs/Trigger/reaction.mdx similarity index 98% rename from guide/Trigger/reaction.md rename to content/docs/Trigger/reaction.mdx index 373af761..3d866e02 100644 --- a/guide/Trigger/reaction.md +++ b/content/docs/Trigger/reaction.mdx @@ -1,4 +1,6 @@ -# User Reaction +--- +title: "User Reaction" +--- ## Introduction triggers when user react/unreact with certain emoji diff --git a/guide/Trigger/roleaddremove.md b/content/docs/Trigger/roleaddremove.mdx similarity index 98% rename from guide/Trigger/roleaddremove.md rename to content/docs/Trigger/roleaddremove.mdx index e596098c..1c90a6e8 100644 --- a/guide/Trigger/roleaddremove.md +++ b/content/docs/Trigger/roleaddremove.mdx @@ -1,4 +1,6 @@ -# Role Given/Taken +--- +title: "Role Given/Taken" +--- This trigger runs when someone gets or loses a role. diff --git a/guide/Trigger/scheduled_event.md b/content/docs/Trigger/scheduled_event.mdx similarity index 96% rename from guide/Trigger/scheduled_event.md rename to content/docs/Trigger/scheduled_event.mdx index ef6d0e99..80a4c964 100644 --- a/guide/Trigger/scheduled_event.md +++ b/content/docs/Trigger/scheduled_event.mdx @@ -1,4 +1,7 @@ -# Scheduled Event Updates Trigger +--- +title: "Scheduled Event Updates Trigger" +--- + It trigger when a changes happen to a scheduled event, like when it starts ## Trigger Actions diff --git a/guide/Trigger/serverboost.md b/content/docs/Trigger/serverboost.mdx similarity index 88% rename from guide/Trigger/serverboost.md rename to content/docs/Trigger/serverboost.mdx index d49cba44..2748ef74 100644 --- a/guide/Trigger/serverboost.md +++ b/content/docs/Trigger/serverboost.mdx @@ -1,4 +1,6 @@ -# On Server Boost +--- +title: "On Server Boost" +--- This trigger will trigger when someone boosts or removes boost from your server. diff --git a/guide/Trigger/slash.md b/content/docs/Trigger/slash.mdx similarity index 87% rename from guide/Trigger/slash.md rename to content/docs/Trigger/slash.mdx index f3893666..873c399a 100644 --- a/guide/Trigger/slash.md +++ b/content/docs/Trigger/slash.mdx @@ -1,4 +1,6 @@ -# Slash Command +--- +title: "Slash Command" +--- # Introduction triggers when a user uses a slash command. This needs to be a slash command from the bot. @@ -34,7 +36,9 @@ In this example we will create an `/avatar` command, that shows the user's avata 9. Set the code to be executed when the slash command is used -::: details Code + + + ``` $let[user_id;$getOption[user]] $interactionReply[ @@ -42,7 +46,9 @@ In this example we will create an `/avatar` command, that shows the user's avata {image:$userAvatar[$user_id]} ] ``` -::: + + + 10. go to your server and use the command as follows: ![](https://i.imgur.com/XZTeNVO.png) @@ -65,8 +71,8 @@ then the user id will be stored in a temporary variable named`user_id` using `$l ``` ### Sending Message -Next, to send a message with [$interactionReply[message]](../Interaction/interactionReply.md)\ -Here we will send an embed with a title and image using {title} and {image} [Curl Message Format](../CodeReferences/ref.message_curl_format.md): +Next, to send a message with [$interactionReply[message]](/Interaction/interactionReply)\ +Here we will send an embed with a title and image using \{title} and \{image} [Curl Message Format](/CodeReferences/ref.message_curl_format): ```php $interactionReply[ {title:Embed Title} @@ -75,12 +81,12 @@ $interactionReply[ ``` 1. In title we want to set it to: Avatar of Mido#1234\ -To get the username `Mido#1234` we will use [$userTag[user id]](../Member/userTag.md), to specifiy the user we will use `$user_id`: +To get the username `Mido#1234` we will use [$userTag[user id]](/Member/userTag), to specifiy the user we will use `$user_id`: ``` Avatar of $userTag[$user_id] ``` -2. In Image to retrieve the user avatar, we will use [$userAvatar[user id]](../Member/userAvatar.md): +2. In Image to retrieve the user avatar, we will use [$userAvatar[user id]](/Member/userAvatar): ```php $userAvatar[$user_id] ``` diff --git a/guide/Trigger/time.md b/content/docs/Trigger/time.mdx similarity index 87% rename from guide/Trigger/time.md rename to content/docs/Trigger/time.mdx index d970dc18..cfb08308 100644 --- a/guide/Trigger/time.md +++ b/content/docs/Trigger/time.mdx @@ -1,4 +1,6 @@ -# Timed or Interval +--- +title: "Timed or Interval" +--- ## Interval: Basic Information This trigger type will execute a command once per x time. @@ -33,11 +35,13 @@ You can specify any time in the following format: 1y -> execute after 1 year ``` -::: danger DO NOT FORGET: + + Set a channel used, otherwise errors will not be sent anywhere! This makes bug fixing really difficult! -::: + + ## More Info -Do you want to know more about the bot's syntax? You can check out [this](../Other/syntax.md) page to learn more! +Do you want to know more about the bot's syntax? You can check out [this](/Other/syntax) page to learn more! diff --git a/guide/Trigger/timeout.md b/content/docs/Trigger/timeout.mdx similarity index 88% rename from guide/Trigger/timeout.md rename to content/docs/Trigger/timeout.mdx index 626375d2..b9a57327 100644 --- a/guide/Trigger/timeout.md +++ b/content/docs/Trigger/timeout.mdx @@ -1,4 +1,6 @@ -# On Timeout +--- +title: "On Timeout" +--- This trigger fires whenever a member's timeout status changes. diff --git a/guide/Trigger/upvote.md b/content/docs/Trigger/upvote.mdx similarity index 92% rename from guide/Trigger/upvote.md rename to content/docs/Trigger/upvote.mdx index df313264..3f665385 100644 --- a/guide/Trigger/upvote.md +++ b/content/docs/Trigger/upvote.mdx @@ -1,4 +1,6 @@ -# On Upvote +--- +title: "On Upvote" +--- ## Basic Information @@ -25,9 +27,11 @@ Thanks for supporting the server, <@$userID>! ❤️ ### That's it! 🎉 -::: tip Tip + + You can test this trigger using the `!!emit upvote` command. -::: + + ## Some functions related to On Upvote diff --git a/guide/Trigger/voicecondecon.md b/content/docs/Trigger/voicecondecon.mdx similarity index 81% rename from guide/Trigger/voicecondecon.md rename to content/docs/Trigger/voicecondecon.mdx index 7043e0e9..181e28a5 100644 --- a/guide/Trigger/voicecondecon.md +++ b/content/docs/Trigger/voicecondecon.mdx @@ -1,4 +1,6 @@ -# Voice Join/Leave +--- +title: "Voice Join/Leave" +--- ## Basic Information This trigger type will trigger when a user joins or leaves a voice channel. @@ -18,15 +20,19 @@ Use this syntax to let the bot trigger when a user joins/leaves a voice channel! `join/leave=voice channel id` -> will only trigger when user joins/leaves this specific voice channel -::: danger Special event! + + Because this is a special event type, you CANNOT use `$channelID` to return the channel that was joined! Use `$voiceChannelID` instead -::: -::: danger DO NOT FORGET: + + + + Set a channel used, otherwise errors will not be sent anywhere! This makes bug fixing really difficult! -::: + + ## More Info -Do you want to know more about the bot's syntax? You can check out [this](../Other/syntax.md) page to learn more! +Do you want to know more about the bot's syntax? You can check out [this](/Other/syntax) page to learn more! diff --git a/guide/Trigger/word.md b/content/docs/Trigger/word.mdx similarity index 61% rename from guide/Trigger/word.md rename to content/docs/Trigger/word.mdx index 4cd530a9..be59cde3 100644 --- a/guide/Trigger/word.md +++ b/content/docs/Trigger/word.mdx @@ -1,4 +1,7 @@ -# Word Trigger +--- +title: "Word Trigger" +--- + Word commands, also known as message commands are executed when the bot receives a text message. ## Basic word command @@ -7,14 +10,14 @@ In the code part we will type `pong!`, so the bot will respond with it. ![Word example](https://i.imgur.com/0ndhYaw.png) - - - !ping - - - pong! - - + + +!ping + + +pong! + + ## Using parameters A crucial feature of the word type are parameters. They are data provided when executing the command. @@ -24,11 +27,11 @@ In that case we would want users to select a user by mentioning him. #### Usage The mention will be the `parameter 1`, because users will mention their victim right after the ?hug keyword. - - - ?hug fajfaj - - + + +?hug fajfaj + + #### Setup Parameters can be retrieved using the `$message` function, we will use it to get the user mention: @@ -37,14 +40,14 @@ Parameters can be retrieved using the `$message` function, we will use it to get #### Result Here's how the final command should look like: - - - ?hug fajfaj - - - Member hugs fajfaj - - + + +?hug fajfaj + + +Member hugs fajfaj + + ## Case insensitivity Sometimes we don't want to bother users with using correct capitalisation. @@ -59,27 +62,27 @@ Here's how to make a case insensitive `?hello` command, that will respond with a Let's test different variations: - - - ?hello - - - Hello Member! - - - ?HELLO - - - Hello Member! - - - ?HeLLo - - - Hello Member! - - - + + +?hello + + +Hello Member! + + +?HELLO + + +Hello Member! + + +?HeLLo + + +Hello Member! + + + Works perfectly! @@ -98,37 +101,39 @@ We can do that with the following trigger: Let's test it out: - - - ?hug fajfaj - - - Member hugs fajfaj - - - ?abrazo fajfaj - - - Member hugs fajfaj - - - ?étreinte fajfaj - - - Member hugs fajfaj - - + + +?hug fajfaj + + +Member hugs fajfaj + + +?abrazo fajfaj + + +Member hugs fajfaj + + +?étreinte fajfaj + + +Member hugs fajfaj + + Works as expected! ## Regex match The word trigger can also contain regex expressions for various dynamic triggers. -::: tip What's regex? + + Don't worry if you don't know what it is. Regex is a pretty advanced topic, and is not necessary in most cases. However if you want to learn more about regex, you can learn it from some internet guides [like this one](https://medium.com/factory-mind/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285) and regex playgrounds [like this one](https://regex101.com). -::: + + ### Ping detector Regex has thousands of use cases, but here we will discuss using regex to trigger on a mention anywhere in the message. @@ -151,20 +156,20 @@ You need to add a forward slash before and after your expression, otherwise the Let's try sending some mentions: - - - Hey fajfaj! How is it going? - - - You've pinged someone! - - - Mido, have you found your chocolate yet? - - - You've pinged someone! - - + + +Hey fajfaj! How is it going? + + +You've pinged someone! + + +Mido, have you found your chocolate yet? + + +You've pinged someone! + + It detects all of them! @@ -229,20 +234,20 @@ To randomize the output, we will use `$randomText` function, and to restrict the Let's see if we get any compliments: - - - How is it going? - - - Cool message! - - - Does anyone here have a monkey as a pet? - - - Wonderful punctuation! - - + + +How is it going? + + +Cool message! + + +Does anyone here have a monkey as a pet? + + +Wonderful punctuation! + + Amazing, we've just got complimented by the bot automatically. @@ -265,29 +270,33 @@ As we got through all the examples, here's a summary of the word trigger: | Message With Poll | `%has_poll%` | `%has_poll%` | Triggers when a user sends a poll | | Automod Action | `%automod_action%` | `%automod_action%` | Triggers when a user violates Discord AutoMod rules | -::: tip One word only! + + In word trigger (besides Regex) you are not allowed to put more than one word. All other words are interpreted as parameters, and cannot overlap with the trigger. -::: -::: danger Any message* + + + + Using `%all%` will result in a slight spam of cooldown messages, and might occasionally override your other commands. We strongly advise you to set the `Run only in` dropdown menu to specific channel(s). To get rid of the cooldown messages completely, you can either set a channel slowmode, or get yourself a [premium bot](https://ccommandbot.com/perks). -::: + + ### Continue reading Here are some pages that might come in handy if you still have some doubts about the word trigger: -* [!report](../Tutorials/3.report.md) - word command tutorial +* [!report](/Tutorials/3.report) - word command tutorial * `$message` - loading parameters * `$msg` - to load info about the message - +Yay! */} - +{/* Section below covered with trigger|trigger */} - - +Yay! works well. */} diff --git a/guide/Tutorials/1.ping.md b/content/docs/Tutorials/1.ping.mdx similarity index 86% rename from guide/Tutorials/1.ping.md rename to content/docs/Tutorials/1.ping.mdx index 763f1c56..6e54b174 100644 --- a/guide/Tutorials/1.ping.md +++ b/content/docs/Tutorials/1.ping.mdx @@ -1,13 +1,16 @@ -# Ping command +--- +title: "Ping command" +--- + Let's make a simple ping command, where you send a command `ping` and the bot replies with `pong` # Steps ## #1 Creating Command -Your first step, will be creating a new custom command, check this [page](../Guide/1.create.md#creating-custom-command) +Your first step, will be creating a new custom command, check this [page](/Guide/1.create#creating-custom-command) ## #2 Trigger Settings In the trigger settings -1. Select the Type to be `Word`, you can know more about this trigger [here](../Trigger/word.md) +1. Select the Type to be `Word`, you can know more about this trigger [here](/Trigger/word) 2. Set the Trigger to be `ping` ![](https://i.imgur.com/o5UIcB5.png) diff --git a/guide/Tutorials/2.staff-app.md b/content/docs/Tutorials/2.staff-app.mdx similarity index 92% rename from guide/Tutorials/2.staff-app.md rename to content/docs/Tutorials/2.staff-app.mdx index de3f55e9..6196e234 100644 --- a/guide/Tutorials/2.staff-app.md +++ b/content/docs/Tutorials/2.staff-app.mdx @@ -1,4 +1,7 @@ -# Staff application +--- +title: "Staff application" +--- + In this guide you will learn how to make a form using **discord modals**. Here's how it's going to look like: @@ -100,24 +103,26 @@ $channelSendMessage[$channelID[staff-applications]; $interactionReply[Thank you for your submission;yes] ``` -::: tip Related pages + + Here's a list of functions used and pages mentioned in this tutorial. We recommend you to continue reading about anything that seems unclear to you: | Page or function | Description | |--------- | --------- | | `$button` | send a button | -| [Button trigger](../Trigger/button.md) | detect button clicks | +| [Button trigger](/Trigger/button) | detect button clicks | | `$modal` | deploy a modal | -| [Modal trigger](../Trigger/modal.md) | catch submitted modals | +| [Modal trigger](/Trigger/modal) | catch submitted modals | | `$let` | define a temporary variable | | `$get` | retrive a temporary variable | | `$modalAnswer` | get user's answer | | `$channelSendMessage` | send a message in a different channel | | `$channelID` | find a channel by it's name | | `$if` | conditional statement | -| [Complete embed](../Text/Embed/example.md) | create an embed | +| [Complete embed](/Text/Embed/example) | create an embed | | `$interactionReply` | send interaction reply | -::: + + ### 🎉 Congratulations! diff --git a/guide/Tutorials/3.report.md b/content/docs/Tutorials/3.report.mdx similarity index 61% rename from guide/Tutorials/3.report.md rename to content/docs/Tutorials/3.report.mdx index 3af5f98b..9431d150 100644 --- a/guide/Tutorials/3.report.md +++ b/content/docs/Tutorials/3.report.mdx @@ -1,4 +1,7 @@ -# Report command +--- +title: "Report command" +--- + Here's a step-by-step instruction on how to create a simple report command. ## 1. Setting trigger @@ -44,21 +47,21 @@ $mention you report has been submitted, thank you for keeping our community safe ``` ### Result - - - !report fajfaj breaking server rule #5 - - - Member your report has been submitted, thank you for keeping our community safe. - - + + +!report fajfaj breaking server rule #5 + + +Member your report has been submitted, thank you for keeping our community safe. + + Meanwhile in #reports - - - Member has reported fajfaj, for breaking server rule #5 - - + + +Member has reported fajfaj, for breaking server rule #5 + + ### 🎉 Congrats! You've passed the course with grade A! diff --git a/guide/Tutorials/4.collect.md b/content/docs/Tutorials/4.collect.mdx similarity index 70% rename from guide/Tutorials/4.collect.md rename to content/docs/Tutorials/4.collect.mdx index ecbaf5f1..52ecd90b 100644 --- a/guide/Tutorials/4.collect.md +++ b/content/docs/Tutorials/4.collect.mdx @@ -1,10 +1,12 @@ -# Collect reward +--- +title: "Collect reward" +--- In this guide, you will learn how to create a one-time use command that allows users to collect a money reward. ## 1. Create a command -The first step is to create a new command, which you can learn to do in [this guide](../Guide/1.create.md). +The first step is to create a new command, which you can learn to do in [this guide](/Guide/1.create). ## 2. Set a trigger @@ -16,16 +18,18 @@ Users will collect their reward by using the `!collect` command, so let's set th Now that we have the initial setup done, it's time to make the command actually work. -::: tip We will use: + + * `$getUserVar` - to load the user's balance * `$let` - to temporarily store the balance * `$math` - to calculate new balance * `$setUserVar` - to set the new balance -::: + + ### Prize -The reward that users will receive is 100$ with the [template economy](../Guide/4.template.md). Since the template economy uses the `money` user var to store a user's balance, we will contribute to that var. +The reward that users will receive is 100$ with the [template economy](/Guide/4.template). Since the template economy uses the `money` user var to store a user's balance, we will contribute to that var. ### Getting user var @@ -74,24 +78,26 @@ $onlyIf[$getUserVar[hasCollected]!=true;You cannot collect the same reward more Let's see if it works correctly - - - !collect - - - Enjoy your 100$ reward! - - - !collect - - - You cannot collect the same reward more than once! - - - -::: tip Note + + +!collect + + +Enjoy your 100$ reward! + + +!collect + + +You cannot collect the same reward more than once! + + + + + You may not always limit executions to one per user, you can use other vars like `server vars` to restrict the command to one execution per server. -::: + + ### 🎉 Congrats! You've learned how to make a command that can be used only one time! diff --git a/guide/Tutorials/5.confession.md b/content/docs/Tutorials/5.confession.mdx similarity index 90% rename from guide/Tutorials/5.confession.md rename to content/docs/Tutorials/5.confession.mdx index e74d2bec..ae0ef0b2 100644 --- a/guide/Tutorials/5.confession.md +++ b/content/docs/Tutorials/5.confession.mdx @@ -1,4 +1,7 @@ -# Simple Slash Command: Confession +--- +title: "Simple Slash Command: Confession" +--- + In this guide, you will learn how to make a simple slash command called `/confess`, where user can use to send a confession in a beautiful embed like this: ![](https://i.imgur.com/kJwJ9Fi.png) @@ -36,13 +39,13 @@ That is all, let's test it out :star_struck: It works :happy:! but... what about making the respond into a beautiful embed? ## 4. Modify Code To Respond With Embed -To build an embed, we need to use [curl message format](../CodeReferences/ref.message_curl_format.md). +To build an embed, we need to use [curl message format](/CodeReferences/ref.message_curl_format). Curl is a way for you to build an embed in the place of the `message` input, for example to set up an embed with description and title we will use: ```js {desc:My embed description} {title:My embed title} ``` -> You can see the full list [here](../CodeReferences/ref.message_curl_format.md) +> You can see the full list [here](/CodeReferences/ref.message_curl_format) So, We will modify the message content of `$interactionReply` and use the curl message format, code would look like: ```php diff --git a/guide/Tutorials/5.poll.md b/content/docs/Tutorials/5.poll.mdx similarity index 83% rename from guide/Tutorials/5.poll.md rename to content/docs/Tutorials/5.poll.mdx index 89efd28d..0f177e8f 100644 --- a/guide/Tutorials/5.poll.md +++ b/content/docs/Tutorials/5.poll.mdx @@ -1,8 +1,11 @@ -# Sending a poll +--- +title: "Sending a poll" +--- + In this guide, you will learn how to send a poll. ## 1. Create a command -The first step is to create a new command, which you can learn to do in [this guide](../Guide/1.create.md). +The first step is to create a new command, which you can learn to do in [this guide](/Guide/1.create). ## 2. Set a trigger Let assume user need to say `!poll` to send the poll @@ -12,16 +15,18 @@ Let assume user need to say `!poll` to send the poll Now that we have the initial setup done, it's time to make the command actually work. -::: tip We will use: + + * `$sendMessage` - to send a message -* [poll curl data](../CodeReferences/ref.poll_data.md) -::: +* [poll curl data](/CodeReferences/ref.poll_data) + + ### Sending a message To send a message, we will use `$sendMessage[content]` where content is the message content, in our case we will fill it with our poll data ### Constructing the poll -we will use [poll curl data](../CodeReferences/ref.poll_data.md) like: +we will use [poll curl data](/CodeReferences/ref.poll_data) like: ``` {poll: {question=poll question} @@ -62,9 +67,11 @@ Output: -::: tip Note + + You may not always limit executions to one per user, you can use other vars like `server vars` to restrict the command to one execution per server. -::: + + ### 🎉 Congrats! You've learned how to make a command that can be used only one time! \ No newline at end of file diff --git a/content/docs/Tutorials/meta.json b/content/docs/Tutorials/meta.json new file mode 100644 index 00000000..f998652e --- /dev/null +++ b/content/docs/Tutorials/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Tutorials & Examples", + "pages": [ + "..." + ] +} diff --git a/guide/README.md b/content/docs/index.mdx similarity index 90% rename from guide/README.md rename to content/docs/index.mdx index b52b46cf..3b88facf 100644 --- a/guide/README.md +++ b/content/docs/index.mdx @@ -1,8 +1,12 @@ -# Getting Started +--- +title: "Getting Started" +--- + + -::: warning Before you start It is highly recommended not to skip this guide, or to read only parts of it. -::: + + ## What is Custom Command Bot? diff --git a/content/docs/meta.json b/content/docs/meta.json new file mode 100644 index 00000000..8c01c85a --- /dev/null +++ b/content/docs/meta.json @@ -0,0 +1,14 @@ +{ + "pages": [ + "---Guide---", + "index", + "...Guide", + "Trigger", + "Tutorials", + "Other", + "Changelogs", + "(functions)", + "Contribution_Info", + "Legal" + ] +} diff --git a/content/docs/notUsed/perms-privacy.mdx b/content/docs/notUsed/perms-privacy.mdx new file mode 100644 index 00000000..6910ecdf --- /dev/null +++ b/content/docs/notUsed/perms-privacy.mdx @@ -0,0 +1,9 @@ +--- +title: "Terms Of Service, Privacy Policy" +--- + +## Terms Of Service (ToS) +[Read here](/Legal/tos) + +# Privacy Policy +[Read here](/Legal/policy) \ No newline at end of file diff --git a/guide/.vuepress/cooldowns.json b/data/cooldowns.json similarity index 100% rename from guide/.vuepress/cooldowns.json rename to data/cooldowns.json diff --git a/docker-compose.yml b/docker-compose.yml index 9a49e96c..d98336e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,4 +8,4 @@ services: - /app/node_modules ports: - 8080:8080 - command: npm run dev \ No newline at end of file + command: pnpm dev diff --git a/guide/.vuepress/client.js b/guide/.vuepress/client.js deleted file mode 100644 index 697c9660..00000000 --- a/guide/.vuepress/client.js +++ /dev/null @@ -1,43 +0,0 @@ -import { defineClientConfig } from "vuepress/client"; -import { - DiscordButton, - DiscordButtons, - DiscordEmbed, - DiscordEmbedField, - DiscordEmbedFields, - DiscordInteraction, - DiscordMarkdown, - DiscordMention, - DiscordMessage, - DiscordMessages, - DiscordReaction, - DiscordReactions, - install as DiscordMessageComponents, -} from "@discord-message-components/vue"; - -import "@discord-message-components/vue/dist/style.css"; - -import "./styles/prism-coldark-dark.css"; - -import Arg from "./components/Arg.vue"; - -export default defineClientConfig({ - enhance({ app }) { - app.use(DiscordMessageComponents, {}); - - app.component("DiscordButton", DiscordButton); - app.component("DiscordButtons", DiscordButtons); - app.component("DiscordEmbed", DiscordEmbed); - app.component("DiscordEmbedField", DiscordEmbedField); - app.component("DiscordEmbedFields", DiscordEmbedFields); - app.component("DiscordInteraction", DiscordInteraction); - app.component("DiscordMarkdown", DiscordMarkdown); - app.component("DiscordMention", DiscordMention); - app.component("DiscordMessage", DiscordMessage); - app.component("DiscordMessages", DiscordMessages); - app.component("DiscordReaction", DiscordReaction); - app.component("DiscordReactions", DiscordReactions); - - app.component("Arg", Arg); - }, -}); diff --git a/guide/.vuepress/components/Arg.vue b/guide/.vuepress/components/Arg.vue deleted file mode 100644 index 4b9bea7a..00000000 --- a/guide/.vuepress/components/Arg.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - - - \ No newline at end of file diff --git a/guide/.vuepress/config.js b/guide/.vuepress/config.js deleted file mode 100644 index d37dd3ca..00000000 --- a/guide/.vuepress/config.js +++ /dev/null @@ -1,123 +0,0 @@ -import { viteBundler } from "@vuepress/bundler-vite"; -import { defaultTheme } from "@vuepress/theme-default"; -import { searchPlugin } from "@vuepress/plugin-search"; -import { removeHtmlExtensionPlugin } from "vuepress-plugin-remove-html-extension"; - -import { getDirname, path } from "vuepress/utils"; -import fs from "fs"; - -import sidebar from "./sidebar.js"; -import parseTag from "./parseTags.js"; -import replacements from "./replacements.js"; - -const replacePageContent = (content, replacements) => { - let output = content; - for (const [placeholder, replacement] of Object.entries(replacements)) { - const regex = new RegExp(`${placeholder}`, "g"); - output = output.replace(regex, replacement); - } - return output; -}; - - - -module.exports = { - lang: "en-US", - title: "Custom Command", - description: "Custom Command Bot's Documentation", - bundler: viteBundler(), - - theme: defaultTheme({ - docsDir: "guide", - navbar: [ - { - text: "Dashboard", - link: "https://ccommandbot.com/dashboard", - }, - { - text: "Discord", - link: "https://discord.gg/ZFQNZA4Ekz", - }, - ], - repo: "raspdevpy/ccdoc", - contributors: false, - logo: "/favicon.ico", - editLink: true, - editLinkText: "Improve This Page!", - lastUpdated: true, - ...sidebar, - }), - - head: [ - [ - "link", - { - rel: "icon", - href: "https://doc.ccommandbot.com/bot-profile.png", - }, - ], - [ - "meta", - { - name: "twitter:image", - content: "https://doc.ccommandbot.com/bot-profile.png", - }, - ], - [ - "meta", - { - property: "og:image", - content: "https://doc.ccommandbot.com/bot-profile.png", - }, - ], - ["meta", { name: "theme-color", content: "#74b0f7" }], - [ - "meta", - { - property: "og:description", - content: "Custom Command Bot's Documentation", - }, - ], - [ - "meta", - { - name: "twitter:description", - content: "Custom Command Bot's Documentation", - }, - ], - ], - - plugins: [ - { - name: "replace-content-plugin", - extendsMarkdown: (md) => { - const render = md.render; - md.render = (...args) => { - args[0] = replacements(args.slice(1), args[0]); - const html = render.call(md, ...args); - return html; - }; - }, - }, - { - name: "dynamic-meta-plugin", - extendsPage: (page) => { - const title = page.title || null; - const newTitle = title - ? `${title} | Custom Command` - : "Custom Command Documentation"; - - page.frontmatter.head = [ - ["meta", { property: "og:title", content: newTitle }], - ["meta", { name: "twitter:title", content: newTitle }], - ]; - }, - }, - - searchPlugin({ - maxSuggestions: 15, - getExtraFields: (page) => parseTag(page), - }), - removeHtmlExtensionPlugin(), - ], -}; diff --git a/guide/.vuepress/parseTags.js b/guide/.vuepress/parseTags.js deleted file mode 100644 index 61e5b9e3..00000000 --- a/guide/.vuepress/parseTags.js +++ /dev/null @@ -1,46 +0,0 @@ -const cheerio = require("cheerio"); -const fs = require("fs"); -let jsonObj = []; -const dataFile = "./guide/.vuepress/public/docs-pages.json"; - -let delayed; -function write(immediate = false) { - if (!delayed) return (delayed = setTimeout(write, 1000, true)); - if (!immediate) { - clearTimeout(delayed); - return (delayed = setTimeout(write, 1000, true)); - } - fs.writeFile(dataFile, JSON.stringify(jsonObj, null, 2), function (err) { - if (err) { - return console.log(err); - } - console.log("The file was saved!"); - }); -} -module.exports = (page) => { - let tags = []; - const $ = cheerio.load(page.contentRendered); - $("Badge").each(function (i, elem) { - let txt = $(this).attr("text"); - if (txt.match(/Easy|Difficult|Read Below|Medium|Bugged/gi)) return; - if (txt.length > 1) tags.push(txt); - }); - if (page.title.startsWith("$")) tags.push(page.title.slice(1)); - let data = { - title: page.title, - path: page.path, - content: page.contentRendered, - tags: tags, - }; - - const index = jsonObj.findIndex((item) => item.path === page.path); - if (index !== -1) { - jsonObj[index] = data; - } else { - jsonObj.push(data); - } - - write(); - - return tags; -}; diff --git a/guide/.vuepress/replacements.js b/guide/.vuepress/replacements.js deleted file mode 100644 index aa89c5c0..00000000 --- a/guide/.vuepress/replacements.js +++ /dev/null @@ -1,15 +0,0 @@ -const cooldownAddition = require("./replacements/cooldownAddition"); -const functionLinkReference = require("./replacements/functionLinkReference"); -const imageReplacement = require("./replacements/imageReplacement"); - -module.exports = (page, content) => { - for (let handler of [ - imageReplacement, - cooldownAddition, - functionLinkReference, - ]) { - if (!content) continue; - content = handler(page, content); - } - return content; -}; diff --git a/guide/.vuepress/replacements/cooldownAddition.js b/guide/.vuepress/replacements/cooldownAddition.js deleted file mode 100644 index d0eb7324..00000000 --- a/guide/.vuepress/replacements/cooldownAddition.js +++ /dev/null @@ -1,68 +0,0 @@ -const cooldowns = require("../cooldowns.json"); -function getTitle(content) { - const match = content.match(/^#\s*(\$[a-zA-Z]+)(\s|$)/); - return match ? match[1].trim() : null; -} -function formatDuration(ms) { - if (ms < 1) { - return `${(ms * 1000).toFixed(ms >= 0.1 ? 0 : 1)} μs`; - } - - if (ms < 1000) { - return `${ms} ms`; - } - - const units = [ - ["day", 86400000], - ["hour", 3600000], - ["minute", 60000], - ["second", 1000], - ]; - - const parts = []; - - for (const [name, value] of units) { - const amount = Math.floor(ms / value); - if (!amount) continue; - - parts.push(`${amount} ${name}${amount !== 1 ? "s" : ""}`); - ms %= value; - - if (parts.length === 2) break; // e.g. "2 minutes 5 seconds" - } - - return parts.join(" "); -} -module.exports = (page, content) => { - if(!page[0]?.filePathRelative) - return content; - const functionName = "$" + page[0].filePathRelative - .split("/") - .pop() - .replace(/\.md$/, ""); - - const cooldown = cooldowns[functionName.toLowerCase()]; - // let title = getTitle(content); - // if (!title) return content; - // const cooldown = cooldowns[title.toLowerCase()]; - if (!cooldown) return content; - let isHardCooldown = cooldown.hardCooldown; - content += ` - -## Function Cooldown - -This function has built-in cooldown. Why? Read more about cooldowns [here](/Other/ratelimits.md). - -- **Cooldown:** ${formatDuration(cooldown.time)} -- **Tracked By:** ${cooldown.per} -- **Type:** \`${cooldown.scope}\` - -Functions with the same type share cooldowns based on the same \`Tracked By\` value.`; - if (isHardCooldown) { - content += ` -::: warning Warning -This cooldown cannot be bypassed by Tier 3+ bots. -:::`; - } - return content; -}; diff --git a/guide/.vuepress/replacements/functionLinkReference.js b/guide/.vuepress/replacements/functionLinkReference.js deleted file mode 100644 index 0a07052c..00000000 --- a/guide/.vuepress/replacements/functionLinkReference.js +++ /dev/null @@ -1,39 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const GUIDE_DIR = path.join(__dirname, "../../"); - -const functionMap = new Map(); - -function scan(dir) { - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - - if (entry.isDirectory()) { - scan(full); - } else if (entry.name.endsWith(".md")) { - const name = path.basename(entry.name, ".md").toLowerCase(); - functionMap.set(name, full); - } - } -} - -scan(GUIDE_DIR); - -module.exports = (page, content) => { - const currentFile = page[0].filePath; - - return content.replace(/`\$([A-Za-z]+)`/g, (match, fn) => { - const targetFile = functionMap.get(fn.toLowerCase()+"_ai")??functionMap.get(fn.toLowerCase()); - if (!targetFile) return match; - - let relative = path.relative( - path.dirname(currentFile), - targetFile - ); - - relative = relative.replace(/\\/g, "/"); - - return `[\`${match}\`](${relative})`; - }); -}; \ No newline at end of file diff --git a/guide/.vuepress/replacements/imageReplacement.js b/guide/.vuepress/replacements/imageReplacement.js deleted file mode 100644 index 867b19af..00000000 --- a/guide/.vuepress/replacements/imageReplacement.js +++ /dev/null @@ -1,20 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -const crypto = require('crypto'); - -function shaUrl(url) { - const ext = path.extname(url); - const hash = crypto.createHash('sha256').update(url).digest('hex'); - return hash + ext; -} - -module.exports=(page,content)=>{ - content=content.replace(/\((http.*?)\)/g,(...v)=>{ - let url=v[1]; - let name=shaUrl(url) - const filename = `guide/.vuepress/public/images/${name}`; - if (fs.existsSync(filename)) return `(/images/${name})`; - return v[0] - }) - return content; -} \ No newline at end of file diff --git a/guide/.vuepress/sidebar.js b/guide/.vuepress/sidebar.js deleted file mode 100644 index aa6808ad..00000000 --- a/guide/.vuepress/sidebar.js +++ /dev/null @@ -1,158 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const matter = require("gray-matter"); - -function getSideBar(folder, title, options = {}) { - const children = getChildren(folder); - return { text: title, children, collapsible: false, ...options }; -} - -function getChildren(folder) { - if (!fs.existsSync(path.join(`${__dirname}/../${folder}`))) return []; - - const files = fs - // get all files in $folder - .readdirSync(path.join(`${__dirname}/../${folder}`), { - withFileTypes: true, - }) - .filter((dirent) => dirent.isFile()) - // read frontmatter and append a weight to each file - .map((item) => { - const fileContent = fs.readFileSync( - `${item.parentPath}/${item.name}`, - "utf8", - ); - const { data } = matter(fileContent); - return { - name: item.name, - path: `/${folder}/${item.name}`, - weight: data.weight ?? -1, - hidden: data.hidden ?? false, - }; - }) - // remove non .md files, and filter out files that are hidden - .filter( - (item) => - item.path.endsWith(".md") && - !item.hidden && - item.name.toLowerCase() != "readme.md", - ) - // sort files based on weight - .sort((a, b) => { - if (a.weight === -1 && b.weight === -1) return 0; - if (a.weight === -1) return 1; - if (b.weight === -1) return -1; - return a.weight - b.weight; - }) - // convert back to array of paths - .map((file) => file.path); - - return files; -} - -module.exports = { - sidebarDepth: 1, - sidebar: { - "/": [ - { - text: "Guide", - children: ["/", ...getChildren("Guide")], - }, - getSideBar("Trigger", "Trigger Types", { collapsible: true }), - getSideBar("Tutorials", "Tutorials & Examples", { - collapsible: true, - }), - getSideBar("Other", "Other Information"), - getSideBar("Changelogs", "Changelogs", { collapsible: true }), - // getSideBar('Templates','Templates'), - { - text: "Functions", - collapsible: true, - children: [ - getSideBar("Member", "Member Functions", { - collapsible: true, - }), - getSideBar("Channel", "Channel Functions", { - collapsible: true, - }), - getSideBar("Message", "Message Functions", { - collapsible: true, - }), - getSideBar("Interaction", "Interaction Functions", { - collapsible: true, - }), - getSideBar("Threads", "Threads Functions", { - collapsible: true, - }), - getSideBar("Role", "Role Functions", { collapsible: true }), - getSideBar("Server", "Server Functions", { - collapsible: true, - }), - getSideBar("Random", "Random Functions", { - collapsible: true, - }), - getSideBar("Text", "Text Functions", { collapsible: true }), - getSideBar("Text/Condition", "Condition Functions", { - collapsible: true, - }), - getSideBar("Stickers", "Sticker Functions", { - collapsible: true, - }), - getSideBar("Events", "Event Functions", { - collapsible: true, - }), - getSideBar("Timeout", "User Timeout Functions", { - collapsible: true, - }), - getSideBar("Text/Embed", "Embed functions", { - collapsible: true, - }), - getSideBar("Text/Components", "Button Functions", { - collapsible: true, - }), - getSideBar("Text/Math", "Math Functions", { - collapsible: true, - }), - getSideBar("Text/textSplit", "Text Split Functions", { - collapsible: true, - }), - getSideBar("Text/Array", "Array Functions", { - collapsible: true, - }), - getSideBar("Text/Object", "Object Functions", { - collapsible: true, - }), - getSideBar("Text/isandhas", "Is and Has Functions", { - collapsible: true, - }), - getSideBar("Text/only", "Only Functions", { - collapsible: true, - }), - getSideBar("Text/Regex", "Regex Functions", { - collapsible: true, - }), - getSideBar("Date", "Date Functions", { collapsible: true }), - getSideBar("Variables", "Variables Functions", { - collapsible: true, - }), - getSideBar("Bot", "Bot Functions", { collapsible: true }), - getSideBar("Useful", "Useful Functions", { - collapsible: true, - }), - getSideBar("Cooldown", "Cooldown functions", { - collapsible: true, - }), - getSideBar("Request", "Http Requests functions", { - collapsible: true, - }), - getSideBar("Image", "Image Builder functions", { - collapsible: true, - }), - // getSideBar('Unclassified','Unclassfied Functions',{collapsible:true}) - ], - }, - getSideBar("Contribution_Info", "Contribute", { collapsible: true }), - getSideBar("Legal", "Legal"), - ], - }, -}; diff --git a/guide/.vuepress/styles/index.scss b/guide/.vuepress/styles/index.scss deleted file mode 100644 index 858553ca..00000000 --- a/guide/.vuepress/styles/index.scss +++ /dev/null @@ -1,65 +0,0 @@ -@import "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"; - -html[data-theme="dark"] .discord-messages, html[data-theme="dark"] div[class*="language-"] { - background-color: #202024 !important; - border: 1px solid rgba(255, 255, 255, 0.1) !important; -} - -html[data-theme="light"] .discord-messages, html[data-theme="light"] div[class*="language-"] { - background-color: #e5e7eb !important; - border: 1px solid rgba(0, 0, 0, 0.1) !important; -} - -html[data-theme="dark"] .discord-message { - color: #dcddde !important; -} - -html[data-theme="light"] .discord-message { - color: #202024 !important; -} - -.discord-message:hover { - background-color: rgba(128, 128, 128, 0.2) !important; -} - -.discord-messages { - border-radius: 8px; - font-family: Inter, Roboto, sans-serif; -} - -html[data-theme="light"] .discord-embed-container, html[data-theme="light"] .discord-embed-title { - background-color: white; - color: black !important; -} - -.discord-message .discord-author-info .discord-author-username { - font-size: 0.95rem !important; - letter-spacing: 0px !important; - display: inline-flex !important; -} -.discord-message .discord-message-body { - font-size: 15px !important; -} -.discord-message .discord-message-content .discord-message-timestamp { - display: inline-flex !important; - font-size: 11px !important; - margin-left: 5px !important; -} - -@media screen and (max-width: 719px) { - .hint-container { - margin-inline: 0 !important; - } -} - -:root { - --code-border-radius: 8px !important; - --tab-border-radius: 8px !important; -} - -@media (max-width: 419px) { - #content { - --code-border-radius: 8px !important; - --tab-border-radius: 8px !important; - } -} diff --git a/guide/.vuepress/styles/prism-coldark-dark.css b/guide/.vuepress/styles/prism-coldark-dark.css deleted file mode 100644 index 71cea4ed..00000000 --- a/guide/.vuepress/styles/prism-coldark-dark.css +++ /dev/null @@ -1,447 +0,0 @@ -/** - * Coldark Theme for Prism.js - * Theme variation: Dark - * Tested with HTML, CSS, JS, JSON, PHP, YAML, Bash script - * @author Armand Philippot - * @homepage https://github.com/ArmandPhilippot/coldark-prism - * @license MIT - */ - -/* FINETUNED By Zero */ - -code[class*="language-"], -pre[class*="language-"] { - color: #e3eaf2; - background: none; - font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -pre[class*="language-"]::-moz-selection, -pre[class*="language-"] ::-moz-selection, -code[class*="language-"]::-moz-selection, -code[class*="language-"] ::-moz-selection { - background: #3c526d; -} - -pre[class*="language-"]::selection, -pre[class*="language-"] ::selection, -code[class*="language-"]::selection, -code[class*="language-"] ::selection { - background-color: #3c526d; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: 0.5em 0; - overflow: auto; -} - -html[data-theme="light"] .line { - color: #000; -} - -code[class*="language-"] { - padding-left: 0 !important; -} - -div[class*="language-"] { - overflow: hidden; -} - -html[data-theme="light"] div[class*="language-"].line-numbers-mode .line-numbers { - color: #000; -} - -div[class*="language-"].line-numbers-mode:after { - border-right: 1px solid transparent !important; -} - -.line-numbers { - line-height: 1.5 !important; -} - -:root { - --code-line-number-width: 35px; -} - -.line-number { - width: 35px; -} - -html[data-theme="light"] div[class*="language-"]:before { - color: #000; -} - -div[class*="language-"]:before { - display: none; -} - -code[class*="language-"], .line-numbers { - padding-top: 8px !important; - padding-bottom: 8px !important; -} - -html[data-theme="dark"] .vp-copy-code-button:before { - background: white !important; -} - -html[data-theme="light"] .vp-copy-code-button:before { - background: black !important; - -} - -.vp-copy-code-button:before { - padding: 4px 0; -} - -.vp-copy-code-button { - top: 4px; - right: 4px; - height: 29px; - width: 29px; -} - -.vp-copy-code-button.copied:after { - height: 29px !important; - padding: 0 8px; - margin: 0; - display: flex; - align-items: center; - -} - -.vp-copy-code-button:hover, .vp-copy-code-button.copied { - background: rgba(128, 128, 128, 0.2); -} - -html[data-theme="light"] .vp-copy-code-button.copied:after { - background: rgba(128, 128, 128, 0.2); - color: black; -} - -html[data-theme="dark"] .vp-copy-code-button.copied:after { - background: rgba(128, 128, 128, 0.2); - color: white; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #111b27; -} - -@media (max-width: 419px) { - div[class*="language-"], .code-block-with-title, .code-block-title-bar { - margin-inline: 0 !important; - } -} - -.code-block-title-bar { - padding: 0 0 0 6px; - border-radius: var(--tab-border-radius) var(--tab-border-radius) 0 0; - display: flex; - align-items: center; - background-color: #e5e7eb !important; - border: 1px solid rgba(0, 0, 0, 0.1) !important; - border-bottom: none !important; -} - -div[class*="language-"] .line.highlighted { - background-color: rgba(128, 128, 128, 0.2) !important; -} - -html[data-theme="dark"] .code-block-title-bar { - background-color: #202024 !important; - border: 1px solid rgba(255, 255, 255, 0.1) !important; - border-bottom: none !important; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: 0.1em 0.3em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #8da1b9; -} - -.token.punctuation { - color: rgb(255, 66, 129); -} - -.token.function, -.token.class-name, -.token.keyword -{ color: #000; } -html[data-theme="dark"] .token.function, -html[data-theme="dark"] .token.class-name, -html[data-theme="dark"] .token.keyword -{ color: #fff; } - -.token.delimiter.important, -.token.selector .parent, -.token.tag, -.token.tag .token.punctuation { - color: #66cccc; -} - -.token.attr-name, -.token.boolean, -.token.boolean.important, -.token.constant, -.token.selector .token.attribute { - color: #e6d37a; -} - -.token.number { - color: rgb(78, 190, 255); -} - -.token.key, -.token.parameter, -.token.property, -.token.property-access, -.token.variable { - color: rgb(133, 255, 255); -} - -html[data-theme="light"] .token.variable { - color: rgb(53, 175, 175); -} - -.token.attr-value, -.token.inserted, -.token.color, -.token.selector .token.value, -.token.string, -.token.string .token.url-link { - color: #91d076; -} - -.token.builtin, -.token.keyword-array, -.token.package, -.token.regex { - color: #f4adf4; -} - -.token.selector .token.class, -.token.selector .token.id { - color: #c699e3; -} - -.token.atrule .token.rule, -.token.combinator, -.token.operator, -.token.pseudo-class, -.token.pseudo-element, -.token.selector, -.token.unit { - color: lightcoral; -} - -.token.deleted, -.token.important { - color: #cd6660; -} - -.token.keyword-this, -.token.this { - color: #6cb8e6; -} - -.token.important, -.token.keyword-this, -.token.this, -.token.bold { - font-weight: bold; -} - -.token.delimiter.important { - font-weight: inherit; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - -.language-markdown .token.title, -.language-markdown .token.title .token.punctuation { - color: #6cb8e6; - font-weight: bold; -} - -.language-markdown .token.blockquote.punctuation { - color: #f4adf4; -} - -.language-markdown .token.code { - color: #66cccc; -} - -.language-markdown .token.hr.punctuation { - color: #6cb8e6; -} - -.language-markdown .token.url .token.content { - color: #91d076; -} - -.language-markdown .token.url-link { - color: #e6d37a; -} - -.language-markdown .token.list.punctuation { - color: #f4adf4; -} - -.language-markdown .token.table-header { - color: #e3eaf2; -} - -.language-json .token.operator { - color: #e3eaf2; -} - -.language-scss .token.variable { - color: #66cccc; -} - -/* overrides color-values for the Show Invisibles plugin - * https://prismjs.com/plugins/show-invisibles/ - */ -.token.token.tab:not(:empty):before, -.token.token.cr:before, -.token.token.lf:before, -.token.token.space:before { - color: #8da1b9; -} - -/* overrides color-values for the Toolbar plugin - * https://prismjs.com/plugins/toolbar/ - */ -div.code-toolbar > .toolbar.toolbar > .toolbar-item > a, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > button { - color: #111b27; - background: #6cb8e6; -} - -div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus { - color: #111b27; - background: #6cb8e6da; - text-decoration: none; -} - -div.code-toolbar > .toolbar.toolbar > .toolbar-item > span, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover, -div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus { - color: #111b27; - background: #8da1b9; -} - -/* overrides color-values for the Line Highlight plugin - * http://prismjs.com/plugins/line-highlight/ - */ -.line-highlight.line-highlight { - background: #3c526d5f; - background: linear-gradient(to right, #3c526d5f 70%, #3c526d55); -} - -.line-highlight.line-highlight:before, -.line-highlight.line-highlight[data-end]:after { - background-color: #8da1b9; - color: #111b27; - box-shadow: 0 1px #3c526d; -} - -pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before { - background-color: #8da1b918; -} - -/* overrides color-values for the Line Numbers plugin - * http://prismjs.com/plugins/line-numbers/ - */ -.line-numbers.line-numbers .line-numbers-rows { - border-right: 1px solid #0b121b; - background: #0b121b7a; -} - -.line-numbers .line-numbers-rows > span:before { - color: #8da1b9da; -} - -/* overrides color-values for the Match Braces plugin - * https://prismjs.com/plugins/match-braces/ - */ -.rainbow-braces .token.token.punctuation.brace-level-1, -.rainbow-braces .token.token.punctuation.brace-level-5, -.rainbow-braces .token.token.punctuation.brace-level-9 { - color: #e6d37a; -} - -.rainbow-braces .token.token.punctuation.brace-level-2, -.rainbow-braces .token.token.punctuation.brace-level-6, -.rainbow-braces .token.token.punctuation.brace-level-10 { - color: #f4adf4; -} - -.rainbow-braces .token.token.punctuation.brace-level-3, -.rainbow-braces .token.token.punctuation.brace-level-7, -.rainbow-braces .token.token.punctuation.brace-level-11 { - color: #6cb8e6; -} - -.rainbow-braces .token.token.punctuation.brace-level-4, -.rainbow-braces .token.token.punctuation.brace-level-8, -.rainbow-braces .token.token.punctuation.brace-level-12 { - color: #c699e3; -} - -/* overrides color-values for the Diff Highlight plugin - * https://prismjs.com/plugins/diff-highlight/ - */ -pre.diff-highlight > code .token.token.deleted:not(.prefix), -pre > code.diff-highlight .token.token.deleted:not(.prefix) { - background-color: #cd66601f; -} - -pre.diff-highlight > code .token.token.inserted:not(.prefix), -pre > code.diff-highlight .token.token.inserted:not(.prefix) { - background-color: #91d0761f; -} - -/* overrides color-values for the Command Line plugin - * https://prismjs.com/plugins/command-line/ - */ -.command-line .command-line-prompt { - border-right: 1px solid #0b121b; -} - -.command-line .command-line-prompt > span:before { - color: #8da1b9da; -} diff --git a/guide/Bot/botCount.md b/guide/Bot/botCount.md deleted file mode 100644 index c3179dac..00000000 --- a/guide/Bot/botCount.md +++ /dev/null @@ -1,30 +0,0 @@ -# $botCount - -This function returns the total number of bots present in your Discord server (guild). - -#### Usage: `$botCount` - -Here's how you can use the `$botCount` function: - -``` -!!exec There are $botCount bots in the server! -``` - -This command, when executed, will display a message showing the bot count in the server. See the example below: - - - - !!exec There are $botCount bots in the server! - - - There are 2 bots in the server! - - - -::: danger Warning -The bot count is retrieved from the bot's cache, not directly from the Discord API. This means the count might not be perfectly accurate, especially if all server members haven't been fully cached. Full caching is typically achieved at higher bot tiers (Tier 5). -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Bot/botTier.md b/guide/Bot/botTier.md deleted file mode 100644 index e7e75101..00000000 --- a/guide/Bot/botTier.md +++ /dev/null @@ -1,16 +0,0 @@ -# $botTier - -This command retrieves the current tier level of your bot. - -The standard, free version of the bot operates at **Tier 0**. - - - - !!exec $botTier - - - 0 - - - -The command will then return the tier level of your bot. \ No newline at end of file diff --git a/guide/Bot/clientID.md b/guide/Bot/clientID.md deleted file mode 100644 index a158257f..00000000 --- a/guide/Bot/clientID.md +++ /dev/null @@ -1,25 +0,0 @@ -# $clientID - -Retrieves the bot's User ID, also referred to as the Client ID. This is a unique identifier for your bot on Discord. - -#### Usage: `$clientID` - -
- -This function is commonly used to programmatically access the bot's ID within custom commands or other bot logic. - -Here's an example of how it works in practice: - - - - !!exec $clientID - - - 725721249652670555 - - - -As you can see, the command `!!exec $clientID` returns the bot's ID: `725721249652670555`. - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Bot/getBotInvite.md b/guide/Bot/getBotInvite.md deleted file mode 100644 index b411521e..00000000 --- a/guide/Bot/getBotInvite.md +++ /dev/null @@ -1,36 +0,0 @@ -# $getBotInvite - -Generate an invite link for your bot. - -## Usage - -```bash -$getBotInvite[permission;permission;permission...] -``` - -**Parameters:** - -* `permission` - (Optional) A list of permissions to request in the invite link. Separate multiple permissions with a semicolon (;). If no permissions are specified, the invite will request the default permissions. - -## Example - -``` -!!exec $getBotInvite[admin] -``` - -This will output an invite link for your bot with administrator permissions. - -**Example Output:** - - - - !!exec $getBotInvite[admin] - - - https://discord.com/oauth2/authorize?client_id=725721249652670555&scope=bot+applications.commands&permissions=8 - - - -::: tip Permissions -Refer to the [Permissions List](../CodeReferences/ref.permissions_list.md) for a comprehensive list of permission names and their corresponding integer values. -::: \ No newline at end of file diff --git a/guide/Bot/ping.md b/guide/Bot/ping.md deleted file mode 100644 index 608a64db..00000000 --- a/guide/Bot/ping.md +++ /dev/null @@ -1,24 +0,0 @@ -# $ping - -This command provides the bot's ping (latency) in milliseconds. It's a quick and easy way to check if the bot is online, responsive, and functioning correctly. Think of it like a simple "health check" for the bot! - -#### Usage: `$ping` - -
- -Here's an example of how to use the `$ping` command in Discord: - - - - !!exec $ping ms - - - 20 ms - - - -In this example, the bot responded with `20 ms`, indicating a ping of 20 milliseconds. A lower ping generally means the bot is more responsive. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Bot/ram.md b/guide/Bot/ram.md deleted file mode 100644 index b1636e79..00000000 --- a/guide/Bot/ram.md +++ /dev/null @@ -1,25 +0,0 @@ -# $ram - -Displays the amount of RAM (Random Access Memory) currently being used by the bot. This command provides insight into the bot's resource consumption. - -#### Usage: `$ram` - -
- -**Example:** - -``` -!!exec $ram MB -``` - -**Bot Response:** - -``` -2143.55 MB -``` - -This indicates that the bot is currently using approximately 2143.55 MB of RAM. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Bot/serverCount.md b/guide/Bot/serverCount.md deleted file mode 100644 index de0528fc..00000000 --- a/guide/Bot/serverCount.md +++ /dev/null @@ -1,21 +0,0 @@ -# $serverCount - -This function returns the total number of servers (guilds) the bot is currently in. It's a simple way to display the bot's reach. - -#### Usage: `$serverCount` - -This function doesn't require any arguments. Just include it in your command response. -
-**Example:** - - - !!exec I am in $serverCount servers. - - - I am in 15000 servers. - - - -##### Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Bot/uptime.md b/guide/Bot/uptime.md deleted file mode 100644 index b0181f21..00000000 --- a/guide/Bot/uptime.md +++ /dev/null @@ -1,24 +0,0 @@ -# $uptime - -This command displays how long the bot has been running since it was last started. - -#### Usage: `$uptime` - -
- -Here's an example of how it works: - - - - !!exec $uptime - - - 3d 17h 53m 27s - - - -In this example, the bot has been running for 3 days, 17 hours, 53 minutes, and 27 seconds. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Channel/channelCount.md b/guide/Channel/channelCount.md deleted file mode 100644 index eeb3eb9e..00000000 --- a/guide/Channel/channelCount.md +++ /dev/null @@ -1,28 +0,0 @@ -# $channelCount - -This function returns the total number of channels present in the server. - -#### Usage: `$channelCount[Channel Type (optional)]` - -You can optionally specify a channel type to count only channels of that specific type. Refer to this [list](../CodeReferences/ref.channel_types.md) for valid channel types. - -#### Parameters: - -* **`Channel Type` (optional):** The type of channel to count. If omitted, the function will count all channels. Valid types can be found in the [Channel Types Reference](../CodeReferences/ref.channel_types.md). - -#### Example: - -Counts the number of public threads in the server: - -
- - - !!exec There are $channelCount[threads_public] threads in the server! - - - There are 13 threads in the server! - - - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Channel/channelName.md b/guide/Channel/channelName.md deleted file mode 100644 index 2788b031..00000000 --- a/guide/Channel/channelName.md +++ /dev/null @@ -1,36 +0,0 @@ -# $channelName - -Retrieves the name of a Discord channel. - -#### Usage: `$channelName[channelID]` - -`` (Required): The ID of the channel you want to get the name of. - -
- -**Example:** - - - - !!exec $channelName[123456789012345678] - - - The channel's name is... (Assuming the channel ID 123456789012345678 is a channel named "help") - - - -::: tip Important Notes -* If a channel with the specified ID is not found, the function will return an empty string. -* Make sure your bot has the necessary permissions to access the channel. -::: - -::: tip Getting the Channel ID -Use `$channelID` to get the ID of a channel by its name or to get the ID of the channel where the command was executed. -::: - -::: tip Related Functions -Use `$findChannel` to find a channel using its name. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Channel/channelType.md b/guide/Channel/channelType.md deleted file mode 100644 index cf2d653a..00000000 --- a/guide/Channel/channelType.md +++ /dev/null @@ -1,27 +0,0 @@ -# $channelType - -Retrieves the type of a channel based on its ID. - -#### Usage: `$channelType[channelID]` - -This function allows you to determine the type of a specific channel using its unique ID. - -
- -**Example:** - - - - !!exec $channelType[$channelID] - - - text - - - -::: tip Note -The `$channelType` function returns a string representing the channel type. Refer to this [list](../CodeReferences/ref.channel_types.md) for possible channel types and their meanings. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Channel/channelUsed.md b/guide/Channel/channelUsed.md deleted file mode 100644 index 9f0922e7..00000000 --- a/guide/Channel/channelUsed.md +++ /dev/null @@ -1,34 +0,0 @@ -# $channelUsed - -Returns the ID of the channel used. If no channel ID is specified, it defaults to the current channel where the command was executed. - -#### Usage: `$channelUsed[channelID (optional)]` - -**Parameters:** - -* `channelID (optional)`: The ID of the channel you want to be set as the channel used. If omitted, the function returns the ID of the channel where the command is run. - -**Example:** - -Here are a few examples showcasing the `$channelUsed` function: - - - - !!exec $channelUsed[839090554205241394] - - - !!exec $channelUsed - - - 839090554205241394 - - - -In the first example, the bot set the specified channel ID `839090554205241394` as the channel used. In the second example, because no channel ID is provided, the bot returns the channel ID where the `!!exec` command was executed. - -::: tip Related Functions -* `$channelID` returns the channel ID where the command was executed. See the `$channelID` documentation for more information. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Channel/clear.md b/guide/Channel/clear.md deleted file mode 100644 index 76ce8fb0..00000000 --- a/guide/Channel/clear.md +++ /dev/null @@ -1,55 +0,0 @@ -# $clear - -Clears messages from a channel. You can clear messages from a specific user, or clear all messages in the channel. - -#### Usage: - -`$clear[amount;userID or everyone (optional);channelID (optional);skip pinned messages (optional)]` - -**Parameters:** - -* `amount`: The number of messages to clear (maximum 100). -* `userID` (optional): The ID of the user whose messages you want to clear. If omitted, or set to `everyone`, all messages will be cleared. -* `channelID` (optional): The ID of the channel to clear messages from. If omitted, the current channel is used. -* `skip pinned messages` (optional): default is 'no' -**Example:** - -**Before:** - - - - I'm a spammer, everyone shut up! - - - I'm a spammer, everyone shut up! - - - I'm a spammer, everyone shut up! - - - I'm a spammer, everyone shut up! - - - I'm a spammer, everyone shut up! - - - I'm a spammer, everyone shut up! - - - !!exec $clear[10;everyone] $sendMessage[Channel has been purged] - - - -**After:** - - - - Channel has been purged. - - - -::: warning -You can clear a maximum of 100 messages at a time. Messages older than 2 weeks cannot be cleared. -::: - -#### Function Difficulty: diff --git a/guide/Channel/findChannel.md b/guide/Channel/findChannel.md deleted file mode 100644 index 283f3e74..00000000 --- a/guide/Channel/findChannel.md +++ /dev/null @@ -1,49 +0,0 @@ -# $findChannel - -Searches for a channel by its ID, mention, or name. - -#### Usage: - -`$findChannel[ID/mention/name;returnCurrentChannel (yes/no) (optional)]` - -**Parameters:** - -* `ID/mention/name`: The ID, mention, or name of the channel to search for. -* `returnCurrentChannel (yes/no) (optional)`: Determines the behavior when a channel isn't found: - * `yes`: (Default) Returns the current channel's ID if no match is found. - * `no`: Returns `undefined` if no match is found. - -**Example Scenarios:** - -**Scenario 1: Channel Found (using channel name)** - - - - !!exec $findChannel[bot-commands;no] - - - 869243919697846379 - - - -In this example, the bot searches for a channel named "bot-commands". If found, it returns the channel's ID (869243919697846379). The `;no` tells the function to return undefined if the channel isn't found. - -**Scenario 2: Channel Not Found (with `returnCurrentChannel` set to `no`)** - - - - !!exec $findChannel[bot-cmnds;no] - - - undefined - - - -Here, the bot attempts to find a channel named "bot-cmnds" (note the typo). Since no such channel exists, and the second argument is set to `no`, the function returns `undefined`. - -::: tip Related Functions -`$channelExists` is useful for verifying if a channel ID exists before using it. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/CodeReferences/ref.embed.colors.md b/guide/CodeReferences/ref.embed.colors.md deleted file mode 100644 index 3aae9ea0..00000000 --- a/guide/CodeReferences/ref.embed.colors.md +++ /dev/null @@ -1,70 +0,0 @@ -# Acceptable Embed Colors -### Name List: -| Name | Equivalent Hex | -|:-----------:|:-------------:| -| Default | #000000 | -| White | #ffffff | -| Aqua | #1abc9c | -| Green | #57f287 | -| Blue | #3498db | -| Yellow | #fee75c | -| Purple | #9b59b6 | -| LuminousVividPink | #e91e63 | -| Fuchsia | #eb459e | -| Gold | #f1c40f | -| Orange | #e67e22 | -| Red | #ed4245 | -| Grey | #95a5a6 | -| Navy | #34495e | -| DarkAqua | #11806a | -| DarkGreen | #1f8b4c | -| DarkBlue | #206694 | -| DarkPurple | #71368a | -| DarkVividPink | #ad1457 | -| DarkGold | #c27c0e | -| DarkOrange | #a84300 | -| DarkRed | #992d22 | -| DarkGrey | #979c9f | -| DarkerGrey | #7f8c8d | -| LightGrey | #bcc0c0 | -| DarkNavy | #2c3e50 | -| Blurple | #5865f2 | -| Greyple | #99aab5 | -| DarkButNotBlack | #2c2f33 | -| NotQuiteBlack | #23272a | -| Transparent | #2b2d31 | -| Trans | #2b2d31 | -| Random | A random color from #000000 to #ffffff | - -### Hex -It can also accept hex colors like `#1abc9c` - -### Example 1 - - - !!exec $sendMessage[
{desc:You are awesome}
{color:Aqua}
] -
- - - You are awesome - - -
- -### Example 2 - - - !!exec $description[You are awesome}]
$color[#0099ff] -
- - - You are awesome - - -
diff --git a/guide/Cooldown/clearCoolDown.md b/guide/Cooldown/clearCoolDown.md deleted file mode 100644 index f72522ce..00000000 --- a/guide/Cooldown/clearCoolDown.md +++ /dev/null @@ -1,43 +0,0 @@ -# $clearCooldown - -Clears a cooldown set by cooldown function. - -**Type:** Clears or resets a pre-existing cooldown. - -## Usage - -```bash -$clearCooldown[type;id;token] -``` -1. **type** - (Optional) default value: `user`. Can be `user`, `channel` or `server`. The type of cooldown to clear. -2. **id** - (Optional) default value: `$authorID` if type is user. The ID of a user or channel to clear cooldown from. -3. **token** - (Optional) default value is the current command token, changing it means clearing another command cooldown -## Example - -#### Remove cooldown from a user - -How to remove cooldown from a user - - - - !!exec $cooldown[5m]
- $clearCooldown
- No cooldown -
- - No cooldown - - - !!exec $cooldown[5m]
- $clearCooldown
- No cooldown 2nd try -
- - No cooldown 2nd try - -
- -##### Related functions: `$getCooldownTime` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Date/dateStamp.md b/guide/Date/dateStamp.md deleted file mode 100644 index 3f47c44b..00000000 --- a/guide/Date/dateStamp.md +++ /dev/null @@ -1,28 +0,0 @@ -# $dateStamp - -Returns the current Unix timestamp (the number of milliseconds that have elapsed since January 1, 1970 UTC). - -#### Usage: `$dateStamp[Return in Seconds (Yes/No)]` - -This function allows you to retrieve the current timestamp in either milliseconds or seconds. - -* **`Return in Seconds (Yes/No)`:** Specify whether you want the timestamp returned in seconds (enter `Yes`) or milliseconds (enter `No` or leave blank). - -
- -**Example:** - - - - !!exec $dateStamp, $dateStamp[yes] - - - 1630841854895, 1630841854 - - - -In this example, the first `$dateStamp` call returns the timestamp in milliseconds, while the second `$dateStamp[yes]` call returns the timestamp in seconds. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Date/day.md b/guide/Date/day.md deleted file mode 100644 index 9c0d5be1..00000000 --- a/guide/Date/day.md +++ /dev/null @@ -1,29 +0,0 @@ -# $day - -Returns the current date. Optionally, you can also retrieve the day of the week. - -#### Usage: `$day[yes/no (optional)]` - -* **`$day`**: Returns the current date (day of the month). -* **`$day[yes]`**: Returns the current date (day of the month) followed by the day of the week. - -**Example:** - -
- - - - !!exec $day $day[yes] - - - 25 Saturday - - - -::: tip Timezone Information -Date functions default to the UTC timezone. You can customize the timezone used by your bot. [Learn More](./timezone.md) -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Date/hour.md b/guide/Date/hour.md deleted file mode 100644 index a4c08d76..00000000 --- a/guide/Date/hour.md +++ /dev/null @@ -1,28 +0,0 @@ -# $hour - -This command returns the current hour (in 24-hour format). - -#### Usage: `$hour` - -**Example:** - -This example shows how to use the `$hour` command in a custom command. - -
- - - - !!exec $hour - - - 19 - - - -::: tip Timezone Considerations -Date functions use the UTC timezone by default. You can change the timezone for your bot. [Learn More](./timezone.md) -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Date/minute.md b/guide/Date/minute.md deleted file mode 100644 index 89438831..00000000 --- a/guide/Date/minute.md +++ /dev/null @@ -1,30 +0,0 @@ -# $minute - -Returns the current minute (0-59). - -#### Usage: - -```php -$minute -``` - -**Example:** - -This example demonstrates how to use the `$minute` function to display the current minute. - - - - !!exec $minute - - - 23 - - - -::: tip Timezone Information -By default, date and time functions use the UTC timezone. You can change the timezone used. [Learn More](./timezone.md) -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Date/parseDate.md b/guide/Date/parseDate.md deleted file mode 100644 index f0d76b20..00000000 --- a/guide/Date/parseDate.md +++ /dev/null @@ -1,33 +0,0 @@ -# $parseDate - -Converts milliseconds into a human-readable date or time format. - -#### Usage: `$parseDate[milliseconds; format]` - -**Arguments:** - -* `milliseconds`: The number of milliseconds to convert. -* `format`: Specifies the desired output format. Use `date` to get a formatted date or `time` to get a formatted time duration. - -
- -**Example:** - -This example demonstrates converting 1000 milliseconds to a time duration. - - - - !!exec $parseDate[1000;time] - - - 1 second - - - -**Explanation:** - -The command `$parseDate[1000;time]` converts 1000 milliseconds to a time format, resulting in the output "1 second". - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Date/parseTime.md b/guide/Date/parseTime.md deleted file mode 100644 index 550fdab2..00000000 --- a/guide/Date/parseTime.md +++ /dev/null @@ -1,71 +0,0 @@ -# $parseTime - -Convert human-readable time strings into a duration. This function accepts a single duration or multiple durations combined into one expression, and can optionally return the result in a different unit. - -## Usage - -```php -$parseTime[time;unit?] -``` - -**Arguments:** - -* `time`: A time duration to convert. Supported units include: - - * `ms` — milliseconds - * `s` — seconds - * `m` — minutes - * `h` — hours - * `d` — days - * `w` — weeks - * `M` — months (30 days) - * `y` — years (365 days) - -* `unit` *(optional)*: The unit to return. Supported values are `ms`, `s`, `m`, `h`, `d`, `w`, `M`, `y`, or their full names (such as `seconds`, `hours`, and `days`). Defaults to `ms`. - -Multiple durations can be combined by separating them with spaces. As a convenience, compact expressions without spaces are also supported. - -## Examples - - - - !!exec $parseTime[1m] - - - 60000 - - - - - - !!exec $parseTime[1h 30m] - - - 5400000 - - - - - - !!exec $parseTime[1h30m] - - - 5400000 - - - - - - !!exec $parseTime[1h30m;m] - - - 90 - - - -**Explanation:** - -* `$parseTime[1m]` converts 1 minute into `60000` milliseconds. -* `$parseTime[1h 30m]` converts 1 hour and 30 minutes into `5400000` milliseconds. -* `$parseTime[1h30m]` is interpreted the same way as `1h 30m` for convenience. -* `$parseTime[1h30m;m]` returns the result in minutes instead of milliseconds. diff --git a/guide/Date/second.md b/guide/Date/second.md deleted file mode 100644 index 63266e15..00000000 --- a/guide/Date/second.md +++ /dev/null @@ -1,27 +0,0 @@ -# $second - -Returns the current second (0-59). - -#### Usage: `$second` - -This function is simple! It just retrieves the current second of the minute. - -**Example:** - -
- - - - !!exec $second - - - 56 - - - -::: tip Timezone Considerations -Date functions default to using UTC timezone. You can change this if needed. [Learn More about Timezones](./timezone.md) -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Date/year.md b/guide/Date/year.md deleted file mode 100644 index 85423456..00000000 --- a/guide/Date/year.md +++ /dev/null @@ -1,32 +0,0 @@ -# $year - -Get the current year. - -This command returns the current year based on the configured timezone (default is UTC). - -#### Usage: - -```php -$year -``` - -**Example:** - -Here's how to use the `$year` command in a Discord message: - - - - !!exec $year - - - 2021 - - - -::: tip Timezone Information -Date functions default to the UTC timezone. You can customize the timezone used by your commands. [Learn More](./timezone.md) -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Image/imageCrop.md b/guide/Image/imageCrop.md deleted file mode 100644 index 36dc6495..00000000 --- a/guide/Image/imageCrop.md +++ /dev/null @@ -1,19 +0,0 @@ -# $imageCrop - -Crop a defined image from image builder - -## Usage - -```bash -$imageCrop[image name;x;y;width;height] -``` - -### Example: - - - !!exec $imageCreate[300;300] // Create Image Frame
$imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
$imageCrop[avatar;0;0;100;100] // crop the image from position (0, 0) with size 100
$imageDraw[avatar]
$image[$imageOutput]

-
- - [image] - -
\ No newline at end of file diff --git a/guide/Image/imageFill.md b/guide/Image/imageFill.md deleted file mode 100644 index 4f362368..00000000 --- a/guide/Image/imageFill.md +++ /dev/null @@ -1,57 +0,0 @@ -# $imageFill - -Fill a portion of an image with a specified color. - -## Usage - -```bash -$imageFill[color;x;y;width;height;opacity] -``` - -| Parameter | Description | Required | -| :-------- | :---------------------------------------------------------------------------------------------------------------------------- | :------- | -| `color` | The color to fill with. Can be a hex code (e.g., `#FF0000`) or a common color name (e.g., `gray`, `black`, `red`). | Yes | -| `x` | The x-coordinate of the top-left corner of the rectangle to fill. See [Positioning](./../CodeReferences/ref.imgbuild.position.md) for more details. | No | -| `y` | The y-coordinate of the top-left corner of the rectangle to fill. See [Positioning](./../CodeReferences/ref.imgbuild.position.md) for more details. | No | -| `width` | The width of the rectangle to fill. See [Sizing](./../CodeReferences/ref.imgbuild.size.md) for more details. | No | -| `height` | The height of the rectangle to fill. See [Sizing](./../CodeReferences/ref.imgbuild.size.md) for more details. | No | -| `opacity` | The opacity of the fill color (0-1, where 0 is fully transparent and 1 is fully opaque). Defaults to 1 if omitted. | No | - -## Examples - -### Example 1: Fill the entire image with gray. - -``` -!!exec $imageCreate[300;300] -$imageFill[gray] -$image[$imageOutput] -``` - - - - !!exec $imageCreate[300;300]
$imageFill[gray]
$image[$imageOutput]

-
- - - - -
- -### Example 2: Fill a 50x50 rectangle at (100, 100) with red. - -``` -!!exec $imageCreate[300;300] -$imageFill[gray] -$imageFill[red;100;100;50;50] -$image[$imageOutput] -``` - - - - !!exec $imageCreate[300;300]
$imageFill[gray]
$imageFill[red;100;100;50;50]
$image[$imageOutput]

-
- - - - -
diff --git a/guide/Image/imageLoadEmoji.md b/guide/Image/imageLoadEmoji.md deleted file mode 100644 index f5efb6df..00000000 --- a/guide/Image/imageLoadEmoji.md +++ /dev/null @@ -1,46 +0,0 @@ -# $imageLoadEmoji - -Loads an emoji (either a standard Unicode emoji or a custom Discord emoji) for use in image drawing. This allows you to easily add emojis to your images. - -## Usage - -```bash -$imageLoadEmoji[id;Emoji] -``` - -**Parameters:** - -* `id`: A unique identifier for the loaded emoji. You'll use this ID in the `$imageDraw` function to reference the emoji. Choose something descriptive and easy to remember. -* `Emoji`: The emoji you want to load. This can be either: - * A standard Unicode emoji (e.g., `:smile:`, `:heart:`) - * A custom Discord emoji in the format `<:emoji_name:emoji_id>` (e.g., `<:custom_emoji:123456789012345678>`). You can get the custom emoji format by typing the emoji in Discord and escaping it with a backslash (`\`), like this: `\:custom_emoji:` - -## Examples - -**Example 1: Loading and drawing a standard Unicode emoji** - -This example creates a 300x300 image, loads the `:cheese:` emoji, fills a gray rectangle, and then draws the cheese emoji on top. - - - - !!exec $imageCreate[300;300]
$imageLoadEmoji[mycheese;:cheese:]
$imageBorderRad[100]
$imageFill[gray;50;50;200;200]
$imageDraw[mycheese;100;100;100;100]
$image[$imageOutput]

-
- - - - -
- -**Example 2: Loading and drawing both a standard and a custom emoji** - -This example creates a 600x600 image, loads both a custom Discord emoji (using its ID) and the `:cheese:` emoji, and draws them both. - - - - !!exec $imageCreate[600;600]
$imageLoadEmoji[seed;<:seed:1149808771888062605>]
$imageLoadEmoji[cheese;:cheese:]
$imageBorderRad[100]
$imageFill[gray;50;200;200;200]
$imageFill[gray;350;200;200;200]
$imageDraw[cheese;100;250;100;100]
$imageDraw[seed;400;250;100;100]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file diff --git a/guide/Image/imageStrokeWidth.md b/guide/Image/imageStrokeWidth.md deleted file mode 100644 index 81dda819..00000000 --- a/guide/Image/imageStrokeWidth.md +++ /dev/null @@ -1,34 +0,0 @@ -# $imageStrokeWidth - -Controls the thickness of the stroke line used by the `$imageStroke` function. This allows you to customize the appearance of shapes and lines drawn on your images. - -## Usage - -```bash -$imageStrokeWidth[width] -``` - -### Parameters: - -* **`width`**: The desired thickness of the stroke line, measured in pixels. The default value is `1`. A higher number results in a thicker line. - -# Understanding Position (X & Y) - -For a deeper understanding of how to position elements using X and Y coordinates, refer to this resource: [Positioning Guide](./../CodeReferences/ref.imgbuild.position.md) - -# Understanding Size (Width & Height) - -To learn more about defining the size of elements using Width and Height, please see this guide: [Size Guide](./../CodeReferences/ref.imgbuild.size.md) - -### Example: - -This example demonstrates how to create a red square with a stroke thickness of 10 pixels, centered on a 300x300 canvas. - - - - !!exec $imageCreate[300;300]
$imagePositionBase[center]
$imageStrokeWidth[10]
$imageStroke[red;center;center;50;50]
$image[$imageOutput]

-
- -
-
-
\ No newline at end of file diff --git a/guide/Image/imageTextFill.md b/guide/Image/imageTextFill.md deleted file mode 100644 index cb2f6ec2..00000000 --- a/guide/Image/imageTextFill.md +++ /dev/null @@ -1,36 +0,0 @@ -# $imageTextFill - -Add filled text to an image. - -## Usage - -```bash -$imageTextFill[Text;position x;position y;color;opacity] -``` - -**Parameters:** - -* **Text:** The text you want to write on the image. -* **position x:** The x-coordinate for the text's position. See [Position: X & Y](./../CodeReferences/ref.imgbuild.position.md) for more details. -* **position y:** The y-coordinate for the text's position. See [Position: X & Y](./../CodeReferences/ref.imgbuild.position.md) for more details. -* **color:** The color of the text fill (e.g., `#4461b3`, `red`, `rgba(255,0,0,0.5)`). -* **opacity:** *This parameter is deprecated and no longer functional*. Use a rgba color value instead to specify opacity. - -## Related Information: - -* **Position: X & Y:** Learn more about specifying the X and Y coordinates for text placement [here](./../CodeReferences/ref.imgbuild.position.md). -* **Size: Width & Height:** Learn more about specifying width and height values related to images [here](./../CodeReferences/ref.imgbuild.size.md). *Note this link may not be directly relevant to this specific function, but is included for general context*. - -### Example: - -This example creates a 300x300 image, sets the text size to 30, aligns the text to the center, and then writes "CC is Awesome" at position 150,150 with the color #4461b3. - - - - !!exec $imageCreate[300;300]
$imageTextSize[30]
$imageTextAlign[center]
$imageTextFill[CC is Awesome;150;150;#4461b3]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file diff --git a/guide/Interaction/interactionEdit.md b/guide/Interaction/interactionEdit.md deleted file mode 100644 index a4460c15..00000000 --- a/guide/Interaction/interactionEdit.md +++ /dev/null @@ -1,32 +0,0 @@ -# $interactionEdit - -Edits a previously sent interaction, typically one created using `$interactionReply`. - -#### Usage: `$interactionEdit[New Message;message id (optional, defaults to the original interaction reply)]` - -
- -::: warning Important -This function only works within interaction-based triggers (e.g., slash commands, button clicks). Do not use it in `exec` or other trigger types. -::: - -
- -::: details Example -```php -$interactionreply[Hello world!;yes] -$wait[2s] -$interactionedit[Bye World!] -``` - -This example first sends an interaction reply ("Hello world!"). After a 2-second delay, it edits that same message to "Bye World!". - -![](https://cdn.discordapp.com/attachments/914682255346118687/937862286767435796/Screenshot_20220131210759.jpg) -::: - -::: tip Note -You can send embeds using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This allows for rich message formatting including titles, descriptions, fields, and more! -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/authorAvatar.md b/guide/Member/authorAvatar.md deleted file mode 100644 index b93d4fe5..00000000 --- a/guide/Member/authorAvatar.md +++ /dev/null @@ -1,44 +0,0 @@ -# $authorAvatar - -Returns the avatar (profile picture) URL of the user who executed the command. - -## Usage - -```bash -$authorAvatar[serverAvatar] -``` -1. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. - -## Examples - -#### Sending avatar URL - -How is the avatar URL displayed when sent with text and without text - - - - !!exec With text: $authorAvatar - - - With text: - https://cdn.discordapp.com/embed/avatars/0.png -
- User Avatar -
- - !!exec $authorAvatar - - - User Avatar - -
- -::: tip Note -You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. -To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). -::: - -##### Related functions: `$attachment` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/authorID.md b/guide/Member/authorID.md deleted file mode 100644 index 27a40376..00000000 --- a/guide/Member/authorID.md +++ /dev/null @@ -1,29 +0,0 @@ -# $authorID - -Returns the ID of the user who executed the command. - -## Usage - -```bash -$authorID -``` - -## Example - -#### Using $authorID - -How to use $authorID - - - - !!exec My ID is $authorID - - - My ID is 123456789123456789 - - - -##### Related functions: `$mention` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/ban.md b/guide/Member/ban.md deleted file mode 100644 index 6f75f49f..00000000 --- a/guide/Member/ban.md +++ /dev/null @@ -1,51 +0,0 @@ -# $ban - -Bans a user from the server. - -## Usage - -```bash -$ban[userID;reason;messages to delete] -``` -1. **userID** - The ID of the user to ban. -2. **reason** - The reason for the ban. -3. **messages to delete** - The number of days to delete messages from this user. Maximum is 7 days, limited by Discord. - -## Examples - -#### Sucessful ban - -Successful ban with no response - - - - !!exec $ban[123456789123456789;Spamming;7] - - - -#### Unsucessful ban - -Unsuccessful ban with error message - - - - !!exec $ban[$ownerID;Just a test;0] - - - ❌ bot is missing enough permissions at line 1 - - - -::: tip Permissions -Make sure that the bot does have sufficient permission. The bot also needs to be higher in role hierarchy then the user. -::: - -::: danger Important Note -If any member who can execute the command with this function, they will be able to ban any member below the bot's highest role. -Do not place the bot's role above Admin or Head Moderator roles to avoid banning important member. -::: - -##### Related functions: `$kick` `$unban` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/boostingSince.md b/guide/Member/boostingSince.md deleted file mode 100644 index 244b9892..00000000 --- a/guide/Member/boostingSince.md +++ /dev/null @@ -1,43 +0,0 @@ -# $boostingSince - -Returns the date a user started boosting the server. - -## Usage - -```bash -$boostingSince[userID;date/ms] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of user to return boosting date -2. **date/ms** - (Optional) default value: `date`. If date, it will return text in this format: `Day(name), Month(name) Day(number), Year(YYYY) Hours(HH):Minutes(MM) PM/AM`. If ms, timestamp in miliseconds will be returned. You can later format the timestamp using `$formatDate`. - -## Example - -#### Using $boostingSince - -Multiple ways of using function $boostingSince - - - - !!exec $boostingSince - - - Wednesday, January 1, 2025 08:30 PM - - - !!exec $boostingSince[123456789123456789;ms] - - - 1735763400000 - - - !!exec $formatDate[$boostingSince[123456789123456789;ms];MM-DD-YYYY] - - - 01-01-2025 - - - -##### Related functions: `$formatDate` `$timeToDate` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/changeNickname.md b/guide/Member/changeNickname.md deleted file mode 100644 index 2883f977..00000000 --- a/guide/Member/changeNickname.md +++ /dev/null @@ -1,39 +0,0 @@ -# $changeNickname - -Changes the nickname of a specified member in the server. - -## Usage: - -```bash -$changeNickname[userID;nickname] -``` -1. **userID** - The ID of the member whose nickname you want to change. -2. **nickname** - The new nickname you want to assign to the member. - -## Example - -#### Using $changeNickname - -Changing the nickname of the command author - - - - !!exec $changeNickname[$authorID;Steve] - - - Hello - - - -::: tip Permissions -The bot requires the "Manage Nicknames" permission to change nicknames and only change nicknames of members with roles lower than bots highest role. -::: - -::: danger Discord restiriction -Discord doesn't allow others to change owners nickname. If you will try to change nickname of an invalid member or owner, error message will be shown. -::: - -##### Related functions: `$nickname` - -##### Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/discriminator.md b/guide/Member/discriminator.md deleted file mode 100644 index b8155590..00000000 --- a/guide/Member/discriminator.md +++ /dev/null @@ -1,34 +0,0 @@ -# $discriminator - -Returns the discriminator of the user who executed the command, or a specified member. - -## Usage: - -```bash -$discriminator[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of user you want to return the discriminator from. - -## Example - -#### Using $discriminator - -Returning a discriminator from user - - - - !!exec $discriminator - - - 1234 - - - -::: warning Note -This feature is deprecated because Discord switched to usernames. This function will return 0 as of the username update. This still works on bots. -::: - -##### Related functions: `$username` `$nickname` `$userTag` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/displayName.md b/guide/Member/displayName.md deleted file mode 100644 index 3bf21926..00000000 --- a/guide/Member/displayName.md +++ /dev/null @@ -1,30 +0,0 @@ -# $displayName - -Returns the display name of a specified user. This is the name that's shown for the user in a specific server, which might be different from their global name. - -## Usage - -```bash -$displayName[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return display name from. - -## Example - -#### Using $displayName - -How to return display name from author - - - - !!exec $displayName - - - User - - - -##### Related functions: `$nickname` `$username` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/findMember.md b/guide/Member/findMember.md deleted file mode 100644 index 2f89d6ef..00000000 --- a/guide/Member/findMember.md +++ /dev/null @@ -1,51 +0,0 @@ -# $findMember - -Searches for a user in the current server by their nickname, ID, mention, username, or username with discriminator. Returns userID of the found user. - -## Usage: - -```bash -$findMember[query;returnCurrentUser] -``` -1. **query** - Can be userID, nickname, mention, username, username#descriminator. -2. **returnCurrentUser** - (Optional) default value: `yes`. Can be either `yes` or `no`. If this is set to yes, when user is not found, it will return $authorID. If it's no, and user is not found, it will return undefined. - -## Example - -#### Successful search - -Searching for existing user - - - - !!exec $findMember[user2;no] - - - 123456789123456789 - - - -#### Unsuccessful search - -Searching for invalid user - - - - !!exec $findMember[user123;no] - - - undefined - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$userID` `$authorID` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/getUserBadges.md b/guide/Member/getUserBadges.md deleted file mode 100644 index d481eee6..00000000 --- a/guide/Member/getUserBadges.md +++ /dev/null @@ -1,34 +0,0 @@ -# $getUserBadges - -Returns the Discord badges from specified user. If none found, returns `none`. If found multiple, separated by `, `. - -## Usage - -```bash -$getUserBadges[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. Which user to return badges from. - -## Example - -#### Using $getUserBadges - -How to return badges from command author - - - - !!exec $getUserBadges - - - Active Developer - - - -::: danger Warning -Not all badges are 100% guranteed. -::: - -##### Related functions: `$userBanner` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/globalName.md b/guide/Member/globalName.md deleted file mode 100644 index 1a7efe54..00000000 --- a/guide/Member/globalName.md +++ /dev/null @@ -1,30 +0,0 @@ -# $globalName - -Returns the global name of the user - -## Usage - -```bash -$globalName[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return global name from. - -## Example - -#### Using $globalName - -How to return the global name from author - - - - !!exec $globalName - - - User - - - -##### Related functions: `$displayName` `$nickname` `$username` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/hasAnyPerm.md b/guide/Member/hasAnyPerm.md deleted file mode 100644 index 68010f51..00000000 --- a/guide/Member/hasAnyPerm.md +++ /dev/null @@ -1,41 +0,0 @@ -# $hasAnyPerm - -Checks if a user has one of the given permissions. Returns `true` or `false`. - -## Usage - -```bash -$hasAnyPerm[userID;permission1;permission2;...] -``` -1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. -2. **permission N** - You can add as many permissions as needed. The available permissions are here: [Permissions List](../CodeReferences/ref.permissions_list.md). - -## Example - -#### Using $hasAnyPerm - -How to use $hasAnyPerm without user argument. Keep in mind that if the user does have only one of listed permissions, true will be returned. - - - - !!exec I have managechannels OR manageroles permission: $hasAnyPerm[managechannels;manageroles] - - - I have managechannels OR manageroles permission: true - - - !!exec I have managechannels permission: $hasAnyPerm[managechannels], I have manageroles permission: $hasAnyPerm[manageroles] - - - I have managechannels permission: true, I have manageroles permission: false - - - -::: tip Suggestion -To make code stop if the user doesn't have the needed permission, you can check out `$onlyIf`. For multiple actions, check `$if`. -::: - -##### Related functions: `$hasPerms` `$hasAnyRole` `$hasRole` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/hasAnyRole.md b/guide/Member/hasAnyRole.md deleted file mode 100644 index da8a6327..00000000 --- a/guide/Member/hasAnyRole.md +++ /dev/null @@ -1,41 +0,0 @@ -# $hasAnyRole - -Checks if a user has one of the given roles. Returns `true` or `false`. - -## Usage - -```bash -$hasAnyRole[userID;roleID1;roleID2;...] -``` -1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. -2. **role N** - You can add as many roles as needed. - -## Example - -#### Using $hasAnyRole - -How to use $hasAnyRole without user argument. Keep in mind that if the user does have only one of listed roles, true will be returned. - - - - !!exec I have Admin OR Manager role: $hasAnyRole[admin;manager] - - - I have Admin OR Manager role: true - - - !!exec I have Admin role: $hasAnyRole[admin], I have Manager role: $hasAnyRole[manager] - - - I have Admin role: true, I have Manager role: false - - - -::: tip Suggestion -To make code stop if the user doesn't have the needed role, you can check out `$onlyIf`. For multiple actions, check `$if`. -::: - -##### Related functions: `$hasPerms` `$hasAnyPerm` `$hasRole` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/hasPerms.md b/guide/Member/hasPerms.md deleted file mode 100644 index e3e94e59..00000000 --- a/guide/Member/hasPerms.md +++ /dev/null @@ -1,35 +0,0 @@ -# $hasPerms - -Checks if user has all of the given permissions. Returns `true` or `false`. - -## Usage: - -```bash -$hasPerms[userID;perm1;perm2;...] -``` -1. **userID** - User you want to check for permissions. -2. **perm N** - You can add as many permissions as needed. The available permissions are here: [Permissions List](../CodeReferences/ref.permissions_list.md). - -## Example - -#### Using $hasPerms - -How to use $hasPerms. Keep in mind that only if the user does have all of listed permissions, true will be returned. - - - - !!exec $hasPerms[$authorID;sendmessages] - - - true - - - -::: tip Suggestion -To make code stop if the user doesn't have the needed permission, you can check out `$onlyIf`. For multiple actions, check `$if`. -::: - -##### Related functions: `$hasAnyPerm` `$hasAnyRole` `$hasRole` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/hasRoles.md b/guide/Member/hasRoles.md deleted file mode 100644 index d6786ef4..00000000 --- a/guide/Member/hasRoles.md +++ /dev/null @@ -1,35 +0,0 @@ -# $hasRoles - -Checks if user has all of the given roles. Returns `true` or `false`. - -## Usage: - -```bash -$hasRoles[userID;role1;role2;...] -``` -1. **userID** - User you want to check for roles. -2. **role N** - You can add as many roles as needed. - -## Example - -#### Using $hasRoles - -How to use $hasRoles. Keep in mind that only if the user does have all of listed roles, true will be returned. - - - - !!exec $hasRoles[$authorID;123456789123456789] - - - true - - - -::: tip Suggestion -To make code stop if the user doesn't have the needed role, you can check out `$onlyIf`. For multiple actions, check `$if`. -::: - -##### Related functions: `$hasAnyPerm` `$hasPerms` `$hasAnyRole` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/isBanned.md b/guide/Member/isBanned.md deleted file mode 100644 index 96ae0c38..00000000 --- a/guide/Member/isBanned.md +++ /dev/null @@ -1,30 +0,0 @@ -# $isBanned - -Checks if a user is banned from the guild. Returns `true` or `false`. - -## Usage - -```bash -$isBanned[userID] -``` -1. **userID** - The ID of the user to check if it's banned. - -## Example - -#### Using $isBanned - -How to use $isBanned - - - - !!exec $isBanned[123456789123456789] - - - false - - - -##### Related functions: `$kick` `$ban` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/isUserDMEnabled.md b/guide/Member/isUserDMEnabled.md deleted file mode 100644 index 8f403afa..00000000 --- a/guide/Member/isUserDMEnabled.md +++ /dev/null @@ -1,30 +0,0 @@ -# $isUserDMEnabled - -This function checks if a user has direct messages (DMs) enabled. It returns `true` if DMs are enabled, and `false` if not. - -## Usage - -```bash -$isUserDMEnabled[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of the user you want to check. - -## Example - -#### Using $isUserDMEnabled - -How to use $isUserDMEnabled - - - - !!exec $isUserDMEnabled[123456789123456789] - - - true - - - -##### Related functions: `$dm` `$sendDM` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/kick.md b/guide/Member/kick.md deleted file mode 100644 index bf19f995..00000000 --- a/guide/Member/kick.md +++ /dev/null @@ -1,51 +0,0 @@ -# $kick - -Kicks a user from the server. - -## Usage - -```bash -$kick[userID;reason] -``` -1. **userID** - The ID of the user to kick. -2. **reason** - (Optional) The reason for kick. You can see this in Audit Log. - -## Example - -#### Successful kick - -Successfull kick with no response - - - - !!exec $kick[123456789123456789;Spamming] - - - -#### Unsucessful kick - -Unsuccessful kick with error message - - - - !!exec $kick[$ownerID;Spamming] - - - ❌ bot is missing enough permissions at line 1 - - - -::: tip Bot is missing enough permissions -The most common reason is that the bot's role is lower in the role hierarchy than the member you are trying to ban. -Discord doesn't allow members and bots from kicking members with a higher or equal highest role. Ensure the bot's highest role is above the target user. -::: - -::: danger Important Note -If any member who can execute the command with this function, they will be able to kick any member below the bot's highest role. -Do not place the bot's role above Admin or Head Moderator roles to avoid kicking important member. -::: - -##### Related functions: `$ban` `$unban` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/memberSearch.md b/guide/Member/memberSearch.md deleted file mode 100644 index 58797e08..00000000 --- a/guide/Member/memberSearch.md +++ /dev/null @@ -1,64 +0,0 @@ -# $memberSearch - -Search for members with username or nickname in the server and get their information - -## Usage - -```bash -$memberSearch[username/nickname;amount to return (Default is 1);separator (Default is ,);info to return (Default is id)] -``` - -### Info To Return: -By default it is `id`, but you can pick from: - -* `id`: to return the found user id\ -* `username`: to return the found user's username\ -* `nickname`: to return the found user's nickname in the server\ -* `name`: to return the found user's display name in the server -> You can also use combination of them, like `name (id)` to be replaced with `Mido (12345678901234567)` - -> You can know more information about the user with the use of `$user` - -### Amount to Return: -It determines how many users it will return if they match the query, by default it is 1 -> When multiple user returned, they will merged together with the `separator` - -### Example (Search and member is found): - - - !!exec $memberSearch[mido.dev]

-
- - 788361834360864808

-
-
- -### Example (Search and multiple members are found): - - - !!exec $memberSearch[A;5;, ;name]

-
- - Alpha, Alight, A living legend, A story in life

-
-
- -### Example (Search but member is not found): - - - !!exec $memberSearch[bad.dev]

-
- -
-
-
- -### Example (Search and use the user id to retrieve join date): - - - !!exec $let[user_id;$memberSearch[mido.dev]]
Mido joined the server at: $memberJoinedDate[$user_id]

-
- - Mido joined the server at: Wed Mar 09 2022 22:06:21 - -
\ No newline at end of file diff --git a/guide/Member/membersWithStatus.md b/guide/Member/membersWithStatus.md deleted file mode 100644 index 66c8f8a8..00000000 --- a/guide/Member/membersWithStatus.md +++ /dev/null @@ -1,50 +0,0 @@ -# $membersWithStatus - -Returns a list of member IDs who have specified status within the server separated by comma. - -## Usage - -```bash -$membersWithStatus[Status1;Status2;...] -``` -1. **Status N** - You can add multiple statuses. Can be `online`, `idle`, `dnd` (Do Not Disturb), `offline` (Includes invisible users), `streaming` (only valid for activities), `mobile` (only valid for platforms), `desktop` (only valid for platforms), `web` (only valid for platforms) - -## Example - -#### Single status in $membersWithStatus - -How to use $membersWithStatus with one status specified - - - - !!exec $membersWithStatus[online] - - - 123456789123456789,987654321987654321 - - - -#### Multiple statuses in $membersWithStatus - -How to use $membersWithStatus with multiple statuses specified - - - - !!exec $membersWithStatus[online;idle] - - - 123456789123456789,987654321987654321,765432198765432198 - - - -::: danger Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$status` - -##### Function difficulty: -###### Tags: diff --git a/guide/Member/mention.md b/guide/Member/mention.md deleted file mode 100644 index d174133d..00000000 --- a/guide/Member/mention.md +++ /dev/null @@ -1,32 +0,0 @@ -# $mention - -Returns a mention of a user. - -## Usage - -```bash -$mention[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of user to get mentioned. - -## Example - -#### Using $mention - -How to use $mention for author or other user - - - - !!exec Me: $mention
- Other user: $mention[123456789123456789] -
- - Me: User
- Other user: Other User -
-
- -##### Related functions: `$username` `$nickname` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/nickname.md b/guide/Member/nickname.md deleted file mode 100644 index bfac5358..00000000 --- a/guide/Member/nickname.md +++ /dev/null @@ -1,30 +0,0 @@ -# $nickname - -Returns the nickname of the user or the display name if you specified the 2nd input - -## Usage - -```bash -$nickname[User ID;Return Display name if no nickname exists (yes/no, default is no)] -``` -1. **User ID** - (Optional) default value: `$authorID`. The ID of user to return nickname from. - -## Example - -#### Using $nickname - -How to use $nickname - - - - !!exec $nickname - - - ImUser - - - -##### Related functions: `$changeNickname` `$username` `$discriminator` `$userTag` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/status.md b/guide/Member/status.md deleted file mode 100644 index b6f4f819..00000000 --- a/guide/Member/status.md +++ /dev/null @@ -1,36 +0,0 @@ -# $status - -
- -Returns the status of a user. Can be `online`, `offline`, `idle` or `dnd`. - -## Usage - -```bash -$status[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of user to return the status from. - -## Example - -#### Using $status - -How to use $status - - - - !!exec $status - - - online - - - -::: danger Important Note -This function requires the Presence Intent to be enabled. You can change that in Discord Developer Portal under your Bot settings. -::: - -##### Related functions: `$membersWithStatus` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/unban.md b/guide/Member/unban.md deleted file mode 100644 index b2928410..00000000 --- a/guide/Member/unban.md +++ /dev/null @@ -1,32 +0,0 @@ -# $unban - -Unbans a user from the server. - -## Usage - -```bash -$unban[userID/username;reason] -``` -1. **userID/username** - The ID or username of user to unban. -2. **reason** - (Optional) default value: (none). The reason for the unban. You can see this in Audit Log. - -## Example - -#### Using $unban - -How to unban user with a reason - - - - !!exec $unban[123456789123456789;Appeal successful] - - - -::: tip Permissions -Make sure that the bot does have sufficient permission. -::: - -##### Related functions: `$kick` `$ban` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userAvatar.md b/guide/Member/userAvatar.md deleted file mode 100644 index ef256a02..00000000 --- a/guide/Member/userAvatar.md +++ /dev/null @@ -1,46 +0,0 @@ -# $userAvatar - -Returns the avatar (profile picture) URL of the user who was specified. - -## Usage -```bash -$userAvatar[userID;size;dynamic;serverAvatar] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return avatar URL from. -2. **size** - (Optional) default value: `2048`. The size of user avatar to return in pixels. -3. **dynamic** - (Optional) default value: `yes`. Can be `yes` or `no`. If yes, animated avatar URL will be returned (if they have animated). If no, static image will be returned. -4. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. - -## Examples - -#### Sending avatar URL - -How is the avatar URL displayed when sent with text and without text - - - - !!exec With text: $userAvatar - - - With text: - https://cdn.discordapp.com/embed/avatars/0.png -
- User Avatar -
- - !!exec $userAvatar - - - User Avatar - -
- -::: tip Note -You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. -To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). -::: - -##### Related functions: `$attachment` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userBanner.md b/guide/Member/userBanner.md deleted file mode 100644 index adbae7b7..00000000 --- a/guide/Member/userBanner.md +++ /dev/null @@ -1,57 +0,0 @@ -# $userBanner - -Returns the banner URL of a user. - -## Usage - -```bash -$userBanner[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return banner URL from. If no banner is found, returns `undefined`. - -## Example - -#### Banner is available - -How is the banner URL displayed when sent with text and without text - - - - !!exec With text: $userBanner - - - With text: - https://cdn.discordapp.com/banners/287135364127129601/a_0c1e74ef99e35d10f868bd839066e022.png -
- User Banner -
- - !!exec $userBanner - - - User Banner - -
- -#### Banner is not available - -What shows when user does not have banner - - - - !!exec $userBanner - - - undefined - - - -::: tip Note -You can send the image as an attachment, so no link will be displayed. For this, you can use function `$attachment`. -To display the avatar URL as plain text, either enclose the function in backticks (`` `$authorAvatar` ``) or angle brackets (`<$authorAvatar>`). -::: - -##### Related functions: `$attachment` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userConnectedVC.md b/guide/Member/userConnectedVC.md deleted file mode 100644 index 4b556bad..00000000 --- a/guide/Member/userConnectedVC.md +++ /dev/null @@ -1,43 +0,0 @@ -# $userConnectedVC - -Returns the ID of a voice channel the user is currently connected to. - -## Usage - -```bash -$userConnectedVC[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return voice channel they are connected to. - -## Example - -#### Is connected to a voice channel - -What happens if user is connected to a voice channel - - - - !!exec $userConnectedVC - - - 123456789987654321 - - - -#### Is not connected to a voice channel - -What happens if user is not connected to a voice channel - - - - !!exec $userConnectedVC - - - undefined - - - -##### Related functions: `$vcBefore` `$vcAfter` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userExists.md b/guide/Member/userExists.md deleted file mode 100644 index 4d560cc9..00000000 --- a/guide/Member/userExists.md +++ /dev/null @@ -1,37 +0,0 @@ -# $userExists - -Checks if a user exists in the server. Returns `true` if the user exists, and `false` if not. - -## Usage - -```bash -$userExists[userID] -``` -1. **userID** - The ID of the user to check. If left empty, false will be returned. - -## Example - -#### Using $userExists - -How to use $userExists - - - - !!exec $userExists[$authorID] - - - true - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$findMember` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userID.md b/guide/Member/userID.md deleted file mode 100644 index 6a408f89..00000000 --- a/guide/Member/userID.md +++ /dev/null @@ -1,36 +0,0 @@ -# $userID - -Returns a user ID based on the given username. - -## Usage -```bash -$userID[username] -``` -1. **username** - (Optional) if not provided, $authorID will be returned. The username of a user you want to return ID of. - -## Example - -#### Using $userID - -How to use $userID - - - - !!exec $userID[user] - - - 123456789123456789 - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$authorID` `$findMember` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userPerms.md b/guide/Member/userPerms.md deleted file mode 100644 index 4a9bbd98..00000000 --- a/guide/Member/userPerms.md +++ /dev/null @@ -1,38 +0,0 @@ -# $userPerms - -Returns a list of permissions a user has across the server based on their roles. - -## Usage - -```bash -$userPerms[userID;separator] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return permissions from. -2. **separator** - (Optional) default value: `, `. The separator used for creating permission list. - -## Example - -#### Using $userPerms - -How to use $userPerms - - - - !!exec $userPerms[;/] - - - View Channel/Send Messages/Mention Everyone - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$rolePerms` `$hasPerms` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userRoleColor.md b/guide/Member/userRoleColor.md deleted file mode 100644 index 72f71a7f..00000000 --- a/guide/Member/userRoleColor.md +++ /dev/null @@ -1,37 +0,0 @@ -# $userRoleColor - -Returns the hex color code of the users highest role. - -## Usage - -```bash -$userRoleColor[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return top role color from. - -## Example - -#### Using $userRoleColor - -How to use $userRoleColor - - - - !!exec $userRoleColor - - - #d6e0ff - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$userRoles` - -##### Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/userTag.md b/guide/Member/userTag.md deleted file mode 100644 index 9177961e..00000000 --- a/guide/Member/userTag.md +++ /dev/null @@ -1,34 +0,0 @@ -# $userTag - -Returns the username and tag (discriminator) of a user. - -## Usage - -```bash -$userTag[userID] -``` -1. **userID** - (Opional) default value: `$authorID`. The ID of a user you want to return username and tag from. - -## Example - -#### Using $userTag - -How to use $userTag - - - - !!exec $userTag - - - user#1234 - - - -::: warning Note -This feature is deprecated because Discord switched to usernames. This function will return only username as of the username update. This still works on bots. -::: - -##### Related functions: `$nickname` `$discriminator` `$username` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/username.md b/guide/Member/username.md deleted file mode 100644 index f491e253..00000000 --- a/guide/Member/username.md +++ /dev/null @@ -1,37 +0,0 @@ -# $username - -Returns the username of the given user. - -## Usage - -```bash -$username[userID] -``` -1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return nickname from. - -## Example - -#### Using $nickname - -How to use $nickname - - - - !!exec $nickname - - - User - - - -::: warning Cache -This function works on the bot's cache to find members. -If the user is not cached, the function will not find them. -User will be cached after they trigger any command from this bot, but eventually they will get deleted.
-To have all members cached, you will need Tier 5 Bot. -::: - -##### Related functions: `$nickname` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Member/usersBanned.md b/guide/Member/usersBanned.md deleted file mode 100644 index 25acd2c1..00000000 --- a/guide/Member/usersBanned.md +++ /dev/null @@ -1,35 +0,0 @@ -# $usersBanned - -Returns a list of users banned from the current server. - -## Usage - -```bash -$usersBanned[type;separator] -``` -1. **type** - (Optional) default value: `username`. Can be `id`, `username` or `mention`. What format of returned users do you want. -2. **separator** - (Optional) default value: `, `. The separator used for creating the list of users. - -## Example - -#### Using $usersBanned - -How to use $usersBanned - - - - !!exec $usersBanned - - - user, user1, user2 - - - -::: tip Permissions -Make sure that the bot does have sufficient permission. -::: - -##### Related functions: `$ban` `$unban` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Message/messageAttachment.md b/guide/Message/messageAttachment.md deleted file mode 100644 index 7fb541b6..00000000 --- a/guide/Message/messageAttachment.md +++ /dev/null @@ -1,33 +0,0 @@ -# $messageAttachment - -This function retrieves the URL of the first attachment found in a message. If a message has multiple attachments, only the URL of the first one will be returned. - -#### Usage: - -```php -$messageAttachment -``` - -
- -#### Example: - -This example demonstrates how `$messageAttachment` can be used. - - - - !!exec $messageAttachment - - - https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp - - - -**Explanation:** - -* The member sends the command `!!exec $messageAttachment`. -* The bot returns the URL of the first attachment in the member's message. If the message does not contain any attachment it will return an empty string. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Message/messageExists.md b/guide/Message/messageExists.md deleted file mode 100644 index 89ff9aec..00000000 --- a/guide/Message/messageExists.md +++ /dev/null @@ -1,31 +0,0 @@ -# $messageExists - -Checks if a message exists in a specified channel and returns `true` or `false`. - -#### Usage: - -`$messageExists[channelID;messageID]` - -* **channelID:** The ID of the channel where the message should be checked. -* **messageID:** The ID of the message to check for. - -
- -**Example:** - -Let's say you want to check if a message with the ID `123456789012345678` exists in the channel with the ID `987654321098765432`. - - - - !!exec $messageExists[987654321098765432;123456789012345678] - - - true - - - -In this example, if the message exists, the bot will return `true`. If the message doesn't exist, the bot will return `false`. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Message/messageType.md b/guide/Message/messageType.md deleted file mode 100644 index 1f8908c0..00000000 --- a/guide/Message/messageType.md +++ /dev/null @@ -1,28 +0,0 @@ -# $messageType - -This function returns the type of the message that triggered the command. This can be useful for creating commands that behave differently depending on how they were called. - -#### Usage: `$messageType` - -
- -**Example:** - -Here's how `$messageType` might be used in a custom command: - - - - !!exec $messageType - - - Default - - - -::: tip Note -The `$messageType` function returns a specific message type. You can find a list of possible return values [here](../CodeReferences/ref.message_types.md). These values represent different ways a message can be sent, such as a regular text message, a system message, or an interaction response. -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Message/messageWebhookID.md b/guide/Message/messageWebhookID.md deleted file mode 100644 index ccb82c0f..00000000 --- a/guide/Message/messageWebhookID.md +++ /dev/null @@ -1,26 +0,0 @@ -# $messageWebhookID - -Retrieves the ID of the webhook that sent the message. - -#### Usage: - -`$messageWebhookID` - -This function requires no arguments and simply returns the webhook ID. - -
- - - - !!exec $messageWebhookID - - - 683630053686378498 - - - -**Example:** If a webhook with the ID `683630053686378498` sent the message, the function would return `683630053686378498`. - -##### Function difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Message/noEscapingMessage.md b/guide/Message/noEscapingMessage.md deleted file mode 100644 index 0d48f6bc..00000000 --- a/guide/Message/noEscapingMessage.md +++ /dev/null @@ -1,35 +0,0 @@ -# $noEscapingMessage - -This function behaves similarly to `$message`, but it **does not escape special characters**. This means characters like backticks (`) or newlines will be interpreted literally and won't be replaced with their escaped counterparts. - -#### Usage: `$noEscapingMessage` - -
- - - - !!exec `` `$` $noEscapingMessage `` ` - - - `` `$` `` ` - - - !!exec `` `$` `` ` - - - `` `#CHAR#` `` ` - - - -::: danger READ CAREFULLY BEFORE USING! - -**ONLY use this function if you understand the implications and are comfortable handling potentially unsafe characters.** Using `$noEscapingMessage` carelessly can lead to command errors, unexpected behavior, or even security vulnerabilities. Always sanitize your inputs and be aware of the context in which this function is being used. -::: - -::: tip - -For most use cases, it's recommended to use `$message` to ensure proper character escaping and prevent unexpected issues. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Message/noMentionMessage.md b/guide/Message/noMentionMessage.md deleted file mode 100644 index 1ce382c5..00000000 --- a/guide/Message/noMentionMessage.md +++ /dev/null @@ -1,30 +0,0 @@ -# $noMentionMessage - -The `$noMentionMessage` function returns the content of the message sent by the command executor, but with all mentions removed. This is particularly useful for preventing your bot from accidentally pinging roles or users when echoing user input or using it in other command logic. - -#### Usage: - -`$noMentionMessage` - -This function doesn't require any parameters. It simply returns the message content with mentions stripped out. - -#### Example: - -Let's say you want to echo the user's message in a custom command, but you don't want the bot to actually ping anyone they mentioned. - -Here's how it would look in Discord: - - - - !!exec Server Moderator testing [$noMentionMessage] ($message) - - - Server Moderator [testing] (Server Moderator testing) - - - -In this example, even though the user mentioned "Server Moderator", the bot only mentions them once and then includes "testing" (the message with mentions removed). The original message including the mention is also included. - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Message/sendDM.md b/guide/Message/sendDM.md deleted file mode 100644 index 916c40fd..00000000 --- a/guide/Message/sendDM.md +++ /dev/null @@ -1,42 +0,0 @@ -# $sendDM - -Sends the output of the code to the message author's DMs or to the DMs of a specified user. - -#### Usage: `$sendDM[userID;message]` - -* `userID`: (Optional) The ID of the user to send the DM to. If omitted, the DM will be sent to the message author. -* `message`: The message to send in the DM. - -
- -**Example 1: Sending a DM to the message author multiple times.** - - - - !!exec $sendDM[$authorID;I can add this multiple times in my code! This is time 1] - $sendDM[$authorID;I can add this multiple times in my code! This is time 2] - - - -
- - - - I can add this multiple times in my code! This is time 1 - - - I can add this multiple times in my code! This is time 2 - - - -::: tip Note -You can send embeds using the [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This allows you to create richly formatted messages within the DM. -::: - -::: tip Related Functions -* `$channelSendMessage`: Sends a message to a specific channel in the server. -* `$sendMessage`: Sends a message to the channel where the command was used. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Message/sendMessage.md b/guide/Message/sendMessage.md deleted file mode 100644 index 2113a50a..00000000 --- a/guide/Message/sendMessage.md +++ /dev/null @@ -1,46 +0,0 @@ -# $sendMessage - -Sends a message to the channel where the command was executed. - -#### Usage: `$sendMessage[message;return ID (yes/no) (optional)]` - -**Arguments:** - -* `message`: The content of the message to send. -* `return ID`: (Optional) Determines whether to return the ID of the sent message. Use `yes` to return the ID, `no` to not return it. Defaults to `no` if not provided. - -
- -**Example:** - -```discord -!!exec $sendMessage[This is a fantastic message!;no] -``` - - - - !!exec $sendMessage[This is a fantastic message!;no] - - - This is a fantastic message! - - - -#### More Examples - -**Sending an embed:** - -It is recommended to use [Message Curl Format](../CodeReferences/ref.message_curl_format.md) to send more complex messages like embeds - -![](https://i.imgur.com/A7UbSpj.png) - -::: tip Note -You can send more complex structures like embed titles, footers, buttons, and menus through [Message Curl Format](../CodeReferences/ref.message_curl_format.md). This provides greater control over the appearance and functionality of your messages. -::: - -::: tip Related Functions -* `$channelSendMessage`: Send a message to a specific channel. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Message/webhookExists.md b/guide/Message/webhookExists.md deleted file mode 100644 index d3e87402..00000000 --- a/guide/Message/webhookExists.md +++ /dev/null @@ -1,25 +0,0 @@ -# $webhookExists - -Checks if a webhook exists using its ID and token. Returns `true` if the webhook exists, and `false` otherwise. - -#### Usage: - -`$webhookExists[webhookID;webhookToken]` - -* **webhookID:** The ID of the webhook to check. -* **webhookToken:** The token of the webhook to check. - -
- - - - !!exec $webhookExists[940749xx...;Oc_BoyAWxx...] - - - true - - - -##### Function difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Random/randomMention.md b/guide/Random/randomMention.md deleted file mode 100644 index 2667183b..00000000 --- a/guide/Random/randomMention.md +++ /dev/null @@ -1,31 +0,0 @@ -# $randomMention - -Returns a random mention from the current server. This function is useful for things like raffles, giveaways, or randomly selecting a user. - -#### Usage: - -```php -$randomMention -``` - -
- -**Example:** - -This example shows how to use `$randomMention` to mention a random user in a command. - - - - !!exec $randomMention - - - @Lisa - - - -::: danger Warning -The mentions returned by this function are pulled from the server's cached member list. This means that if all members haven't been cached yet (common in larger servers, especially those below "Tier 5" boosting), it may not include *every* member in the server. For best results, ensure your bot has access to all members. -::: - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Random/randomRoleID.md b/guide/Random/randomRoleID.md deleted file mode 100644 index a2124f73..00000000 --- a/guide/Random/randomRoleID.md +++ /dev/null @@ -1,30 +0,0 @@ -# $randomRoleID - -This function returns a random Role ID from a Role present in the server. It's a simple way to pick a random role ID for various purposes in your custom commands. - -#### Usage: - -```php -$randomRoleID -``` - -
- -**Example:** - -Here's how you can use `$randomRoleID` in a custom command: - - - - !!exec $randomRoleID - - - 82907890789087988 - - - -In this example, the command `!!exec $randomRoleID` will output a random role ID from your server (e.g., `82907890789087988`). - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Random/randomString.md b/guide/Random/randomString.md deleted file mode 100644 index 5eb8f85f..00000000 --- a/guide/Random/randomString.md +++ /dev/null @@ -1,29 +0,0 @@ -# $randomString - -Generates a random string of a specified length. This function is useful for creating unique identifiers, temporary passwords, or simply adding randomness to your commands. - -#### Usage: - -`$randomString[length]` - -* `length`: (Required) The desired length of the random string. This should be a positive integer. - -
- -#### Example: - -This example demonstrates how to use `$randomString` to generate a 6-character random string. - - - - !!exec `$randomString[6]` - - - qe90bT - - - -In this example, the command `!!exec $randomString[6]` will generate a random string of 6 characters, such as `qe90bT`. The output will vary each time the command is executed. - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Random/randomUserID.md b/guide/Random/randomUserID.md deleted file mode 100644 index 8dc95205..00000000 --- a/guide/Random/randomUserID.md +++ /dev/null @@ -1,28 +0,0 @@ -# $randomUserID - -Retrieves a random user ID from a user within the server. - -#### Usage: - -```php -$randomUserID -``` - -
- - - - !!exec $randomUserID - - - 97907890789087988 - - - -::: danger Important -The user ID is selected randomly from the server's cached members. This means the returned user ID might not always represent a currently active member, especially if all guild members are not cached (typically only guaranteed in higher server tiers). -::: - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Request/httpRequestHeader.md b/guide/Request/httpRequestHeader.md deleted file mode 100644 index d684df25..00000000 --- a/guide/Request/httpRequestHeader.md +++ /dev/null @@ -1,32 +0,0 @@ -# $httpRequestHeader - -Returns the value of a given header from the last request. - -## Usage - -```bash -$httpRequestHeader[header name] -``` -1. **header name** - The header name to return value from. (case-insensitive) - -## Example - -#### Using $httpRequestHeader - -How to return Content-Type from last request - - - - !!exec $httpRequest[https://api.example.com/]
- Content-Type Header: $httpRequestHeader[content-type] -
- - {"message": "Api response!"}
- Content-Type Header: application/json -
-
- -##### Related functions: `$httpRequest` `$httpRequestStatus` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Request/httpRequestStatus.md b/guide/Request/httpRequestStatus.md deleted file mode 100644 index c3e88a8f..00000000 --- a/guide/Request/httpRequestStatus.md +++ /dev/null @@ -1,31 +0,0 @@ -# $httpRequestStatus - -Returns the $httpRequest status code of the last request. - -## Usage - -```bash -$httpRequestStatus -``` - -## Example - -#### Using $httpRequestStatus - -How to use $httpRequestStatus to display status code of request - - - - !!exec $httpRequest[https://api.example.com/]
- Code: $httpRequestStatus -
- - Api response!
- Code: 200 -
-
- -##### Related functions: `$httpRequest` `$httpRequestHeader` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Role/colorRole.md b/guide/Role/colorRole.md deleted file mode 100644 index 2a03da78..00000000 --- a/guide/Role/colorRole.md +++ /dev/null @@ -1,17 +0,0 @@ -# $colorRole -Changes the color of given role ID - -#### Usage: `$colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)]` - -### Example (Primary Color) -```php -$colorRole[Role name;green] -``` - -### Example (Gradient) -```php -$colorRole[Role name;green;red] -``` - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Role/findRole.md b/guide/Role/findRole.md deleted file mode 100644 index 21df3229..00000000 --- a/guide/Role/findRole.md +++ /dev/null @@ -1,49 +0,0 @@ -# $findRole - -Searches for a role by its ID, mention, or name. This function allows you to retrieve a role's ID based on the provided search query. - -#### Usage: - -`$findRole[ID/mention/name;return current channelID, (yes/no) (Optional, default=yes)]` - -**Parameters:** - -* **`ID/mention/name`**: The ID, mention, or name of the role you want to find. -* **`return current channelID, (yes/no)`** (Optional): Determines whether to return the current channel's ID if the role is found. - * `yes` (Default): Returns the current channel ID along with the role ID (e.g., `869243919697846379,123456789012345678` where the first number is the Role ID and the second one is the Channel ID). - * `no`: Returns only the role ID. - -**Example:** - -Finding a role named "Mika#6359" and not returning the current channel ID: - -
- - - !!exec $findRole[Mika#6359;no] - - - 869243919697846379 - - - -**Example (Role Not Found):** - -If the role is not found, the function will return `undefined`. - -
- - - !!exec $findRole[mika#6359;no] - - - undefined - - - -::: tip Related Functions -* `$roleID`: Returns the role ID based on the role's name. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Role/guildRoles.md b/guide/Role/guildRoles.md deleted file mode 100644 index 76013c98..00000000 --- a/guide/Role/guildRoles.md +++ /dev/null @@ -1,40 +0,0 @@ -# $guildRoles - -Returns a list of all roles in the guild, displaying their names, IDs, or mentions. - -You can specify the type of information you want (ID, name, or mention) and limit the number of roles returned. - -#### Usage: - -`$guildRoles[type;amount;separator]` - -**Parameters:** - -* `type` (Optional): Determines what information to return for each role. Possible values are: - * `id`: Returns the role's ID. - * `name`: Returns the role's name. (Default) - * `mention`: Returns the role's mention. -* `amount` (Optional): The maximum number of roles to return. If omitted, all roles will be returned. -* `separator` (Optional): The separator between the returned list, default is ', ' - -
- -**Example:** - -This example shows how to retrieve the IDs of all roles in the guild. - - - - !!exec $guildRoles[id] - - - 869243918787686431, 869243918817058856, 869243918489878654, 869250889813213244, 871289098231513098, 869251802556678154, 869243918489878650, 878284024232165407, 869249016213422150, 869250128136003614, 869243918787686434, 869248264426356736, 869243918787686436, 869243918489878657, 869243918489878653, 869250129272651787, 869250127347453992, 869250888106115092, 869243918787686430, 869243918787686432, 869243918817058857, 869249218169147422, 869243918489878652, 869244293959794720, 869250129901813820 - - - -::: tip Related Functions -* `$roleID`: Retrieves a role ID by its name. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Role/hasRole.md b/guide/Role/hasRole.md deleted file mode 100644 index 2db1ecf2..00000000 --- a/guide/Role/hasRole.md +++ /dev/null @@ -1,29 +0,0 @@ -# $hasRole - -Determines if a user possesses a specific role within the server. Returns `true` if the user has the role, and `false` otherwise. - -#### Usage: `$hasRole[userID;roleID]` - -* **userID:** The ID of the user you want to check. You can use `$authorID` to check the message author. -* **roleID:** The ID of the role you want to check for. - -
- -**Example:** - -Checks if the message author has the role with the ID `99871..xx`. - - - - !!exec $hasRole[$authorid;99871..xx] - - - false - - - -
- -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Role/highestRole.md b/guide/Role/highestRole.md deleted file mode 100644 index 700803c1..00000000 --- a/guide/Role/highestRole.md +++ /dev/null @@ -1,40 +0,0 @@ -# $highestRole - -Retrieves the highest role (in terms of hierarchy) a user has in the current guild. - -#### Usage: - -`$highestRole[userID]` - Returns the highest role of the user with the specified `userID`. - -`$highestRole` - Returns the highest role of the command executor (the user who triggered the command). - -
- -**Example:** - -This example shows how to use `$highestRole` with `$roleName` to output the role's name. - -```discord -!!exec $roleName[$highestRole] -``` - -**Result:** - -(Assuming the user's highest role is "Admin") - -```discord -Admin -``` - - - - !!exec $roleName[$highestRole] - - - Admin - - - -##### Function difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Role/roleCount.md b/guide/Role/roleCount.md deleted file mode 100644 index 7e3389ab..00000000 --- a/guide/Role/roleCount.md +++ /dev/null @@ -1,32 +0,0 @@ -# $roleCount - -The `$roleCount` function returns the total number of roles present in your Discord server (guild). - -#### Usage: `$roleCount` - -This function is straightforward to use. Simply include it in your command response to display the role count. - -
- -**Example:** - -Let's create a custom command that announces the total number of roles in the server. - - - - !!exec There are `$roleCount` roles in the server! - - - There are `23` roles in the server - - - -In this example: - -* The user triggers the custom command with `!!exec`. -* The command uses `$roleCount` to retrieve the role count. -* The bot responds with a message stating, "There are `23` roles in the server" (the number will reflect the actual role count of the server). - -##### Function Difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Role/roleID.md b/guide/Role/roleID.md deleted file mode 100644 index 2c944708..00000000 --- a/guide/Role/roleID.md +++ /dev/null @@ -1,35 +0,0 @@ -# $roleID - -Retrieves the ID of a specified role. - -#### Usage: - -`$roleID[ROLE NAME]` - -**Argument:** - -* `ROLE NAME`: The name of the role you want to get the ID for. This is case-sensitive. - -
- -**Example:** - -Let's say you have a role named "muted" in your server. The following example demonstrates how to retrieve its ID. - - - - !!exec $roleID[muted] - - - 772053356378062889 - - - -In this example, the command returns `772053356378062889`, which is the ID of the "muted" role. - -::: tip Related Functions -* `$findRole`: Use this function to find a role by its name or mention if you are unsure of the exact name. -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Role/roleName.md b/guide/Role/roleName.md deleted file mode 100644 index 226c6fd2..00000000 --- a/guide/Role/roleName.md +++ /dev/null @@ -1,28 +0,0 @@ -# $roleName - -Retrieves the name of a role using its ID. - -#### Usage: - -`$roleName[roleID]` - -Replace `roleID` with the actual ID of the role you want to find. - -
- -#### Example: - -This example shows how to use the `$roleName` function to find the name of the role with the ID `869243918787686439`. - - - - !!exec $roleName[869243918787686439] - - - Custom Command - - - -##### Function difficulty: - -###### Tags: \ No newline at end of file diff --git a/guide/Role/rolePerms.md b/guide/Role/rolePerms.md deleted file mode 100644 index cb6adcd6..00000000 --- a/guide/Role/rolePerms.md +++ /dev/null @@ -1,33 +0,0 @@ - -Returns the permissions a role has. - -#### Usage: - -`$rolePerms[roleID;separator (optional)]` - -* `roleID`: The ID of the role to check. -* `separator`: (Optional) The separator to use when listing the permissions. Defaults to no separator. - -
- -**Example:** - - - - !!exec $rolePerms[$roleID[muted]; | ] - - - View Channel | Read Message History - - - -::: tip Permissions List -For a comprehensive list of all permission names, refer to the [Permissions List](../CodeReferences/ref.permissions_list.md). This list includes all the permissions a role can have. - -::: - -::: tip Related Functions -* `$userPerms`: Returns a member's permissions. -::: - -##### Function difficulty: diff --git a/guide/Server/allMembersCount.md b/guide/Server/allMembersCount.md deleted file mode 100644 index e6aed888..00000000 --- a/guide/Server/allMembersCount.md +++ /dev/null @@ -1,17 +0,0 @@ -# $allMembersCount - -Returns the total number of users the bot is currently serving across all servers it's in. - -#### Usage: `$allMembersCount` - -
- - - !!exec <@$clientID> serves $allMembersCount users in total! - - - Custom Command serves 6852280 users in total! - - - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Server/getServerInvite.md b/guide/Server/getServerInvite.md deleted file mode 100644 index f16423de..00000000 --- a/guide/Server/getServerInvite.md +++ /dev/null @@ -1,19 +0,0 @@ -# $getServerInvite - -Creates an invite link to the current server. - -## Usage - -```bash -$getServerInvite -``` - -### Example: - - - !!exec My server invite is: $getServerInvite

-
- - My server invite is: https://discord.gg/midoworkshopsv - -
\ No newline at end of file diff --git a/guide/Server/membersCount.md b/guide/Server/membersCount.md deleted file mode 100644 index a728a1b7..00000000 --- a/guide/Server/membersCount.md +++ /dev/null @@ -1,22 +0,0 @@ -# $membersCount - -Returns the amount of users in your server/guild! - -#### Usage: `$membersCount` - -``` -!!exec There are `$membersCount` members in the server! -``` - -**Example:** - - - - !!exec There are `$membersCount` members in the server! - - - There are `599` members in the server - - - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Server/ownerID.md b/guide/Server/ownerID.md deleted file mode 100644 index 5a98fcbb..00000000 --- a/guide/Server/ownerID.md +++ /dev/null @@ -1,17 +0,0 @@ -# $ownerID -Returns the guild's owner ID. - -#### Usage: `$ownerID` - -
- - - !!exec $ownerID - - - 683630053686378498 - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverBoostCount.md b/guide/Server/serverBoostCount.md deleted file mode 100644 index 82b7fd44..00000000 --- a/guide/Server/serverBoostCount.md +++ /dev/null @@ -1,18 +0,0 @@ -# $serverBoostCount - -Returns the number of boosts this server has. - -#### Usage: `$serverBoostCount` - -
- - - !!exec $serverBoostCount - - - 6 - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverBoostLevel.md b/guide/Server/serverBoostLevel.md deleted file mode 100644 index 329da64b..00000000 --- a/guide/Server/serverBoostLevel.md +++ /dev/null @@ -1,19 +0,0 @@ -# $serverBoostLevel - -Returns the boost level of the server. - -#### Usage: `$serverBoostLevel` - -This command retrieves the current boost level of the Discord server. Boost levels range from 0 (no boosts) to 3 (highest level). - -
- - - !!exec $serverBoostLevel - - - 1 - - - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Server/serverContentFilter.md b/guide/Server/serverContentFilter.md deleted file mode 100644 index cc1957c6..00000000 --- a/guide/Server/serverContentFilter.md +++ /dev/null @@ -1,18 +0,0 @@ -# $serverContentFilter - -Returns the content filter level of this guild. This determines the level of explicit content filtering applied to media content within the server. - -#### Usage: `$serverContentFilter` - -
- - - !!exec $serverContentFilter - - - All Members - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverDescription.md b/guide/Server/serverDescription.md deleted file mode 100644 index 7dd88c14..00000000 --- a/guide/Server/serverDescription.md +++ /dev/null @@ -1,33 +0,0 @@ -# $serverDescription -Returns the current server description - -#### Usage: `$serverDescription` -
- - - !!exec $serverDescription - - - Custom Command Support Server - - - -##### Function difficulty: -###### Tags: # serverDescription - -Returns the current server description. This command retrieves the description set for the Discord server. - -#### Usage: `$serverDescription` - -
- - - - !!exec $serverDescription - - - Custom Command Support Server - - - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Server/serverEmojis.md b/guide/Server/serverEmojis.md deleted file mode 100644 index 905a33be..00000000 --- a/guide/Server/serverEmojis.md +++ /dev/null @@ -1,18 +0,0 @@ -# serverEmojis - -Returns the server emojis. - -#### Usage: `$serverEmojis` - -
- - - - !!exec $serverEmojis - - - :cc: , :blob: - - - -##### Function difficulty: diff --git a/guide/Server/serverFeatures.md b/guide/Server/serverFeatures.md deleted file mode 100644 index d77c6eb7..00000000 --- a/guide/Server/serverFeatures.md +++ /dev/null @@ -1,17 +0,0 @@ -# serverFeatures - -Returns the server features. This function returns a comma-separated list of features enabled on the server. - -#### Usage: `$serverFeatures` - -
- - - !!exec $serverFeatures - - - Preview Enabled, Threads Enabled, Member Verification Gate Enabled, New Thread Permissions, News, Community, Welcome Screen Enabled - - - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Server/serverIcon.md b/guide/Server/serverIcon.md deleted file mode 100644 index ed976fa9..00000000 --- a/guide/Server/serverIcon.md +++ /dev/null @@ -1,19 +0,0 @@ -# $serverIcon - -Returns the current server's icon. - -#### Usage: `$serverIcon` - -
- - - - !!exec $serverIcon - - - - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverName.md b/guide/Server/serverName.md deleted file mode 100644 index 9a2ab4dc..00000000 --- a/guide/Server/serverName.md +++ /dev/null @@ -1,22 +0,0 @@ -# $serverName - -Returns the name of the current server. - -#### Usage: `$serverName` - -
- - - - !!exec $serverName - - - Custom Command - - - My server's name is: Your Server Name - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverRegion.md b/guide/Server/serverRegion.md deleted file mode 100644 index 34aee60d..00000000 --- a/guide/Server/serverRegion.md +++ /dev/null @@ -1,19 +0,0 @@ -# $serverRegion - -Returns the current server region or `undefined` if not available. - -#### Usage: `$serverRegion` - -
- - - - !!exec $serverRegion - - - Europe - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverSplash.md b/guide/Server/serverSplash.md deleted file mode 100644 index a7a88d4f..00000000 --- a/guide/Server/serverSplash.md +++ /dev/null @@ -1,9 +0,0 @@ -# $serverSplash -Returns the current server invite splash - -#### Usage: `$serverSplash[size (optional)]` - -Learn more about it: https://support.discord.com/hc/en-us/articles/360028716472-Server-Banner-Background-Invite-Splash-Image - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/serverVerificationLevel.md b/guide/Server/serverVerificationLevel.md deleted file mode 100644 index d94fb792..00000000 --- a/guide/Server/serverVerificationLevel.md +++ /dev/null @@ -1,16 +0,0 @@ -# $serverVerificationLevel -Returns the verification level of the server - -#### Usage: `$serverVerificationLevel` -
- - - !!exec $serverVerificationLevel - - - Medium - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/setGuildIcon.md b/guide/Server/setGuildIcon.md deleted file mode 100644 index e9f09358..00000000 --- a/guide/Server/setGuildIcon.md +++ /dev/null @@ -1,12 +0,0 @@ -# $setGuildIcon -Sets a new Icon for the server - -#### Usage: `$setGuildIcon[URL]` - -::: tip Related Functions -`$setGuildName`, to set a server's name -::: - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/setGuildName.md b/guide/Server/setGuildName.md deleted file mode 100644 index be1adbfc..00000000 --- a/guide/Server/setGuildName.md +++ /dev/null @@ -1,12 +0,0 @@ -# $setGuildName -Sets the name of your server to something, you have put in. - -#### Usage: `$setGuildName[name]` - -::: tip Related Functions -`$setGuildIcon`, to set a server's logo/ icon -::: - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Server/systemChannelID.md b/guide/Server/systemChannelID.md deleted file mode 100644 index 3e33604c..00000000 --- a/guide/Server/systemChannelID.md +++ /dev/null @@ -1,16 +0,0 @@ -# $systemChannelID -Returns the system channel ID of this server (if any) - -#### Usage: `$systemChannelID` -
- - - !!exec $systemChannelID - - - -::: warning -This function is currently not functioning as expected! -::: - -##### Function difficulty: \ No newline at end of file diff --git a/guide/Stickers/messageStickers.md b/guide/Stickers/messageStickers.md deleted file mode 100644 index 1c465f01..00000000 --- a/guide/Stickers/messageStickers.md +++ /dev/null @@ -1,20 +0,0 @@ -# $messageStickers - -To return the user message stickers (id)\ -**Index**: starts with 1, leaving it empty return all stickers ids separated by `, ` - -## Usage - -```bash -$messageStickers[Index] -``` - -### Example: - - - !!exec $messageStickers[1]

-
- - 992970796031017080 - -
\ No newline at end of file diff --git a/guide/Stickers/sticker.md b/guide/Stickers/sticker.md deleted file mode 100644 index 16571b45..00000000 --- a/guide/Stickers/sticker.md +++ /dev/null @@ -1,20 +0,0 @@ -# $sticker - -To return an information about a sticker using ID\ -**Info** can be: name,desc,url,tags,time - -## Usage - -```bash -$sticker[Sticker ID;name;Info] -``` - -### Example: - - - !!exec $sticker[992974663099629588;name]

-
- - Smiley - -
\ No newline at end of file diff --git a/guide/Templates/eco_bal.md b/guide/Templates/eco_bal.md deleted file mode 100644 index 712f7485..00000000 --- a/guide/Templates/eco_bal.md +++ /dev/null @@ -1,17 +0,0 @@ -# Economy - Balance - -## Info: -A command for checking your economy balance - -## Configuration: -Trigger Type: `Message`
-Trigger: `/!(bal|balance)/gi`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `None`
- -## Token: -Clone by using this command in your own server: `!!clone vFHnD` - -###### Tags: \ No newline at end of file diff --git a/guide/Templates/eco_rob.md b/guide/Templates/eco_rob.md deleted file mode 100644 index 8c8a6ae2..00000000 --- a/guide/Templates/eco_rob.md +++ /dev/null @@ -1,17 +0,0 @@ -# Economy - Rob - -## Info: -A command for robbing someone - -## Configuration: -Trigger Type: `Message`
-Trigger: `/!(rob|robbery)/gi`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `None`
- -## Token: -Clone by using this command in your own server: `!!clone XC5sK` - -###### Tags: \ No newline at end of file diff --git a/guide/Templates/mod_ban.md b/guide/Templates/mod_ban.md deleted file mode 100644 index e46ecb7b..00000000 --- a/guide/Templates/mod_ban.md +++ /dev/null @@ -1,22 +0,0 @@ -# Moderation - Ban - -## Info: -A command for banning members from your server. - -## Configuration: -Trigger Type: `Word`
-Trigger: `!ban`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `None`
- -## Clone: -Clone by using this command in your own server: `!!clone VyCfP` - -::: danger -Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters -::: - - -###### Tags: \ No newline at end of file diff --git a/guide/Templates/mod_joinGate.md b/guide/Templates/mod_joinGate.md deleted file mode 100644 index e08de5f2..00000000 --- a/guide/Templates/mod_joinGate.md +++ /dev/null @@ -1,17 +0,0 @@ -# Moderation - Captcha Verification - -## Info: -A command for verification before the user can join the server. - -## Configuration: -Trigger Type: `On Join/Leave`
-Trigger: `add`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `YOUR STAFF CHAT`
- -## Clone: -Clone by using this command in your own server: `!!clone 5Tr2e` - -###### Tags: \ No newline at end of file diff --git a/guide/Templates/mod_mute.md b/guide/Templates/mod_mute.md deleted file mode 100644 index dc8ba12a..00000000 --- a/guide/Templates/mod_mute.md +++ /dev/null @@ -1,21 +0,0 @@ -# Moderation - Mute - -## Info: -A command for muting members from your server. - -## Configuration: -Trigger Type: `Word`
-Trigger: `/!(mute|shut)/gi`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `None`
- -## Clone: -Clone by using this command in your own server: `!!clone Otk6C` - -::: danger -Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters -::: - -###### Tags: \ No newline at end of file diff --git a/guide/Templates/mod_warn.md b/guide/Templates/mod_warn.md deleted file mode 100644 index aae3dcd8..00000000 --- a/guide/Templates/mod_warn.md +++ /dev/null @@ -1,21 +0,0 @@ -# Moderation - Warn - -## Info: -A command for warning members from your server. - -## Configuration: -Trigger Type: `Word`
-Trigger: `/!(warn|warning)/gi`
-Min. Perms: `None`
-Ignored Roles: `None`
-Run Only In: `None`
-Channel Used: `None`
- -## Clone: -Clone by using this command in your own server: `!!clone lpDsX` - -::: danger -Please be aware, that this code doesn't includes permissions checks!! Everyone can execute this command, which might ends in horrible disasters -::: - -###### Tags: \ No newline at end of file diff --git a/guide/Text/Array/arrayClear.md b/guide/Text/Array/arrayClear.md deleted file mode 100644 index 4cfddde4..00000000 --- a/guide/Text/Array/arrayClear.md +++ /dev/null @@ -1,18 +0,0 @@ -# $arrayClear -Deletes an array. - -## Usage - -```bash -$arrayClear[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Hello World; ]
Before=$arrayJoin[, ]
$arrayClear
After=$arrayJoin[, ]

-
- - Before=Hello, World
After= -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayConcat.md b/guide/Text/Array/arrayConcat.md deleted file mode 100644 index 99d81c7f..00000000 --- a/guide/Text/Array/arrayConcat.md +++ /dev/null @@ -1,22 +0,0 @@ -# $arrayConcat - -Merge new array with the current array - -## Usage - -```bash -$arrayConcat[List;separator;array name (optional)] -``` - -### Example: - - - !!exec $arrayCreate[Mido/Rake;/]
$arrayConcat[Azz/Finkz;/]
$arrayJoin[, ]

-
- - Mido, Rake, Azz, Finkz

-
-
- -### Note on Separator: -You can use regex as separator i.e `/separator/` \ No newline at end of file diff --git a/guide/Text/Array/arrayCount.md b/guide/Text/Array/arrayCount.md deleted file mode 100644 index 813e77f2..00000000 --- a/guide/Text/Array/arrayCount.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayCount - -An alias for `$arrayLength`. - -## Usage - -```bash -$arrayCount[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
$arrayCount

-
- - 3 - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayCreate.md b/guide/Text/Array/arrayCreate.md deleted file mode 100644 index 7495c947..00000000 --- a/guide/Text/Array/arrayCreate.md +++ /dev/null @@ -1,21 +0,0 @@ -# $arrayCreate -Creates an array from a list. - -## Usage - -```bash -$arrayCreate[List;separator;array name (optional)] -``` - -### Example: - - - !!exec $arrayCreate[Mido/Rake/Azz;/]
1 is $arrayGet[1]
2 is $arrayGet[2]
3 is $arrayGet[3]

-
- - 1 is Mido
2 is Rake
3 is Azz -
-
- -### Note on Separator: -You can use regex as separator i.e `/separator/` \ No newline at end of file diff --git a/guide/Text/Array/arrayElementCount.md b/guide/Text/Array/arrayElementCount.md deleted file mode 100644 index dc346673..00000000 --- a/guide/Text/Array/arrayElementCount.md +++ /dev/null @@ -1,20 +0,0 @@ -# $arrayElementCount - -This function is used to count the number of times a specific element appears in an array.\ - It takes three parameters: the element to count, whether or not to trim whitespace before comparing elements, and the name of the array to search - -## Usage - -```bash -$arrayElementCount[Element To Count;Trim before compare (yes/no);array name] -``` - -### Example: - - - !!exec $arrayCreate[Mido/Rake/Mido/Rake/Rake/Azz/Faj;/]
Rake repeated $arrayElementCount[Rake] times
Mido repeated $arrayElementCount[Mido] times
Azz repeated $arrayElementCount[Azz] times
Faj repeated $arrayElementCount[Faj] times

-
- - Rake repeated 3 times
Mido repeated 2 times
Azz repeated 1 times
Faj repeated 1 times -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayGet.md b/guide/Text/Array/arrayGet.md deleted file mode 100644 index ac46f897..00000000 --- a/guide/Text/Array/arrayGet.md +++ /dev/null @@ -1,18 +0,0 @@ -# $arrayGet -Returns the value of an element at the specified index in an array. - -## Usage - -```bash -$arrayGet[index;array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
First is $arrayGet[1]
Second is $arrayGet[2]
Third is $arrayGet[3]

-
- - First is Mido
Second is Rake
Third is Azz -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayInclude.md b/guide/Text/Array/arrayInclude.md deleted file mode 100644 index 227dfd7c..00000000 --- a/guide/Text/Array/arrayInclude.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayInclude - -To check if a value exists in the array. Returns `true` if the value exists, otherwise returns `false`. - -## Usage - -```bash -$arrayInclude[Value;array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
$arrayInclude[Rake]

-
- - true - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayJoin.md b/guide/Text/Array/arrayJoin.md deleted file mode 100644 index 5eb57c73..00000000 --- a/guide/Text/Array/arrayJoin.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayJoin - -Joins an array created using `$textSplit` with a specific separator. - -## Usage - -```bash -$arrayJoin[Separator (optional);array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Rake/Mido/Azz;/]
$arrayJoin[, ]

-
- - Rake, Mido, Azz - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayLength.md b/guide/Text/Array/arrayLength.md deleted file mode 100644 index 4144c6e1..00000000 --- a/guide/Text/Array/arrayLength.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayLength - -Returns the number of elements in an array. - -## Usage - -```bash -$arrayLength[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
$arrayLength

-
- - 3 - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayPop.md b/guide/Text/Array/arrayPop.md deleted file mode 100644 index a7287945..00000000 --- a/guide/Text/Array/arrayPop.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayPop - -Removes, and returns the last element in an array. - -## Usage - -```bash -$arrayPop[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
last one is $arrayPop
before it is $arrayPop
before it is $arrayPop

-
- - last one is Azz
before it is Rake
before it is Mido -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayPush.md b/guide/Text/Array/arrayPush.md deleted file mode 100644 index 13a42ae0..00000000 --- a/guide/Text/Array/arrayPush.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayPush - -Adds an element to the end of an array. - -## Usage - -```bash -$arrayPush[Value;array name (optional)] -``` - -### Example: - - - !!exec $arrayPush[Mido]
$arrayPush[Rake]
$arrayPush[Azz]
$arrayJoin[/]

-
- - Mido/Rake/Azz - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayRemove.md b/guide/Text/Array/arrayRemove.md deleted file mode 100644 index dfc5e9bc..00000000 --- a/guide/Text/Array/arrayRemove.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayRemove - -Removes something from an array, using the index, and returns nothing. - -## Usage - -```bash -$arrayRemove[Index;Index... (optional);array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Hello World, how are you?; ]
$arrayRemove[1;2;3]
$arrayGet[1]

-
- - are - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayReverse.md b/guide/Text/Array/arrayReverse.md deleted file mode 100644 index 415eb5bb..00000000 --- a/guide/Text/Array/arrayReverse.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayReverse - -Reverses an array. - -## Usage - -```bash -$arrayReverse[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Number 1/Number 2/Number 3;/]
$arrayReverse
$arrayJoin[/]

-
- - Number 3/Number 2/Number 1 - -
\ No newline at end of file diff --git a/guide/Text/Array/arraySearch.md b/guide/Text/Array/arraySearch.md deleted file mode 100644 index 1988ac29..00000000 --- a/guide/Text/Array/arraySearch.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arraySearch - -To search for a value in an array. If it exists, it will return the position of the value. If not, `-1` is returned. - -## Usage - -```bash -$arraySearch[Value to search;array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
Mido is in position: $arraySearch[Mido]
Azz is in position: $arraySearch[Azz]
InvalidName is in position: $arraySearch[justsomeweirdrandom]

-
- - Mido is in position: 1
Azz is in position: 3
InvalidName is in position: -1 -
-
\ No newline at end of file diff --git a/guide/Text/Array/arraySet.md b/guide/Text/Array/arraySet.md deleted file mode 100644 index f4ec6d18..00000000 --- a/guide/Text/Array/arraySet.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arraySet - -Sets the value of an index in an array. - -## Usage - -```bash -$arraySet[index;value;array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
Before: $arrayGet[3]
$arraySet[3;Finkz]
After: $arrayGet[3]

-
- - Before: Azz
After: Finkz -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayShift.md b/guide/Text/Array/arrayShift.md deleted file mode 100644 index 01df2bf3..00000000 --- a/guide/Text/Array/arrayShift.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayShift - -Removes and returns the first element in an array. - -## Usage - -```bash -$arrayShift[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Azz;/]
first one is $arrayShift
after it is $arrayShift
after it is $arrayShift

-
- - first one is Mido
after it is Rake
after it is Azz -
-
diff --git a/guide/Text/Array/arrayShuffle.md b/guide/Text/Array/arrayShuffle.md deleted file mode 100644 index e5551b2c..00000000 --- a/guide/Text/Array/arrayShuffle.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayShuffle - -To shuffle an existing array. - -## Usage - -```bash -$arrayShuffle[array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Rake/Azz/Mido;/]
$arrayShuffle
$arrayJoin[/]

-
- - Azz/Mido/Rake - -
\ No newline at end of file diff --git a/guide/Text/Array/arraySlice.md b/guide/Text/Array/arraySlice.md deleted file mode 100644 index 343c75d9..00000000 --- a/guide/Text/Array/arraySlice.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arraySlice - -To keep only a part of the array, *slicing* it. - -## Usage - -```bash -$arraySlice[from;to;array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido Rake Azz Finkz; ]
$arraySlice[2;3]
$arrayJoin[ ]

-
- - Rake Azz - -
\ No newline at end of file diff --git a/guide/Text/Array/arraySort.md b/guide/Text/Array/arraySort.md deleted file mode 100644 index 121fdb77..00000000 --- a/guide/Text/Array/arraySort.md +++ /dev/null @@ -1,45 +0,0 @@ -# $arraySort - -Sorts an array, created with `$textSplit`. -Can be sorted numerically or alphabetically, or depending on occurrences. - -## Usage - -```bash -$arraySort[Ascending (yes/no, default is no);Sort Type;array name (optional)] -``` - -### Sort Types: -`num`: Sort Numerically\ -`alpha`: Sort Alphabetically\ -`frequent`: Sort By how many element got repeated - -### Example (Sort Occurrences): - - - !!exec $textSplit[3.Mido
1.Azz
2.Rake
2.Rake
3.Mido
3.Mido
4.Finkz;
]
$arraySort[no;frequent]

-
- - The sorted list is
3.Mido
2.Rake
4.Finkz
1.Azz

-
-
- -### Example (Sort Numerically): - - - !!exec $textSplit[1. Azz
3.Mido
2.Rake
4.Finkz;
]
$arraySort[yes;num]
The sorted list is
$arrayJoin[
]

-
- - The sorted list is
1. Azz
2.Rake
3.Mido
4.Finkz

-
-
- -### Example (Sort Alphabetically): - - - !!exec $textSplit[3.Mido
1.Azz
2.Rake
4.Finkz;
]
$arraySort[yes;alpha]
The sorted list is
$arrayJoin[
]

-
- - The sorted list is
1. Azz
4.Finkz
3.Mido
2.Rake -
-
\ No newline at end of file diff --git a/guide/Text/Array/arrayUnique.md b/guide/Text/Array/arrayUnique.md deleted file mode 100644 index 2351cde8..00000000 --- a/guide/Text/Array/arrayUnique.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayUnique - -Return the unique elements in the array, glued with the separator. - -## Usage - -```bash -$arrayUnique[Separator (default ', ');Trim Element before check? (default is yes);array name (optional)] -``` - -### Example: - - - !!exec $textSplit[Mido/Rake/Rake/Mido/Azz;/]
$arrayUnique[, ]

-
- - Mido, Rake, Azz - -
\ No newline at end of file diff --git a/guide/Text/Array/arrayUnshift.md b/guide/Text/Array/arrayUnshift.md deleted file mode 100644 index afb5c7e3..00000000 --- a/guide/Text/Array/arrayUnshift.md +++ /dev/null @@ -1,19 +0,0 @@ -# $arrayUnshift - -Adds an element to the start of the array. - -## Usage - -```bash -$arrayUnshift[value;array name (optional)] -``` - -### Example: - - - !!exec $arrayUnshift[Mido]
$arrayUnshift[Rake]
$arrayUnshift[Azz]
$arrayJoin[/]

-
- - Azz/Rake/Mido - -
\ No newline at end of file diff --git a/guide/Text/Components/removeButton.md b/guide/Text/Components/removeButton.md deleted file mode 100644 index cbb896e8..00000000 --- a/guide/Text/Components/removeButton.md +++ /dev/null @@ -1,20 +0,0 @@ -# $removeButton -Removes a button from an existing message using its `(ID/label/Emoji/URL)`. - -#### Usage: `$removeButton[Message ID;Label/Emoji/URL/ID (optional, empty means removing the last button)]` -
- -:::details Examples -(Remove Button using its label) -```php -$removeButton[863xxxxxxxxxx21130;Visit example.com] -``` - -(Remove the Last button) -```php -$removeButton[863xxxxxxxxxx21130] -``` -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Components/removeButtons.md b/guide/Text/Components/removeButtons.md deleted file mode 100644 index 5ca5346d..00000000 --- a/guide/Text/Components/removeButtons.md +++ /dev/null @@ -1,10 +0,0 @@ -# $removeButtons -Removes multiple buttons from a message using their IDs. - -#### Usage: `$removeButtons[Message ID;Button ID1;Button ID2...]` -
- -![](https://cdn.discordapp.com/attachments/914682255346118687/938537575486980136/Screenshot_20220202175147_1.jpg) - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Condition/checkCondition.md b/guide/Text/Condition/checkCondition.md deleted file mode 100644 index 423ee6fb..00000000 --- a/guide/Text/Condition/checkCondition.md +++ /dev/null @@ -1,32 +0,0 @@ -# $checkCondition - -Checks if given expression is true or false. - -## Usage - -```bash -$checkCondition[Expression] -``` - -### Example: - - - !!exec $checkCondition[$username==Mido]

-
- - true

-
-
- -### Example: - - - !!exec $checkCondition[10<5]

-
- - false - -
- -## To know more about expressions -Read about it [here](../../CodeReferences/ref.expression.md) diff --git a/guide/Text/Condition/conditional.md b/guide/Text/Condition/conditional.md deleted file mode 100644 index c8d34273..00000000 --- a/guide/Text/Condition/conditional.md +++ /dev/null @@ -1,22 +0,0 @@ -# $conditional - -return A if condition is true, B if condition is false - -## Usage - -```bash -$conditional[condition;A;B] -``` - -### Example: - - - !!exec $conditional[$username==Mido;You are Mido;You are Rake]

-
- - You are Mido

-
-
- -### Output (if Rake run the command): -You are Rake \ No newline at end of file diff --git a/guide/Text/Condition/if.md b/guide/Text/Condition/if.md deleted file mode 100644 index b01c4548..00000000 --- a/guide/Text/Condition/if.md +++ /dev/null @@ -1,130 +0,0 @@ -# $if -Checks An expression and executes code Only if that expression is true - -## Shortest Syntax -```bash -$if[EXPRESSION] - CODE -$endIf -``` - -## What is expression? -Read about it [here](../../CodeReferences/ref.expression.md) - -##### Example 1 only with $if - -Since the username of the executor is Tom it executed the if block -
- - - !!exec $if[$username==Tom]
- Oh, you are Tom!
- $endIf -
- - Oh, you are Tom! - -
- -##### Example 2 only with $if and $else - -Since the username is not Tom it executes the else block -
- - - !!exec $if[$username==Tom]
- Oh, you are Tom!
- $else
- You are not Tom!
- $endIf -
- - You are not Tom! - -
- -##### Example 3 $if , $else and $elseif - -Since the username is not Tom .It goes to the next if statement ,which is $elseif[$username==Lisa] and it will execute it -
- - - !!exec $if[$username==Tom]
- Oh, you are Tom!
- $elseif[$username==Lisa]
- You are Lisa!
- $endelseIf
- $else
- I don't know you :C
- $endIf -
- - You are Lisa! - -
- -##### Example 4 $if , $else and $elseif - -Since the username is not Tom .It goes to the next if statement ,which is $elseif[$username==Lisa] and it will execute it - -Info: The second else if will get never executed ,because it will exit the statement after the first true expression -
- - - !!exec $if[$username==Tom]
- Oh, you are Tom!
- $elseif[$username==Lisa]
- 1.You are Lisa!
- $endelseIf
- $elseif[$username==Lisa]
- 2.You are Lisa!
- $endelseIf
- $else
- I don't know you :C
- $endIf -
- - 1.You are Lisa! - -
- -##### Example 5 multiplie condtions in if with && or || -Expression can accept multiple conditions, use `||` or `&&` as separators -
`||` is for OR -
`&&` is for AND - -Example: -```php -$username==Mido&&$country==Egypt -``` -Condition 1: `$username==Mido` -Condition 2: `$country==Egypt` -But this expression will only be true only if both condition 1 **AND** (because of &&) condition 2 is `true` - -The Example below will execute since $username==Tom is false but the second expression is true .It wouldn't work with && -
- - - !!exec $if[$username==Tom||$username=Lisa]
- You are Tom or Lisa
- $endIf -
- - You are Tom or Lisa - -
- -The Example will only execute if the username is Lisa and their tag is 9999 - - - !!exec $if[$username==Lisa&&$discriminator=9999]
- You are Lisa with tag 9999
- $endIf
-
- - You are Lisa with tag 9999 - -
- -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Embed/addField.md b/guide/Text/Embed/addField.md deleted file mode 100644 index d70963e5..00000000 --- a/guide/Text/Embed/addField.md +++ /dev/null @@ -1,59 +0,0 @@ -# $addField -Adds fields to a message embed. - -#### Usage: `$addField[title;value;inline(yes/no default=yes)(optional)]` -
- - - !!exec $addField[title;value;no]
- $addField[title2;value2]
- $addField[title3;value3]
- $addField[title4;value4]
-
- - - - - value - - - value2 - - - value3 - - - value4 - - - - -
- -$addField with hyperlinks: -Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` - - - !!exec $addField[title;This is a field with \[link\](https://ccommandbot.com "tooltip")] - - - - - - This is a description hello - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{field:name:value:inline(yes/no default=yes)(optional)}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Embed/addTimestamp.md b/guide/Text/Embed/addTimestamp.md deleted file mode 100644 index c0ce10dc..00000000 --- a/guide/Text/Embed/addTimestamp.md +++ /dev/null @@ -1,41 +0,0 @@ -# $addTimestamp -Adds a timestamp to a message embed. - -#### Usage: `$addTimestamp` or `$addTimestamp[ms]` -
- - - !!exec $addTimestamp - - - - - - - -or with specified Time - - - - !!exec $addTimestamp[$parseTime[13/09/2021]] - - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{timestamp:ms}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Embed/author.md b/guide/Text/Embed/author.md deleted file mode 100644 index 06d31cd0..00000000 --- a/guide/Text/Embed/author.md +++ /dev/null @@ -1,49 +0,0 @@ -# $author -Adds an author to a message embed, with an optional icon url and/or hyperlink. - -#### Usage: `$author[text;icon url(optional);hyperlink(optional)]` -
- - - !!exec $author[text] - - - - - - - !!exec $author[text;$authorAvatar] - - - - - - - !!exec $author[text;$authorAvatar;https://ccommandbot.com] - - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{author:text:icon url(optional):hyper link(optional)}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Embed/color.md b/guide/Text/Embed/color.md deleted file mode 100644 index 59b724e6..00000000 --- a/guide/Text/Embed/color.md +++ /dev/null @@ -1,50 +0,0 @@ -# $color -sets the color of the embed - -## Usage -`$color[Hex or Color Name]` - -## Accepted Color Names -Check this [page](../../CodeReferences/ref.embed.colors.md) - -## Example 1: Using it in function format -
- - - !!exec $color[#0099ff] - - - - - - - -## Example 2: Using In Curl Format -
- - - !!exec $sendMessage[
{desc:You are awesome}
{color:#0099ff}
] -
- - - You are awesome - - -
- -::: tip To color an embed inside a function like $sendmessage[text] - -Use: `{color:hex or colorname or RANDOM or TRANSPARENT}` -Example: `{color:#0099ff}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Embed/description.md b/guide/Text/Embed/description.md deleted file mode 100644 index 369991d6..00000000 --- a/guide/Text/Embed/description.md +++ /dev/null @@ -1,41 +0,0 @@ -# $description -Adds a description to a message embed. - -#### Usage: `$description[your text]` -
- - - !!exec $description[This is a description] - - - - This is a description - - - - -Description with hyperlinks: -Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` - - - !!exec $description[This is a description with \[link\](https://ccommandbot.com "tooltip")] - - - - This is a description hello - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{description:your text}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Embed/footer.md b/guide/Text/Embed/footer.md deleted file mode 100644 index 277c8c15..00000000 --- a/guide/Text/Embed/footer.md +++ /dev/null @@ -1,28 +0,0 @@ -# $footer -Adds a footer to a message embed with an optional icon url - -#### Usage: `$footer[text;icon url(optional)]` -
- - - !!exec $footer[This is a fantastic embed footer] - - - - This is a fantastic embed footer - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{footer: Your text here:icon url(optional)}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) - -Link escapes are needed, use `\` to escape characters. Read [me](../../Other/syntax.md) to see more -::: diff --git a/guide/Text/Embed/image.md b/guide/Text/Embed/image.md deleted file mode 100644 index b9fb2e24..00000000 --- a/guide/Text/Embed/image.md +++ /dev/null @@ -1,28 +0,0 @@ -# $image -Adds an image to a message embed - -#### Usage: `$image[YOUR URL HERE]` -
- - - !!exec $image[$userAvatar] - - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{image: Your link here}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) - -Link escapes are needed, use `\` to escape characters. Read [me](../../Other/syntax.md) to see more -::: diff --git a/guide/Text/Embed/thumbnail.md b/guide/Text/Embed/thumbnail.md deleted file mode 100644 index 5755af5d..00000000 --- a/guide/Text/Embed/thumbnail.md +++ /dev/null @@ -1,28 +0,0 @@ -# $thumbnail -Adds a thumbnail to a message embed. - -#### Usage: `$thumbnail[YOUR URL HERE]` -
- - - !!exec $thumbnail[$userAvatar] - - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{thumbnail: Your link here}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) - -Link escapes are needed, use `\` to escape characters. Read [me](../../Other/syntax.md) to see more -::: diff --git a/guide/Text/Embed/title.md b/guide/Text/Embed/title.md deleted file mode 100644 index ea954626..00000000 --- a/guide/Text/Embed/title.md +++ /dev/null @@ -1,42 +0,0 @@ -# $title -Adds a title to a message embed. - -#### Usage: `$title[YOUR TITLE TEXT HERE;url(optional)]` -
- - - !!exec $title[This is a title] - - - - - - - -Or with url - - - - !!exec $title[This is a title;https://discord.com] - - - - - - - -::: tip Do you want to add an embed inside a Function as paramter like $sendmessage[text] - -Use: `{title: Your title here}` -::: - -::: danger Please be aware!! -If you add any `:` in this function it will error! Check out [this](../../Other/syntax.md) -::: diff --git a/guide/Text/Math/abbreviate.md b/guide/Text/Math/abbreviate.md deleted file mode 100644 index f92fb735..00000000 --- a/guide/Text/Math/abbreviate.md +++ /dev/null @@ -1,21 +0,0 @@ -# $abbreviate -this function abbreviates large numbers -Abbreviation to: -* k - thousands -* m - millions -* b - billions -* t - trillions - -#### Usage: `$abbreviate[number]` -
- - - !!exec $abbreviate[6000] - - - 6k - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Math/abs.md b/guide/Text/Math/abs.md deleted file mode 100644 index 60f8ccf4..00000000 --- a/guide/Text/Math/abs.md +++ /dev/null @@ -1,19 +0,0 @@ -# $abs - -Return the absolute value of a number. Basically forces a number to be positive - -## Usage - -```bash -$abs[Number] -``` - -## Example - - - !!exec $abs[-25] - - - 25 - - diff --git a/guide/Text/Math/ceil.md b/guide/Text/Math/ceil.md deleted file mode 100644 index 2dd5f190..00000000 --- a/guide/Text/Math/ceil.md +++ /dev/null @@ -1,29 +0,0 @@ -# $ceil - -rounds a number up to the next largest integer - -## Usage - -```bash -$ceil[Number] -``` - -### Example: - - - !!exec $ceil[1.3]

-
- - 2

-
-
- -### Example: - - - !!exec $ceil[3.5]

-
- - 4 - -
\ No newline at end of file diff --git a/guide/Text/Math/divide.md b/guide/Text/Math/divide.md deleted file mode 100644 index b6ec4786..00000000 --- a/guide/Text/Math/divide.md +++ /dev/null @@ -1,16 +0,0 @@ -# $divide -divides (a) number(s) from each other, from left to right - -#### Usage: `$divide[10;2;...]` -
- - - !!exec $divide[10;2] - - - 5 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Math/floor.md b/guide/Text/Math/floor.md deleted file mode 100644 index b48a5311..00000000 --- a/guide/Text/Math/floor.md +++ /dev/null @@ -1,29 +0,0 @@ -# $floor - -return the largest integer less than or equal to a given number - -## Usage - -```bash -$floor[Number] -``` - -### Example: - - - !!exec $floor[2.4]

-
- - 2

-
-
- -### Example: - - - !!exec $floor[2.9]

-
- - 2 - -
\ No newline at end of file diff --git a/guide/Text/Math/math.md b/guide/Text/Math/math.md deleted file mode 100644 index 8e66ea23..00000000 --- a/guide/Text/Math/math.md +++ /dev/null @@ -1,49 +0,0 @@ -# $math -Calculates numbers with any mathematically correct -quantifier(s) in between. - -#### Usage: `$math[10*(2+5)/7*8-2]` -e#### Usage: `$math[Expression;Name1=Value1;Name1=Value2]` -
- - - !!exec $math[10*(2+5)/7*8-2] - - - 78 - - - !!exec Networth = $math[cash+bank;cash=100;bank=500] - - - Networth = 600 - - - - -:::tip Alternatives -`$sum`, can be used to sum up arguments. - -`$sub`, can be used to subtract arguments. - -`$multi`, can be used to multiply arguments. - -`$divide`, can be used to divide arguments. -::: - -## Valid Quantifiers -Operator | Associativity | Description -:----------------------- | :------------ | :---------- -(...) | None | Grouping (brackets) -! | Left | Factorial -^ | Right | Exponentiation -+, -, sqrt | Right | Unary prefix operators -\*, /, % | Left | Multiplication, division, remainder -+, - | Left | Addition, subtraction - -:::warning Are there any more advanced functions? -There are more advanced functions located [here.](https://github.com/silentmatt/expr-eval/blob/master/README.md) -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Math/mathMax.md b/guide/Text/Math/mathMax.md deleted file mode 100644 index 464e5b0b..00000000 --- a/guide/Text/Math/mathMax.md +++ /dev/null @@ -1,19 +0,0 @@ -# $mathMax - -Return the largest number from a list of numbers - -## Usage - -```bash -$MathMax[Number 1;Number 2;Number 3;...] -``` - -### Example: - - - !!exec $MathMax[100;50;150]

-
- - 150 - -
diff --git a/guide/Text/Math/mathMin.md b/guide/Text/Math/mathMin.md deleted file mode 100644 index 8a21b9e8..00000000 --- a/guide/Text/Math/mathMin.md +++ /dev/null @@ -1,19 +0,0 @@ -# $mathMin - -Return the smallest number from a list of numbers - -## Usage - -```bash -$mathMin[Number 1;Number 2;Number 3;...] -``` - -### Example: - - - !!exec $mathMin[100;50;150]

-
- - 50 - -
diff --git a/guide/Text/Math/modulo.md b/guide/Text/Math/modulo.md deleted file mode 100644 index 6e7ed537..00000000 --- a/guide/Text/Math/modulo.md +++ /dev/null @@ -1,16 +0,0 @@ -# $modulo -calculates the remainder of a division operation - -#### Usage: `$modulo[10;2;...]` -
- - - !!exec $modulo[10;2] - - - 0 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Math/multi.md b/guide/Text/Math/multi.md deleted file mode 100644 index 864b6d47..00000000 --- a/guide/Text/Math/multi.md +++ /dev/null @@ -1,16 +0,0 @@ -# $multi -Multiplies (a) number(s) with each other - -#### Usage: `$multi[10;4;...]` -
- - - !!exec $multi[10;4] - - - 40 - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Math/ordinal.md b/guide/Text/Math/ordinal.md deleted file mode 100644 index 4941eba2..00000000 --- a/guide/Text/Math/ordinal.md +++ /dev/null @@ -1,17 +0,0 @@ -# $ordinal -adds the correct suffix after the number -`st`,`nd`,`rd`,`th` - -#### Usage: `$ordinal[number]` -
- - - !!exec $ordinal[2] - - - 2nd - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Math/round.md b/guide/Text/Math/round.md deleted file mode 100644 index 4619370d..00000000 --- a/guide/Text/Math/round.md +++ /dev/null @@ -1,16 +0,0 @@ -# $round -Rounds the number to the nearest integer. - -#### Usage: `$round[number]` -
- - - !!exec $round[10.897890790] - - - 11 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Math/roundTenth.md b/guide/Text/Math/roundTenth.md deleted file mode 100644 index bb27c4c3..00000000 --- a/guide/Text/Math/roundTenth.md +++ /dev/null @@ -1,16 +0,0 @@ -# $roundTenth -Rounds the number to the nearest decimal specified in `toFixed` - -#### Usage: `$roundTenth[number;tofixed]` -
- - - !!exec $roundTenth[10.877890790;2] - - - 10.88 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Math/sub.md b/guide/Text/Math/sub.md deleted file mode 100644 index def1ac49..00000000 --- a/guide/Text/Math/sub.md +++ /dev/null @@ -1,16 +0,0 @@ -# $sub -Subtracts (a) number(s) from each other - -#### Usage: `$sub[10;4;...]` -
- - - !!exec $sub[10;4] - - - 6 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Math/sum.md b/guide/Text/Math/sum.md deleted file mode 100644 index ca2b44b0..00000000 --- a/guide/Text/Math/sum.md +++ /dev/null @@ -1,16 +0,0 @@ -# $sum -Sum's up the given args - -#### Usage: `$sum[1;3;...]` -
- - - !!exec $sum[1;3] - - - 4 - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Math/truncate.md b/guide/Text/Math/truncate.md deleted file mode 100644 index bf78b963..00000000 --- a/guide/Text/Math/truncate.md +++ /dev/null @@ -1,16 +0,0 @@ -# $truncate -Truncates the number to 0 decimals. - -#### Usage: `$truncate[number]` -
- - - !!exec $truncate[10.897890790] - - - 10 - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Object/ObjectGet.md b/guide/Text/Object/ObjectGet.md deleted file mode 100644 index b7364b1a..00000000 --- a/guide/Text/Object/ObjectGet.md +++ /dev/null @@ -1,16 +0,0 @@ -# $objectGet -Get a object value/property by key, if the key is not found then return `undefined` (same as `$getObjectProperty`) - -#### Usage: `$objectGet[key]` -
- - - !!exec $createObject[{"BotName":"Custom Commands","BotOwner":"Rake","Contributor":"Wiki"}] Bot name: $objectGet[BotName], Owner: $objectGet[BotOwner], Docs Contributor: $objectGet[Contributor] - - - Bot name: Custom Commands, Owner: Rake, Docs Contributor: Wiki - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Object/ObjectIncrease.md b/guide/Text/Object/ObjectIncrease.md deleted file mode 100644 index d19c199e..00000000 --- a/guide/Text/Object/ObjectIncrease.md +++ /dev/null @@ -1,33 +0,0 @@ -# $ObjectIncrease - -To increase a key value, if the key doesn't exist, it will create one and set to that value - -## Usage - -```bash -$ObjectIncrease[Key;Amount] -``` - -### Notes on Amount: -* It can be a number like `5`, or negative `-5` to reduce instead of increase\ -* It can be expression like x*2 where `x` is the current value - -### Example 1: - - - !!exec $objectIncrease[Mido;10]
$objectIncrease[Rake;5]
$objectGet

-
- - {"Mido":10,"Rake":5}

-
-
- -### Example 2: - - - !!exec $objectIncrease[Mido;10]
$objectIncrease[Mido;x*2]
$objectGet

-
- - {"Mido":20} - -
diff --git a/guide/Text/Object/ObjectKeyExists.md b/guide/Text/Object/ObjectKeyExists.md deleted file mode 100644 index eec24c95..00000000 --- a/guide/Text/Object/ObjectKeyExists.md +++ /dev/null @@ -1,38 +0,0 @@ -# $ObjectKeyExists - -Checks if given key is present in the object. Returns `true` or `false`. - -## Usage - -```bash -$ObjectKeyExists[Key;...] -``` -1. **Key(s)** - Key to check it's existence. You can put as many nested keys as needed. - -## Example - -#### Using $ObjectKeyExists - -How to check if `name` key exists - - - - !!exec $objectSet[name;Mido] - $ObjectKeyExists[name] - - - true - - - !!exec $objectSet[username;mido] - $ObjectKeyExists[name] - - - false - - - -##### Related functions: `$ObjectKeys` `$ObjectCreate` `$ObjectSet` - -##### Function Difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/Object/ObjectKeys.md b/guide/Text/Object/ObjectKeys.md deleted file mode 100644 index c720aa72..00000000 --- a/guide/Text/Object/ObjectKeys.md +++ /dev/null @@ -1,29 +0,0 @@ -# $ObjectKeys - -Return the Object Keys with the seperator between each key - -## Usage - -```bash -$ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] -``` - -### Example: - - - !!exec $objectSet[user1;name;Mido]
$objectSet[user1;id;1234]
$objectSet[user1;weapon;Sword]
$objectSet[user2;name;Rake]
$objectSet[user2;id;5678]
$objectSet[user2;weapon;Feather]
$ObjectKeys[/]

-
- - user1/user2

-
-
- -### Example (Getting Nested Property Keys): - - - !!exec $objectSet[user1;name;Mido]
$objectSet[user1;id;1234]
$objectSet[user1;weapon;Sword]
$objectSet[user2;name;Rake]
$objectSet[user2;id;5678]
$objectSet[user2;weapon;Feather]
$ObjectKeys[/;user1]

-
- - name/id/weapon - -
diff --git a/guide/Text/Object/ObjectMerge.md b/guide/Text/Object/ObjectMerge.md deleted file mode 100644 index 4ba4d23c..00000000 --- a/guide/Text/Object/ObjectMerge.md +++ /dev/null @@ -1,29 +0,0 @@ -# $ObjectMerge - -Merge the current object with another object, it overwrites the conflicted keys - -## Usage - -```bash -$ObjectMerge[object] -``` - -### Example: - - - !!exec $objectSet[name;Mido]
$objectMerge[{"country":"EG"}]
$objectGet

-
- - {"name":"Mido", "country":"EG"}

-
-
- -### Example (Nested Keys): - - - !!exec $objectSet[user;name;Mido]
$objectSet[user;country;EG]
Before: $objectGet
$objectMerge[user;{"name":"Rake","country":"DE"}]
After: $objectGet

-
- - Before: {"user":{"name":"Mido","country":"EG"}}
After: {"user":{"name":"Rake","country":"DE"}} -
-
\ No newline at end of file diff --git a/guide/Text/Object/ObjectRemove.md b/guide/Text/Object/ObjectRemove.md deleted file mode 100644 index 478c1cf6..00000000 --- a/guide/Text/Object/ObjectRemove.md +++ /dev/null @@ -1,24 +0,0 @@ -# $ObjectRemove - -To remove a key from the object - -## Usage - -```bash -$ObjectRemove[Key;Key...(Optional)] -``` - -### Example: - - -!!exec $objectSet[Name;Mido]
-$objectSet[Country;EG]
-Before: $getObject
-$objectRemove[Name]
-After: $getObject -
- -Before: {"Name":"Mido","Country":"EG"} -
-After: {"Country":"EG"}
-
diff --git a/guide/Text/Object/ObjectRenameKey.md b/guide/Text/Object/ObjectRenameKey.md deleted file mode 100644 index fc87409d..00000000 --- a/guide/Text/Object/ObjectRenameKey.md +++ /dev/null @@ -1,29 +0,0 @@ -# $ObjectRenameKey - -allows you to rename a key in your object - -## Usage - -```bash -$objectRenameKey[old key;new key name] -``` - -### Example: - - - !!exec $objectSet[name;Mido]
Before: $objectGet
$objectRenameKey[name;nick]
After: $objectGet

-
- - Before: {"name":"Mido"}
After: {"nick":"Mido"}

-
-
- -### Example (Nested Key): - - - !!exec $objectSet[user;name;Mido]
Before: $objectGet
$objectRenameKey[user;name;nick]
After: $objectGet

-
- - Before: {"user":{"name":"Mido"}}
After: {"user":{"nick":"Mido"}} -
-
\ No newline at end of file diff --git a/guide/Text/Object/ObjectValues.md b/guide/Text/Object/ObjectValues.md deleted file mode 100644 index 865bfdc9..00000000 --- a/guide/Text/Object/ObjectValues.md +++ /dev/null @@ -1,29 +0,0 @@ -# $ObjectValues - -Return the Object values with seperator between each value - -## Usage - -```bash -$ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] -``` - -### Example (Get values of nested property): - - - !!exec $ObjectSet[name;Mido]
$objectSet[age;300]
$ObjectValues

-
- - Mido, 300

-
-
- -### Example: - - - !!exec $objectSet[user;name;Mido]
$objectSet[user;id;1234]
$objectSet[user;weapon;Sword]
$ObjectValues[/;user]

-
- - Mido/1234/Sword - -
\ No newline at end of file diff --git a/guide/Text/Object/createObject.md b/guide/Text/Object/createObject.md deleted file mode 100644 index 0aae71fa..00000000 --- a/guide/Text/Object/createObject.md +++ /dev/null @@ -1,23 +0,0 @@ -# $createObject - -Creates an object that can be used later. - -## Usage - -```bash -$createObject[object string] -``` - -### Example: - - - !!exec $createObject[{"name":"Mido","age":110}]
Your name is $objectGet[name]
Your age is $objectGet[age]

-
- - Your name is Mido
Your age is 110 -
-
- -::: danger -This function got deprecated, use `$ObjectCreate` instead -::: \ No newline at end of file diff --git a/guide/Text/Object/getObject.md b/guide/Text/Object/getObject.md deleted file mode 100644 index 0c93950f..00000000 --- a/guide/Text/Object/getObject.md +++ /dev/null @@ -1,25 +0,0 @@ -# $getObject -returns the JSON of the created/modified object - -#### Usage: `$getObject[spaces(optional, default 0)]` - -
- - - !!exec $createobject[{"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"}] Without spaces: $getobject -With spaces: $getobject[1] - - - Without spaces: {"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"} -With spaces: {
- "Owner": "Rake",
- "Manager": "Mika",
- "Dev": "Mido",
- "Contributor": "Wiki"
-} -
-
- - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/Regex/regexCheck.md b/guide/Text/Regex/regexCheck.md deleted file mode 100644 index 54689563..00000000 --- a/guide/Text/Regex/regexCheck.md +++ /dev/null @@ -1,29 +0,0 @@ -# $regexCheck - -To check if a text matches a regex or not, returns true or false - -## Usage - -```bash -$regexCheck[Text;Regex;Flags] -``` - -### Example (Check If Text is letters): - - - !!exec $regexCheck[ABC;^[a-zA-Z]+$]

-
- - true

-
-
- -### Example: - - - !!exec $regexCheck[A2B;^[a-zA-Z]+$]

-
- - false - -
diff --git a/guide/Text/Regex/regexMatch.md b/guide/Text/Regex/regexMatch.md deleted file mode 100644 index 676fb8b8..00000000 --- a/guide/Text/Regex/regexMatch.md +++ /dev/null @@ -1,46 +0,0 @@ -# $regexMatch -Matches a string with the given Regex Pattern and returns the matched text or multiple matches seperated by the seperator - -#### Usage: `$regexMatch[text;regexp;flags(optional);group index(optional, 0 by default) or all;separator (optional)]` - -## Note about Separator -It can only be used when group index is `all`.\ -in case flag is `g` it will return all matches glued with that separator\ -in case flag is not `g` it will return the whole matched text and matched groups - -### Example (Find the first number): - - - !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+]

-
- - 50

-
-
- -### Example (Find all numbers): - - - !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;all;/]

-
- - 50/18

-
-
- -### Example (Find 2nd number only): - - - !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;1]

-
- - 18 - -
- -::: tip Regex Flags -These are all regex flags: `g, i, m, u, s, y.` -::: -##### Function difficulty -###### Tags: - diff --git a/guide/Text/Regex/regexReplace.md b/guide/Text/Regex/regexReplace.md deleted file mode 100644 index 28f695e8..00000000 --- a/guide/Text/Regex/regexReplace.md +++ /dev/null @@ -1,19 +0,0 @@ -# $regexReplace - -Uses a regular expression to replace matching queries - -## Usage - -```bash -$regexReplace[text;regex;flags;new text] -``` - -### Example 1: - - - !!exec $regexReplace[My age is 900 years old.;\d+;g;[SECRET AGE]]

-
- - My age is [SECRET AGE] years old. - -
\ No newline at end of file diff --git a/guide/Text/Regex/replaceTextWithRegex.md b/guide/Text/Regex/replaceTextWithRegex.md deleted file mode 100644 index 0d5b7f5d..00000000 --- a/guide/Text/Regex/replaceTextWithRegex.md +++ /dev/null @@ -1,19 +0,0 @@ -# $replaceTextWithRegex -Uses a regular expression to replace matching queries - -#### Usage: -`$replaceTextWithRegex[text;regex;flags;new text]` - -
- - - !!exec $replaceTextWithRegex[Today is my birthday;/(birthday|party)/;gi;birthday 🎉] - - - Today is my birthday 🎉 - - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/channelNSFW.md b/guide/Text/channelNSFW.md deleted file mode 100644 index c364e9bf..00000000 --- a/guide/Text/channelNSFW.md +++ /dev/null @@ -1,16 +0,0 @@ -# $channelNSFW -Returns whether the channel is nsfw or not - -#### Usage: `$channelNSFW[channelID]` -
- - - !!exec $channelNSFW[$channelID] - - - no - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/charCount.md b/guide/Text/charCount.md deleted file mode 100644 index 03a7d682..00000000 --- a/guide/Text/charCount.md +++ /dev/null @@ -1,19 +0,0 @@ -# $charCount[text] -this functions returns the number of characters in the provided text - -#### Usage: -`$charCount[text]` - -
- - - !!exec $charCount[hello] - - - 5 - - - - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/checkContains.md b/guide/Text/checkContains.md deleted file mode 100644 index ff40e731..00000000 --- a/guide/Text/checkContains.md +++ /dev/null @@ -1,29 +0,0 @@ -# $checkContains - -checks if given message contains any of the texts - -## Usage - -```bash -$checkContains[message;text1;text2;...] -``` - -### Example 1: - - - !!exec $checkContains[Mido is good;good]

-
- - true

-
-
- -### Example 2: - - - !!exec $checkContains[Mido is good;bad]

-
- - false - -
\ No newline at end of file diff --git a/guide/Text/customEmoji.md b/guide/Text/customEmoji.md deleted file mode 100644 index a4dbecb2..00000000 --- a/guide/Text/customEmoji.md +++ /dev/null @@ -1,29 +0,0 @@ -# $customEmoji - -Returns a custom emoji - -## Usage - -```bash -$customEmoji[name or id] -``` - -### Example (Using Custom Emoji Name): - - - !!exec $customEmoji[yes]

-
- -
-
-
- -### Example (Using Custom Emoji ID): - - - !!exec $customEmoji[833252579873259521]

-
- -
-
-
\ No newline at end of file diff --git a/guide/Text/disableMentions.md b/guide/Text/disableMentions.md deleted file mode 100644 index 37f18c80..00000000 --- a/guide/Text/disableMentions.md +++ /dev/null @@ -1,16 +0,0 @@ -# $disableMentions -will not ping a user even though mentioned - -#### Usage: `$disableMentions` -
- - - !!exec $disableMentions Member - - - @Member - - - -##### Function difficulty -###### Tags: diff --git a/guide/Text/filterMessage.md b/guide/Text/filterMessage.md deleted file mode 100644 index e3e809a3..00000000 --- a/guide/Text/filterMessage.md +++ /dev/null @@ -1,19 +0,0 @@ -# $filterMessage - -Removes letters or numbers from given text - -## Usage - -```bash -$filterMessage[message;letterOrSymbols] -``` - -### Example: - - - !!exec $filterMessage[Hello World;lo]

-
- - He Wrd - -
\ No newline at end of file diff --git a/guide/Text/findChars.md b/guide/Text/findChars.md deleted file mode 100644 index 65ff8b27..00000000 --- a/guide/Text/findChars.md +++ /dev/null @@ -1,25 +0,0 @@ -# $findChars - -Takes all the letters from given string and returns them alone. - -## Usage - -```bash -$findChars[string] -``` - -## Example - - - - !!exec $findChars[$username] - - - Member - - - -::: tip Related functions -- `$findSpecialChars` -- `$findNumbers` -::: diff --git a/guide/Text/findNumbers.md b/guide/Text/findNumbers.md deleted file mode 100644 index ddcf3f41..00000000 --- a/guide/Text/findNumbers.md +++ /dev/null @@ -1,19 +0,0 @@ -# $findNumbers - -Find numbers from inside a text. - -## Usage - -```bash -$findNumbers[text;separator] -``` - -### Example: - - - !!exec $findNumbers[My age is 99 years old, and located 15 miles away from nearest station.;, ]

-
- - 99, 15 - -
\ No newline at end of file diff --git a/guide/Text/findSpecialChars.md b/guide/Text/findSpecialChars.md deleted file mode 100644 index 9e0a604f..00000000 --- a/guide/Text/findSpecialChars.md +++ /dev/null @@ -1,25 +0,0 @@ -# $findSpecialChars - -Takes all the non number/letter from given string and returns the alone - -## Usage - -```bash -$findSpecialChars[string] -``` - -## Example - - - - !!exec $findSpecialChars[$username] - - - $/? - - - -::: tip Related functions -- `$findChars` -- `$findNumbers` -::: diff --git a/guide/Text/isChannelMention.md b/guide/Text/isChannelMention.md deleted file mode 100644 index c34de93f..00000000 --- a/guide/Text/isChannelMention.md +++ /dev/null @@ -1,29 +0,0 @@ -# $isChannelMention - -To check if text provided satisfy discord channel mention format or not - -## Usage - -```bash -$isChannelMention[Text] -``` - -### Example: - - - !!exec $isChannelMention[abc]

-
- - false

-
-
- -### Example: - - - !!exec $isChannelMention[<#1234567890>]

-
- - true - -
\ No newline at end of file diff --git a/guide/Text/isUserMention.md b/guide/Text/isUserMention.md deleted file mode 100644 index 2cd3708a..00000000 --- a/guide/Text/isUserMention.md +++ /dev/null @@ -1,29 +0,0 @@ -# $isUserMention - -To check if text provided satisfy discord user mention format or not - -## Usage - -```bash -$isUserMention[Text] -``` - -### Example: - - - !!exec $isUserMention[abc]

-
- - false

-
-
- -### Example: - - - !!exec $isUserMention[<@!1234567890>]

-
- - true - -
\ No newline at end of file diff --git a/guide/Text/isandhas/isBoosting.md b/guide/Text/isandhas/isBoosting.md deleted file mode 100644 index 5c7bf52d..00000000 --- a/guide/Text/isandhas/isBoosting.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isBoosting -checks if a user is Boosting ,returns true or false - -#### Usage: `$isBoosting[userid]` -Example: -
- - - !!exec $isBoosting[$authorID] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isBot.md b/guide/Text/isandhas/isBot.md deleted file mode 100644 index 4cbd5163..00000000 --- a/guide/Text/isandhas/isBot.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isbot -checks if the user is a bot or not ,returns true or false - -#### Usage: `$isbot` or `$isbot[userid]` -Example: -
- - - !!exec $isbot | $isbot[891210194925809695] - - - false | true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isConnected.md b/guide/Text/isandhas/isConnected.md deleted file mode 100644 index b94d50f3..00000000 --- a/guide/Text/isandhas/isConnected.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isConnected - -To check whether user is connected to voice channel or not (only cached users) - -## Usage - -```bash -$isConnected[User ID] -``` - -### Example: - - - !!exec Is $username Connected To Channel?: $isConnected

-
- - Is Mido Connected To Channel?: true - -
\ No newline at end of file diff --git a/guide/Text/isandhas/isDeafened.md b/guide/Text/isandhas/isDeafened.md deleted file mode 100644 index 5cc55561..00000000 --- a/guide/Text/isandhas/isDeafened.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isDeafened -checks if a user is Deafened ,returns true,false or undefined - -#### Usage: `$isDeafened[userid]` -Example: -
- - - !!exec $isDeafened[$authorID] - - - undefined - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isEmoji.md b/guide/Text/isandhas/isEmoji.md deleted file mode 100644 index 45b730cc..00000000 --- a/guide/Text/isandhas/isEmoji.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isEmoji -Checks if the given Emoji is a default emoji ,returns true or false - -#### Usage: `$isEmoji[emoji]` -Example: -
- - - !!exec $isEmoji[:smile:] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isHoisted.md b/guide/Text/isandhas/isHoisted.md deleted file mode 100644 index fb41e44d..00000000 --- a/guide/Text/isandhas/isHoisted.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isHoisted -Checks if the given id of role is hoisted above all the other roles ,returns true or false - -#### Usage: `$isHoisted[roleid]` -Example: -
- - - !!exec $isHoisted[$roleID[test]] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isManaged.md b/guide/Text/isandhas/isManaged.md deleted file mode 100644 index 989eb7ad..00000000 --- a/guide/Text/isandhas/isManaged.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isManaged -Checks if the given id of role is Managed ,returns true or false - -#### Usage: `$isManaged[roleid]` -Example: -
- - - !!exec $isManaged[$roleID[Custom Command]] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isMentionable.md b/guide/Text/isandhas/isMentionable.md deleted file mode 100644 index 69be948e..00000000 --- a/guide/Text/isandhas/isMentionable.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isMentionable -Checks if the given id of role is Mentionable ,returns true or false - -#### Usage: `$isMentionable[roleid]` -Example: -
- - - !!exec $isMentionable[$roleID[test]] - - - false - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isMentioned.md b/guide/Text/isandhas/isMentioned.md deleted file mode 100644 index 89eabc0a..00000000 --- a/guide/Text/isandhas/isMentioned.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isMentioned -Checks if the given id of userID/roleID/channelID/everyone is Mentioned ,returns true or false - -#### Usage: `$isMentioned[userID/roleID/channelID/everyone]` -Example: -
- - - !!exec $mention $isMentioned[$authorID] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isMuted.md b/guide/Text/isandhas/isMuted.md deleted file mode 100644 index d4a03ad3..00000000 --- a/guide/Text/isandhas/isMuted.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isMuted -checks if a user is selfMuted ,returns true,false or undefined - -#### Usage: `$isMuted[userid]` -Example: -
- - - !!exec $isMuted[$authorID] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isNumber.md b/guide/Text/isandhas/isNumber.md deleted file mode 100644 index ffdbf825..00000000 --- a/guide/Text/isandhas/isNumber.md +++ /dev/null @@ -1,16 +0,0 @@ -# $isNumber -Checks if a string is a valid number. - -#### Usage: `$isNumber[number]` -
- - - !!exec $isNumber[10] | $isNumber[number] - - - true | false - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/isandhas/isStreaming.md b/guide/Text/isandhas/isStreaming.md deleted file mode 100644 index d0117cd5..00000000 --- a/guide/Text/isandhas/isStreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isStreaming - -To check whether user is streaming in a voice channel or not (only cached users) - -## Usage - -```bash -$isStreaming[User ID] -``` - -### Example: - - - !!exec Is $username Streaming?: $isStreaming

-
- - Is Mido Streaming?: false - -
\ No newline at end of file diff --git a/guide/Text/isandhas/isTicket.md b/guide/Text/isandhas/isTicket.md deleted file mode 100644 index c9f39226..00000000 --- a/guide/Text/isandhas/isTicket.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isTicket -checks if a channel is a ticket or not created with $newTicket function,returns true or false - -#### Usage: `$isTicket` or `$isTicket[channelid]` -Example: -
- - - !!exec $isTicket | $isTicket[891210194925809695] - - - false | true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isValidHex.md b/guide/Text/isandhas/isValidHex.md deleted file mode 100644 index b4db5ddf..00000000 --- a/guide/Text/isandhas/isValidHex.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isValidHex -checks if the given int or hex code or [color name](../../CodeReferences/ref.embed.colors.md) is valid ,returns true,false - -#### Usage: `$isValidHex[int or hexcode or color name]` -Example: -
- - - !!exec $isValidHex[#ffffff] , $isValidHex[test], $isValidHex[Red] - - - true , false, true - - - -##### Function difficulty -###### Tags: - - diff --git a/guide/Text/isandhas/isValidInvite.md b/guide/Text/isandhas/isValidInvite.md deleted file mode 100644 index 4ad3b5dc..00000000 --- a/guide/Text/isandhas/isValidInvite.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isValidInvite -checks if the given Invite code is valid ,returns true,false - -#### Usage: `$isValidInvite[invite code]` -Example: -
- - - !!exec $isValidInvite[hjhjkh] - - - false - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isValidLink.md b/guide/Text/isandhas/isValidLink.md deleted file mode 100644 index df54fda3..00000000 --- a/guide/Text/isandhas/isValidLink.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isValidLink -checks if the given Link / url is valid ,returns true,false - -#### Usage: `$isValidLink[Link]` -Example: -
- - - !!exec $isValidLink[https://example.com] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/isandhas/isValidObject.md b/guide/Text/isandhas/isValidObject.md deleted file mode 100644 index b8679871..00000000 --- a/guide/Text/isandhas/isValidObject.md +++ /dev/null @@ -1,19 +0,0 @@ -# $isValidObject -checks if the given Object is valid ,returns true,false - -#### Usage: `$isValidObject[Object]` -Example: -
- - - !!exec $isValidObject[{"key":"value"}] - - - true - - - -##### Function difficulty -###### Tags: - - \ No newline at end of file diff --git a/guide/Text/mentioned.md b/guide/Text/mentioned.md deleted file mode 100644 index 7ff593af..00000000 --- a/guide/Text/mentioned.md +++ /dev/null @@ -1,19 +0,0 @@ -# $mentioned - -Returns the ID of the mentioned user - -## Usage - -```bash -$mentioned[mention number or all;return author ID (yes/no)(optional)] -``` - -### Example: - - - !!exec First mention is $mentioned[1]
All mentions are: $mentioned[all]

-
- - First mention is 788361834360864808
All mentions are: 788361834360864808, 840526017260945468 -
-
\ No newline at end of file diff --git a/guide/Text/mentionedChannels.md b/guide/Text/mentionedChannels.md deleted file mode 100644 index 1bc49050..00000000 --- a/guide/Text/mentionedChannels.md +++ /dev/null @@ -1,16 +0,0 @@ -# $mentionedChannels -Returns the ID of one of the channels that was mentioned by the user - -#### Usage: `$mentionedChannels[number]` -
- - - !!exec $mentionedChannels[1] user-support - - - 869243919697846379 - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/mentionedRoles.md b/guide/Text/mentionedRoles.md deleted file mode 100644 index ca49d844..00000000 --- a/guide/Text/mentionedRoles.md +++ /dev/null @@ -1,16 +0,0 @@ -# $mentionedRoles -Returns the ID of one of the roles that was mentioned by the user - -#### Usage: `$mentionedRoles[number]` -
- - - !!exec $mentionedRoles[1] Support - - - 869243918787686432 - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/noMentionMessage.md b/guide/Text/noMentionMessage.md deleted file mode 100644 index 64b79f92..00000000 --- a/guide/Text/noMentionMessage.md +++ /dev/null @@ -1,17 +0,0 @@ -# $noMentionMessage -User's message without any mentions. (members, roles & channels) - -#### Usage: `$noMentionMessage` - -
- - - !!exec aaa Member $noMentionMessage - - - aaa - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/numToWord.md b/guide/Text/numToWord.md deleted file mode 100644 index 71fa962c..00000000 --- a/guide/Text/numToWord.md +++ /dev/null @@ -1,20 +0,0 @@ -# $numToWord - -convert a number to their verbal equivalents i.\ -e 5 \> five, maximum number would be "nine hundred ninety-nine nonillion" - -## Usage - -```bash -$numToWord[Number] -``` - -### Example: - - - !!exec $numToWord[1001]

-
- - one thousand one - -
\ No newline at end of file diff --git a/guide/Text/numberSeparator.md b/guide/Text/numberSeparator.md deleted file mode 100644 index 525ae504..00000000 --- a/guide/Text/numberSeparator.md +++ /dev/null @@ -1,19 +0,0 @@ -# $numberSeparator - -Separates a number in thousands - -## Usage - -```bash -$numberSeparator[number;separator (optional)] -``` - -### Example: - - - !!exec Your number is $numberSeparator[3352311]

-
- - Your number is 3,352,311 - -
\ No newline at end of file diff --git a/guide/Text/only/onlyBotPerms.md b/guide/Text/only/onlyBotPerms.md deleted file mode 100644 index 149c9299..00000000 --- a/guide/Text/only/onlyBotPerms.md +++ /dev/null @@ -1,21 +0,0 @@ -# $onlyBotPerms -Only if custom command bot has the permssions,user will be able to execute this command - -#### Usage: `$onlyBotPerms[perm;perm;...;error message]` - -#### Example: `$onlyBotPerms[managemessage;:x: - Bot does not have manage message permission]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Permissions -Check this [list](../../CodeReferences/ref.permissions_list.md) to view all permissions names -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/only/onlyForCategories.md b/guide/Text/only/onlyForCategories.md deleted file mode 100644 index 27356e16..00000000 --- a/guide/Text/only/onlyForCategories.md +++ /dev/null @@ -1,17 +0,0 @@ -# $onlyForCategories -The command will only be executable in the provided categories. - -#### Usage: `$onlyForCategories[categoryID;categoryID;...;error message]` - -#### Example: `$onlyForCategories[797978978978988;:x: - this command is restricted to the Main category]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Text/only/onlyForIDs.md b/guide/Text/only/onlyForIDs.md deleted file mode 100644 index 970c6008..00000000 --- a/guide/Text/only/onlyForIDs.md +++ /dev/null @@ -1,17 +0,0 @@ -# $onlyForIDs -Only given user IDs will be able to execute this command - -#### Usage: `$onlyForIDs[userID;userID;...;error message]` - -#### Example: `$onlyForIDs[$guild[owner];:x: - this command is restricted to the guild owner]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/only/onlyForRoles.md b/guide/Text/only/onlyForRoles.md deleted file mode 100644 index 40b625a2..00000000 --- a/guide/Text/only/onlyForRoles.md +++ /dev/null @@ -1,17 +0,0 @@ -# $onlyForRoles -Only person with the given Roles will be able to execute this command - -#### Usage: `$onlyForRoles[roleID;roleID;...;error message]` - -#### Example: `$onlyForRoles[797978978978988;:x: - this command is restricted to person with test role]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/only/onlyIf.md b/guide/Text/only/onlyIf.md deleted file mode 100644 index ebc658c7..00000000 --- a/guide/Text/only/onlyIf.md +++ /dev/null @@ -1,17 +0,0 @@ -# $onlyIf -Continue the execution only if certain [expression](../../CodeReferences/ref.expression.md) is satisfied, otherwise stop the execution and send the error message. -In theory $onlyif can replace all other $onlyFor with the proper [expression](../../CodeReferences/ref.expression.md) -#### Usage: `$onlyif[Expression;error message]` - -#### Example: `$onlyIf[$username==Mido;You are not mido]` - -::: tip Note -Read about [Expression](../../CodeReferences/ref.expression.md) -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Text/only/onlyIfMessageContains.md b/guide/Text/only/onlyIfMessageContains.md deleted file mode 100644 index 09f1afbf..00000000 --- a/guide/Text/only/onlyIfMessageContains.md +++ /dev/null @@ -1,19 +0,0 @@ -# $onlyIfMessageContains - -Continues the execution only if 'text' contains all provided words, returns the `error message` parameter if it does not. - -## Usage - -```bash -$onlyIfMessageContains[text;word1;word2;...;error message] -``` - -## Example - - - !!exec $onlyIfMessageContains[$username[$authorID];mem;My username doesn't contain `mem`] My username contains `mem`!

-
- - My username contains `mem`

-
-
\ No newline at end of file diff --git a/guide/Text/only/onlyNSFW.md b/guide/Text/only/onlyNSFW.md deleted file mode 100644 index e1fd6b7d..00000000 --- a/guide/Text/only/onlyNSFW.md +++ /dev/null @@ -1,17 +0,0 @@ -# $onlyNSFW -Only in given nsfw channel user will be able to execute this command - -#### Usage: `$onlyNSFW[channelID;channelID;...;error message]` - -#### Example: `$onlyNSFW[797978978978988;:x: - this command is restricted to nsfw channel]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/only/onlyPerms.md b/guide/Text/only/onlyPerms.md deleted file mode 100644 index 9c12a5bb..00000000 --- a/guide/Text/only/onlyPerms.md +++ /dev/null @@ -1,21 +0,0 @@ -# $onlyPerms -Only if user has the given permssions,they will be able to execute this command - -#### Usage: `$onlyPerms[perm;perm;...;error message]` - -#### Example: `$onlyPerms[managemessage;:x: - You don't have manage message permission]` - -::: danger -Use this code, on the FIRST line of your code! If you do not, it will execute all code before this line and not after! -::: - -::: tip Permissions -Check this [list](../../CodeReferences/ref.permissions_list.md) to view all permissions names -::: - -::: tip Note -You can send embed using [Message Curl Format](../../CodeReferences/ref.message_curl_format.md) -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/padLeft.md b/guide/Text/padLeft.md deleted file mode 100644 index ccc94d89..00000000 --- a/guide/Text/padLeft.md +++ /dev/null @@ -1,19 +0,0 @@ -# $padLeft - -Adds a filling text at the start of text, depend on the maximum length - -## Usage - -```bash -$padLeft[Text;Max Length;Filling Text] -``` - -### Example: - - - !!exec $padLeft[5;2;0]
$padLeft[13;2;0]

-
- - 05
13 -
-
\ No newline at end of file diff --git a/guide/Text/padRight.md b/guide/Text/padRight.md deleted file mode 100644 index c339e3b4..00000000 --- a/guide/Text/padRight.md +++ /dev/null @@ -1,19 +0,0 @@ -# $padRight - -Adds a filling text at the end of text, depend on the maximum length - -## Usage - -```bash -$padRight[Text;Max Length;Filling Text] -``` - -### Example: - - - !!exec $padRight[I like custom commands;25;.]

-
- - I like custom commands... - -
\ No newline at end of file diff --git a/guide/Text/repeatMessage.md b/guide/Text/repeatMessage.md deleted file mode 100644 index 9c0ac639..00000000 --- a/guide/Text/repeatMessage.md +++ /dev/null @@ -1,19 +0,0 @@ -# $repeatMessage -this functions repeats the provided message x times - -#### Usage: -`$repeatMessage[times;text]` - -
- - - !!exec $repeatMessage[3;a] - - - aaa - - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/replaceText.md b/guide/Text/replaceText.md deleted file mode 100644 index 99e6a4b7..00000000 --- a/guide/Text/replaceText.md +++ /dev/null @@ -1,19 +0,0 @@ -# $replaceText -Replaces `A` with `X` in `TEXT` - -#### Usage: -`$replaceText[some text;sample;new]` - -
- - - !!exec $replaceText[testing;ing;] - - - test - - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/stringEndsWith.md b/guide/Text/stringEndsWith.md deleted file mode 100644 index 0b2d421b..00000000 --- a/guide/Text/stringEndsWith.md +++ /dev/null @@ -1,29 +0,0 @@ -# $stringEndsWith - -Checks if given message ends with given text - -## Usage - -```bash -$stringEndsWith[message;text] -``` - -### Example: - - - !!exec $stringEndsWith[Hello World;World]

-
- - true

-
-
- -### Example: - - - !!exec $stringEndsWith[Hello World;Discord]

-
- - false - -
\ No newline at end of file diff --git a/guide/Text/stringStartsWith.md b/guide/Text/stringStartsWith.md deleted file mode 100644 index c6ff9f90..00000000 --- a/guide/Text/stringStartsWith.md +++ /dev/null @@ -1,29 +0,0 @@ -# $stringStartsWith - -Determines whether given message starts by another message or not - -## Usage - -```bash -$stringStartsWith[message;text] -``` - -### Example: - - - !!exec $stringStartsWith[Hello World;Hello]

-
- - true

-
-
- -### Example: - - - !!exec $stringStartsWith[Hello World;Hate]

-
- - false - -
\ No newline at end of file diff --git a/guide/Text/textLength.md b/guide/Text/textLength.md deleted file mode 100644 index 5a550cb4..00000000 --- a/guide/Text/textLength.md +++ /dev/null @@ -1,29 +0,0 @@ -# $textLength - -Counts character of a text, or the user's message. - -## Usage - -```bash -$textLength or $textLength[text] -``` - -### Example: - - - !!exec $textLength[Mido]

-
- - 4

-
-
- -### Example: - - - !!exec $textLength[Hello]

-
- - 6 - -
\ No newline at end of file diff --git a/guide/Text/textShuffle.md b/guide/Text/textShuffle.md deleted file mode 100644 index 5b3c429c..00000000 --- a/guide/Text/textShuffle.md +++ /dev/null @@ -1,20 +0,0 @@ -# $textShuffle - -Shuffle a text\ -**Return**: the shuffled text - -## Usage - -```bash -$textShuffle[Text;Separator (optional)] -``` - -### Example: - - - !!exec $textShuffle[Hello WOrld]

-
- - rHl ldeOolW - -
\ No newline at end of file diff --git a/guide/Text/textSlice.md b/guide/Text/textSlice.md deleted file mode 100644 index a2acdf77..00000000 --- a/guide/Text/textSlice.md +++ /dev/null @@ -1,19 +0,0 @@ -# $textSlice - -Returns \ after given position or text in between X and Y - -## Usage - -```bash -$textSlice[text;x;y (optional)] -``` - -### Example: - - - !!exec $textSlice[Hello world;0;5]

-
- - Hello - -
\ No newline at end of file diff --git a/guide/Text/textSplit/advancedTextSplit.md b/guide/Text/textSplit/advancedTextSplit.md deleted file mode 100644 index a990d692..00000000 --- a/guide/Text/textSplit/advancedTextSplit.md +++ /dev/null @@ -1,21 +0,0 @@ -# $advancedTextSplit -The first field is the message we want to split and get indexes for. The second -field would be the split/seperator used in the text, and the next field would get the value of the index provided, setting this index value as the new text. The next -fields work as splitters/seperators and new indexes for this new text. - - -#### Usage: `$advancedTextSplit[text;split;index;split;index;...]` -
- - - !!exec $advancedTextSplit[Wow, what a nice day, i'll go outside;,;2] /* Will get the second index */ - - - what a nice day - - -::: warning This function is only for EXPERTS -::: - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/textSplit/concatTextSplit.md b/guide/Text/textSplit/concatTextSplit.md deleted file mode 100644 index 247041fb..00000000 --- a/guide/Text/textSplit/concatTextSplit.md +++ /dev/null @@ -1,20 +0,0 @@ -# $concatTextSplit -adds an array to the end of an array from `$textsplit` - -#### Usage: `$concatTextSplit[text;separator(optional, default = ,)]` -
- - - !!exec $textsplit[Rake Mido; ] {{ '\n' }} $concatTextSplit[Wiki,Mika;,] {{ '\n' }} $arrayJoin[ ] - - - Rake Mido Wiki Mika - - - -::: danger -This function got deprecated, use `$arrayConcat` instead -::: - -##### Function difficulty: -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/editTextSplitElement.md b/guide/Text/textSplit/editTextSplitElement.md deleted file mode 100644 index a2c20042..00000000 --- a/guide/Text/textSplit/editTextSplitElement.md +++ /dev/null @@ -1,19 +0,0 @@ -# $editTextSplitElement -adds an element to an array from `$textsplit` or replaces the value by index of the split text from `$textsplit` - -#### Usage: `$editTextSplitElement[index;new value]` -
- - - !!exec $textsplit[Wiki Rake; ] {{ '\n' }} $editTextSplitElement[1;Mido] {{ '\n' }} $arrayJoin[ ] - - - Mido Rake - - - -::: danger -This function got deprecated, use `$arraySet` instead -::: -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/findTextSplitIndex.md b/guide/Text/textSplit/findTextSplitIndex.md deleted file mode 100644 index 322a40cb..00000000 --- a/guide/Text/textSplit/findTextSplitIndex.md +++ /dev/null @@ -1,20 +0,0 @@ -# $findTextSplitIndex -returns the index of the first occurrence of a value in an array from `$textsplit` - -#### Usage: `$findTextSplitIndex[value]` -
- - - !!exec $textsplit[Rake Wiki Mika Mido; ] {{ '\n' }} $findTextSplitIndex[Wiki] - - - 2 - - - -::: danger -This function got deprecated, use `$arraySearch` instead -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/getTextSplitLength.md b/guide/Text/textSplit/getTextSplitLength.md deleted file mode 100644 index 57fd3c81..00000000 --- a/guide/Text/textSplit/getTextSplitLength.md +++ /dev/null @@ -1,24 +0,0 @@ -# $getTextSplitLength -Returns the amount of objects created by `$textSplit` - - -
- - - - !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] - {{ '\n' }} - $getTextSplitLength - - - - 10 - - - -::: danger -This function got deprecated, use `$arrayLength` instead -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/joinSplitText.md b/guide/Text/textSplit/joinSplitText.md deleted file mode 100644 index 407c85e8..00000000 --- a/guide/Text/textSplit/joinSplitText.md +++ /dev/null @@ -1,23 +0,0 @@ -# $joinSplitText -Joins the `$textSplit` indexes by a given separator - -
- - - - !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] - {{ '\n' }} - $joinSplitText[-] - - - - 1-2-3-4-5-6-7-8-9-10 - - - -::: danger -This function got deprecated, use `$arrayJoin` instead -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/removeTextSplitElement.md b/guide/Text/textSplit/removeTextSplitElement.md deleted file mode 100644 index f883c252..00000000 --- a/guide/Text/textSplit/removeTextSplitElement.md +++ /dev/null @@ -1,12 +0,0 @@ -# $removeTextSplitElement -removes an element from an array from `$textsplit` - -#### Usage: `$removeTextSplitElement[Index]` -
- -::: danger -This function got deprecated, use `$arrayRemove` instead -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/spliceTextJoin.md b/guide/Text/textSplit/spliceTextJoin.md deleted file mode 100644 index 18d0e7d2..00000000 --- a/guide/Text/textSplit/spliceTextJoin.md +++ /dev/null @@ -1,16 +0,0 @@ -# $spliceTextJoin -Splits a text with `separator1`, then joins with it `separator2` every `x` times, and then joins with `separator3` every `x-1` times. - -#### Usage: `$spliceTextJoin[text;separator1;separator2;separator3;every]` -
- - - !!exec $spliceTextJoin[1 2 3 4 5 6 7; ;+;-;2] - - - 1+2-3+4-5+6 - - - -##### Function difficulty: -###### Tags: diff --git a/guide/Text/textSplit/splitText.md b/guide/Text/textSplit/splitText.md deleted file mode 100644 index 569e4a4a..00000000 --- a/guide/Text/textSplit/splitText.md +++ /dev/null @@ -1,24 +0,0 @@ -# $splitText -returns the element by index from `$textSplit` - -#### Usage: `$splitText[index]` -
- - - - !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] - {{ '\n' }} - $splitText[2] - - - - 2 - - - -::: danger -This function got deprecated, use `$arrayGet` instead -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/textSplit/textSplit.md b/guide/Text/textSplit/textSplit.md deleted file mode 100644 index ad5a930d..00000000 --- a/guide/Text/textSplit/textSplit.md +++ /dev/null @@ -1,16 +0,0 @@ -# $textSplit -Splits the provided text with `seperator` and creates an array. To access them use: `$arrayGet` or other array functions - - -#### Usage: `$textSplit[text;separator(optional, default = ,)]` -
- - - - !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] - - - - -##### Function difficulty -###### Tags: diff --git a/guide/Text/textTrim.md b/guide/Text/textTrim.md deleted file mode 100644 index 39ba1f0f..00000000 --- a/guide/Text/textTrim.md +++ /dev/null @@ -1,19 +0,0 @@ -# $textTrim - -Removes useless spaces from given text. - -## Usage - -```bash -$textTrim[text] -``` - -### Example: - - - !!exec $textTrim[ My name is Mido ]

-
- - My name is Mido - -
\ No newline at end of file diff --git a/guide/Text/toLocaleUpperCase.md b/guide/Text/toLocaleUpperCase.md deleted file mode 100644 index b2fd7673..00000000 --- a/guide/Text/toLocaleUpperCase.md +++ /dev/null @@ -1,19 +0,0 @@ -# $toLocaleUppercase[text] -this sentence uppercases every first char of a word in a sentence - -#### Usage: -`$toLocaleUppercase[text]` - -
- - - !!exec $toLocaleUppercase[hello how are you?] - - - Hello How Are You? - - - - -##### Function difficulty -###### Tags: diff --git a/guide/Text/toLowercase.md b/guide/Text/toLowercase.md deleted file mode 100644 index f746f0fb..00000000 --- a/guide/Text/toLowercase.md +++ /dev/null @@ -1,19 +0,0 @@ -# $toLowercase[text] -this functions lowercases every character - -#### Usage: -`$toLowercase[text]` - -
- - - !!exec $toLowercase[HeLlO] - - - hello - - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/toUppercase.md b/guide/Text/toUppercase.md deleted file mode 100644 index e479a122..00000000 --- a/guide/Text/toUppercase.md +++ /dev/null @@ -1,19 +0,0 @@ -# $toUppercase[text] -this functions uppercases every character - -#### Usage: -`$toUppercase[text]` - -
- - - !!exec $touppercase[hElLo] - - - HELLO - - - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Text/uri.md b/guide/Text/uri.md deleted file mode 100644 index df923f79..00000000 --- a/guide/Text/uri.md +++ /dev/null @@ -1,29 +0,0 @@ -# $uri - -Decodes or Encodes a url Example when you encode a url 'hello world' = 'hello%20world' - -## Usage - -```bash -$uri[decode/encode;text] -``` - -### Example (Encoding): - - - !!exec $uri[encode;Hello World]

-
- - Hello%20World

-
-
- -### Example (Decoding): - - - !!exec $uri[decode;Hello%20World]

-
- - Hello World - -
\ No newline at end of file diff --git a/guide/Text/void.md b/guide/Text/void.md deleted file mode 100644 index d54487cf..00000000 --- a/guide/Text/void.md +++ /dev/null @@ -1,19 +0,0 @@ -# $void - -A function that eats input but return nothing! - -## Usage - -```bash -$void[ANYTHING] -``` - -### Example: - - - !!exec $let[name;Mido]
My name is $void[$get[name]]

-
- - My name is - -
\ No newline at end of file diff --git a/guide/Threads/deleteThreads.md b/guide/Threads/deleteThreads.md deleted file mode 100644 index cb19e4ff..00000000 --- a/guide/Threads/deleteThreads.md +++ /dev/null @@ -1,10 +0,0 @@ -# $deleteThreads -threads with the provided thread id gets deleted -### Usage: `$deleteThreads[threadid;threadid2;...]` - -Example: `$deleteThreads[809890890890000]` -Don't forget to change the thread id - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Threads/getThreads.md b/guide/Threads/getThreads.md deleted file mode 100644 index 8fef8cbc..00000000 --- a/guide/Threads/getThreads.md +++ /dev/null @@ -1,22 +0,0 @@ -# $getThreads -Get all threads from a channel. - -#### Usage: -`$getThreads[Channel ID;Type to return (name/id);Seperator (default:, )]` - -
- - - !!exec $getThreads[$channelID;name; | ] - - - Cat Disscussion | Help - - - -::: tip -This Command supports Curl Arguments, a link to the page explaining it, will get added when done -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Threads/joinThreads.md b/guide/Threads/joinThreads.md deleted file mode 100644 index 16de0d0d..00000000 --- a/guide/Threads/joinThreads.md +++ /dev/null @@ -1,10 +0,0 @@ -# $joinThreads -custom command bot joins the threads with the provided thread id -### Usage: `$joinThreads[threadid;threadid2;...]` - -Example: `$joinThreads[809890890890000]` -Don't forget to change the thread id - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Threads/leaveThreads.md b/guide/Threads/leaveThreads.md deleted file mode 100644 index 1b7606aa..00000000 --- a/guide/Threads/leaveThreads.md +++ /dev/null @@ -1,10 +0,0 @@ -# $leaveThreads -custom command bot leaves the threads with the provided thread id -### Usage: `$leaveThreads[threadid;threadid2;...]` - -Example: `$leaveThreads[809890890890000]` -Don't forget to change the thread id - - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Threads/thread.md b/guide/Threads/thread.md deleted file mode 100644 index 3c95faf1..00000000 --- a/guide/Threads/thread.md +++ /dev/null @@ -1,35 +0,0 @@ -# $thread -Gets info trom a thread. - -#### Usage: -`$thread[Thread ID;Type]` - -
- - - !!exec <@!$thread[owner]> - - - Member - - - -::: details Valid objects for "Type" -* `archivedat` -* `duration` -* `id` -* `members` -* `memberscount` -* `messagescount` -* `name` -* `owner` -* `locked` -* `parent` -::: - -::: tip -This Command supports Curl Arguments, a link to the page explaining it, will get added when done -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Trigger/1.triggers.md b/guide/Trigger/1.triggers.md deleted file mode 100644 index 6a4a40c2..00000000 --- a/guide/Trigger/1.triggers.md +++ /dev/null @@ -1,69 +0,0 @@ -# Triggers showcase -Here's a quick preview of all available triggers: - -## [Word](./word.md) -Triggers on specific words/patterns -> ![Word](https://i.imgur.com/zQtDgDM.png) - -## [Reaction](./reaction.md) -Fires once someone reacts to a message -> ![](https://i.imgur.com/h1pe28J.gif) - -## [Button](./button.md) -Detects users clicking buttons sent by the bot -> ![](https://i.imgur.com/QrxFg8d.png) - -## [Menu](./menu.md) -Activates when someone confirms their choice in menu -> ![](https://i.imgur.com/7wZLMIq.gif) - -## [Slash command](./slash.md) -Responds to a discord slash command created with the bot -> ![](https://i.imgur.com/Hspy46H.gif) - -## [Modal](./modal.md) -Triggers on submittion of a modal (form) if that modal was sent by the bot -> ![](https://i.imgur.com/ON9e1D4.png) - -## [Channel](./channel.md) -Detects channels being added or removed -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105138748414492772/channel-trigger.gif) - -## [Role](./roleaddremove.md) -Triggers on role assignment -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) - -## [Timed event](./time.md) -Executes the code at a set time -> ![](https://cdn.discordapp.com/attachments/1105135517055594508/1105141376083038240/image.png) - -## [Interval](./time.md) -Repeatedly executes the code once in a specific time (e.g every hour) -> ![](https://cdn.discordapp.com/attachments/1100128432395927765/1116042286812385370/image.png) - -## [Voice](./voicecondecon.md) -Fires of when user leaves or joins a voice channel -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) - -## [Server boost](./serverboost.md) -Detects people boosting the server -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105142982270783587/image.png) - -## [Join or Leave](./joinorleave.md) -Triggers when someone joins or leaves the server -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105143572510027806/image.png) - -## [On Upvote](./upvote.md) -Triggers when someone upvote in Top.gg. - -## [User Command](./app_cmd_user.md) -Triggers when user command is selected from the user's context menu. - -## [Message Command](./app_cmd_message.md) -Triggers when user command is selected from the message's context menu. - -## [Library](./library.md) -A code which can be imported in any other code -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105145858581872750/image.png) -> -> In this example $includeLibrary has been used to import a library called `tools` which contained a custom $embedMsg function. diff --git a/guide/Useful/callFunction.md b/guide/Useful/callFunction.md deleted file mode 100644 index 98008eca..00000000 --- a/guide/Useful/callFunction.md +++ /dev/null @@ -1,54 +0,0 @@ -# $callFunction -To call a user-defined function created with `$function` - - -#### Usage: -`$callFunction[Function Name;Argument 1 (optional);Argument 2....(optional)]` - -#### Example: -```bash -$callFunction[printHello;Mika] -``` - -Call the function, using `$callFunction` -
- - - - !!exec $function[printHello;name] - {{ '\n' }} - Hello $name 👋 - {{ '\n' }} - $endFunction - $callFunction[printhello;Mika] - - - - Hello Mika 👋 - - - -Call the function, using `$printHello` -
- - - - !!exec $function[printHello;name] - {{ '\n' }} - Hello $name 👋 - {{ '\n' }} - $endFunction - $printhello[Mika] - - - - Hello Mika 👋 - - - -::: danger -A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Useful/error.md b/guide/Useful/error.md deleted file mode 100644 index e5d48e7e..00000000 --- a/guide/Useful/error.md +++ /dev/null @@ -1,29 +0,0 @@ -# $error -Returns the error the interpreter threw - -#### Usage: -`$error` - -#### Example: -
- - - - !!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] - $error - - - - ❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] - - - - -::: danger -The way `$modifyChannelPerms` shown here is **NOT** correct! - -Check the `$modifyChannelPerms` for the correct usage -::: - -##### Function Difficulty: -###### Tags: diff --git a/guide/Useful/forEach.md b/guide/Useful/forEach.md deleted file mode 100644 index 074801b8..00000000 --- a/guide/Useful/forEach.md +++ /dev/null @@ -1,62 +0,0 @@ -# $forEach -Will loop over a list and every loop it will take an item and assign it inside varname accessible by $get[varname] or $varname - -## Usage: -```bash -$forEach[varname;LIST (ex: mido rake azz);Separator (Optional, default is space)] -``` -## Loop Limits -Loops in this function are limited to a certain number of cycles. These limits vary between different tiers of premium. -| Tier | Limit | -| :------- | :--- | -| 0 (Free) | 10 | -| 3 (Freemium) | 15 | -| 4 (Pro) | 30 | -| 5 (Ultra) | 60 | - -## Example: -```bash -$forEach[member;Rake, Mido, Mika, Azz, Felix, Flinkz, Wiki, Ddk;, ] -$get[member], is one of our Staff Members! -$endForEach -``` - -
- - - - !!exec $forEach[member;Rake, Mido, Azz, Mika, Felix, Flinkz, Wiki, Ddk;, ] - {{ '\n' }} - $get[member], is one of our Staff Members! - {{ '\n' }} - $endForEach - - - - - Rake, is one of our Staff Members! - {{ '\n' }} - Mido, is one of our Staff Members! - {{ '\n' }} - Azz, is one of our Staff Members! - {{ '\n' }} - Mika, is one of our Staff Members! - {{ '\n' }} - Felix, is one of our Staff Members! - {{ '\n' }} - Flinkz, is one of our Staff Members! - {{ '\n' }} - Wiki, is one of our Staff Members! - {{ '\n' }} - Ddk, is one of our Staff Members! - {{ '\n' }} - - - - -::: tip -This can be used with `$seq`! -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/function.md b/guide/Useful/function.md deleted file mode 100644 index 6ee8e2ed..00000000 --- a/guide/Useful/function.md +++ /dev/null @@ -1,62 +0,0 @@ -# $function -Create a user-defined function that can be called by $callFunction or $functionName - - -#### Usage: -`$function[Function name;Param 1 (optional);Param 2...(optional)]` - -#### Example: -```bash -$function[printHello;name] - Hello $name -$endFunction -``` - -Call the function, using `$callFunction` -
- - - - !!exec $function[printHello;name] - {{ '\n' }} - Hello $name 👋 - {{ '\n' }} - $endFunction - $callFunction[printhello;Mika] - - - - Hello Mika 👋 - - - -Call the function, using `$printHello` -
- - - - !!exec $function[printHello;name] - {{ '\n' }} - Hello $name 👋 - {{ '\n' }} - $endFunction - $printhello[Mika] - - - - Hello Mika 👋 - - - -::: tip -Code inside the function is isolated from outside, which means changing of variables, arrays, random,...won't effect the outside.\ -you can access outside temporary variables (assigned by `$let`) but you can't change them. -::: - -::: danger -A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] for short format ($functionName) -but if you are using $callFunction to call the function, any name is valid -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/redirectErrors.md b/guide/Useful/redirectErrors.md deleted file mode 100644 index 1d4ba3ef..00000000 --- a/guide/Useful/redirectErrors.md +++ /dev/null @@ -1,33 +0,0 @@ -# $redirectErrors -To redirect any kind of errors to a specific channel, by default errors will appear in the execution channel - -#### Usage: -`$redirectErrors[Channel ID]` - -#### Example: -
- - - - !!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] - $redirectErrors[Channel ID] - - - - -
- - - ❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] - - - - -::: danger -The way `$modifyChannelPerms` shown here is **NOT** correct! - -Check the `$modifyChannelPerms` for the correct usage -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/seq.md b/guide/Useful/seq.md deleted file mode 100644 index 86bc135e..00000000 --- a/guide/Useful/seq.md +++ /dev/null @@ -1,23 +0,0 @@ -# $seq -Returns a sequence of numbers, decided by a starting (inclusive) number and stop at ending (inclusive) number with step. - -#### Usage: -`$seq[Start;End;Step (optional, default=1);Separator (default ' ')]` - -#### Example: -
- - - !!exec $seq[1;10] - - - 1 2 3 4 5 6 7 8 9 10 - - - -::: tip -This can be used with `$forEach` quite easily -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Useful/setTimeout.md b/guide/Useful/setTimeout.md deleted file mode 100644 index e43dd1d6..00000000 --- a/guide/Useful/setTimeout.md +++ /dev/null @@ -1,36 +0,0 @@ -# $setTimeout -Will execute the code inside it after certain time - -#### Usage: -`$setTimeout[time;file name (optional, default=$undefined));author (optional, default=$authorID)]` - -#### Example: -
- - - - !!exec This part gets executed before the 2d timeout - {{ '\n' }} - $setTimeout[2d;Testing;$authorID] - {{ '\n' }} - This part after the 2d - {{ '\n' }} - $endTimeout - - - - This part gets executed before the 2d timeout - - - This part after the 2d - - - -:::tip -If you only want to wait less then 1m, you can use `$wait` -::: - - - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/spread.md b/guide/Useful/spread.md deleted file mode 100644 index 87d9cbe1..00000000 --- a/guide/Useful/spread.md +++ /dev/null @@ -1,18 +0,0 @@ -# $spread -spreads text as arguments inside functions - -#### Usage: `$spread[separator (optional, default: ,);data to spread]` - -#### Example: -
- - - !!exec Your color is $randomtext[$spread[,;Blue,Yellow,Green]] - - - Your color is Yellow - - - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/stop.md b/guide/Useful/stop.md deleted file mode 100644 index 5693f55a..00000000 --- a/guide/Useful/stop.md +++ /dev/null @@ -1,44 +0,0 @@ -# $stop -This function will cause the interpetender to stop the command execution & return a message if wanted. - -#### Usage: -`$stop[Message (optional)]` - -#### Example: -
- - - - !!exec $sendMessage[This message will be send;no] - {{ '\n' }} - $stop[This funtion will cause the interpetender to stop the code] - {{ '\n' }} - $sendMesssage[This message won't be send;no] - - - - This message will be send - - - This funtion will cause the interpetender to stop the code - - - -::: tip Note -You can send embed using [Message Curl Format](../CodeReferences/ref.message_curl_format.md) -::: - -::: danger Watch Out!! -Using plain text in your code, like below will **NOT** work!! - -This code doesn't work: -```bash -This is plain text before the stop function -$stop -This is plain text after the stop function -``` -^^ - This will not send anything! -::: - -##### Function difficulty -###### Tags: \ No newline at end of file diff --git a/guide/Useful/suppressErrors.md b/guide/Useful/suppressErrors.md deleted file mode 100644 index 28480094..00000000 --- a/guide/Useful/suppressErrors.md +++ /dev/null @@ -1,32 +0,0 @@ -# $suppressErrors -Suppress all the errors and sends a custom one. {error} will contain the error that was thrown. - -#### Usage: -`$suppressErrors[message]` - -#### Example: -
- - - - !!exec $suppressErrors[Wrong usage of $modifyChannelPerms] - $modifyChannelPerms[$authorID;-sendmessages;$channelID] - - - - Wrong usage of $modifyChannelPerms - - - -::: tip Note -You can send embed using [Message Curl Format](../CodeReferences/ref.message_curl_format.md) -::: - -::: danger -The way `$modifyChannelPerms` shown here is **NOT** correct! - -Check the `$modifyChannelPerms` for the correct usage -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Useful/triggerExists.md b/guide/Useful/triggerExists.md deleted file mode 100644 index 98b5171b..00000000 --- a/guide/Useful/triggerExists.md +++ /dev/null @@ -1,29 +0,0 @@ -# $triggerExists - -Check if a trigger with the specified token exists - -## Usage - -```bash -$triggerExists[Token] -``` - -### Example (An existing trigger): - - - !!exec $triggerExists[fx1d53]

-
- - true

-
-
- -### Example (not available trigger): - - - !!exec $triggerExists[abcdef]

-
- - false - -
diff --git a/guide/Useful/wait.md b/guide/Useful/wait.md deleted file mode 100644 index de9e2711..00000000 --- a/guide/Useful/wait.md +++ /dev/null @@ -1,32 +0,0 @@ -# $wait -Will wait an X time, before executing the code below it. - -#### Usage: -`$wait[time]` - -#### Example: -
- - - - !!exec $sendMessage[This part gets executed before the 10s] - {{ '\n' }} - $wait[10s] - {{ '\n' }} - $sendMessage[This part after the 10s] - - - - This part gets executed before the 10s - - - This part after the 10s - - - -:::tip -If you want to wait more then 1m, we suggest you use `$setTimeout` -::: - -##### Function difficulty -###### Tags: diff --git a/guide/Variables/deleteChannelVar.md b/guide/Variables/deleteChannelVar.md deleted file mode 100644 index 0eb0fcfd..00000000 --- a/guide/Variables/deleteChannelVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $deleteChannelVar -Deletes a channel variable, from the command trigger channel or from the ID specified. - -#### Usage: `$deleteChannelVar[variable;channelID(optional)]` -
- - - !!exec $deleteChannelVar[Creator] - - - -::: tip Related Functions -Check out: `$setChannelVar` - -Check out: `$getChannelVar` -::: diff --git a/guide/Variables/deleteMessageVar.md b/guide/Variables/deleteMessageVar.md deleted file mode 100644 index ed673c55..00000000 --- a/guide/Variables/deleteMessageVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $deleteMessageVar -Deletes a message variable, from the command trigger or from the ID specified. - -#### Usage: `$deleteMessageVar[variable;MessageID(optional)]` -
- - - !!exec $deleteMessageVar[Author] - - - -::: tip Related Functions -Check out: `$setMessageVar` - -Check out: `$getMessageVar` -::: diff --git a/guide/Variables/deleteServerVar.md b/guide/Variables/deleteServerVar.md deleted file mode 100644 index 0bdd2d78..00000000 --- a/guide/Variables/deleteServerVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $deleteServerVar -Deletes a server variable. - -#### Usage: `$deleteServerVar[variable]` -
- - - !!exec $deleteServerVar[TopMember] - - - -::: tip Related Functions -Check out: `$setServerVar` - -Check out: `$getServerVar` -::: diff --git a/guide/Variables/deleteUserVar.md b/guide/Variables/deleteUserVar.md deleted file mode 100644 index 1d47c4aa..00000000 --- a/guide/Variables/deleteUserVar.md +++ /dev/null @@ -1,18 +0,0 @@ -# $deleteUserVar -Deletes a user variable, from the author of the command or from the ID specified. - -#### Usage: `$deleteUserVar[variable;userID]` -
- - - !!exec $deleteUserVar[Creator;$authorID] - - - -::: tip Related Functions -Check out: `$setUserVar` - -Check out: `$getUserVar` - -Check out: `$resetUserVar` -::: diff --git a/guide/Variables/get.md b/guide/Variables/get.md deleted file mode 100644 index 797db60d..00000000 --- a/guide/Variables/get.md +++ /dev/null @@ -1,28 +0,0 @@ -# $get -retrieve variable defined by `$let` - -## Usage: `$get[varname;value if not exists] or $varname` - -### Example 1: - - - !!exec $let[orange;10]
$get[orange] or $orange -
- - 10 or 10 - -
- -### Example 2 (Use default value if not exists): - - - !!exec Your name is $get[name;Mido] - - - Your name is Mido - - - -::: tip Related Functions -Check out: `$let` -::: diff --git a/guide/Variables/getChannelVar.md b/guide/Variables/getChannelVar.md deleted file mode 100644 index 88793ab4..00000000 --- a/guide/Variables/getChannelVar.md +++ /dev/null @@ -1,19 +0,0 @@ -# $getChannelVar -Gets a channel variable value - -#### Usage: `$getChannelVar[variable;channelID(optional)]` -
- - - !!exec $getChannelVar[Creator] - - - Mido - - - -::: tip Related Functions -Check out: `$setChannelVar` - -Check out: `$deleteChannelVar` -::: diff --git a/guide/Variables/getMessageVar.md b/guide/Variables/getMessageVar.md deleted file mode 100644 index 72f4e254..00000000 --- a/guide/Variables/getMessageVar.md +++ /dev/null @@ -1,19 +0,0 @@ -# $getMessageVar -Gets a message variable value - -#### Usage: `$getMessageVar[variable;messageID(optional)]` -
- - - !!exec $getMessageVar[data] - - - Mido - - - -::: tip Related Functions -Check out: `$setMessageVar` - -Check out: `$deleteMessageVar` -::: diff --git a/guide/Variables/getServerVar.md b/guide/Variables/getServerVar.md deleted file mode 100644 index 007b243a..00000000 --- a/guide/Variables/getServerVar.md +++ /dev/null @@ -1,19 +0,0 @@ -# $getServerVar -Gets a server variable value - -#### Usage: `$getServerVar[variable]` -
- - - !!exec $getServerVar[holder] - - - Mika - - - -::: tip Related Functions -Check out: `$setServerVar` - -Check out: `$deleteServerVar` -::: diff --git a/guide/Variables/getUserVar.md b/guide/Variables/getUserVar.md deleted file mode 100644 index b5b64ac9..00000000 --- a/guide/Variables/getUserVar.md +++ /dev/null @@ -1,32 +0,0 @@ -# $getUserVar -Gets a user variable value - -#### Usage: `$getUserVar[variable;userid(optional)]` -
- - - !!exec $getUserVar[warnings;683630053686378498] - - - 4 - - - -or executors(author/you) warning count: - - - - !!exec $getUserVar[warnings] - - - 1 - - - -::: tip Related Functions -Check out: `$setUserVar` - -Check out: `$deleteUserVar` - -Check out: `$resetUserVar` -::: diff --git a/guide/Variables/increaseChannelVar.md b/guide/Variables/increaseChannelVar.md deleted file mode 100644 index 746e79c3..00000000 --- a/guide/Variables/increaseChannelVar.md +++ /dev/null @@ -1,27 +0,0 @@ -# $increaseChannelVar - -To increase channel variable with a certain amount.\ -If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. - -## Usage - -```bash -$increaseChannelVar[variable name;amount/expression;channel id;default amount (default is 0)] -``` - -### Example (increase channel messages by 1): -```bash -$increaseChannelVar[messages;1] - - -``` - -### Example (double the messages): - - - !!exec Before: $getChannelVar[messages]
$increaseChannelVar[messages;x*2]
After: $getChannelVar[messages]

-
- - Before: 5
After: 10 -
-
diff --git a/guide/Variables/increaseServerVar.md b/guide/Variables/increaseServerVar.md deleted file mode 100644 index 8b369c94..00000000 --- a/guide/Variables/increaseServerVar.md +++ /dev/null @@ -1,27 +0,0 @@ -# $increaseServerVar - -To increase server variable with a certain amount.\ -If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. - -## Usage - -```bash -$increaseServerVar[variable name;amount/expression;default amount (default is 0)] -``` - -### Example (increase ticket numbers by 1): -```bash -$increaseServerVar[ticket numbers;1] - - -``` - -### Example (double the messages): - - - !!exec Before: $getServerVar[ticket numbers]
$increaseServerVar[ticket numbers;x*2]
After: $getServerVar[ticket numbers]

-
- - Before: 5
After: 10 -
-
diff --git a/guide/Variables/increaseUserVar.md b/guide/Variables/increaseUserVar.md deleted file mode 100644 index e254475f..00000000 --- a/guide/Variables/increaseUserVar.md +++ /dev/null @@ -1,27 +0,0 @@ -# $increaseUserVar - -To increase user variable with a certain amount.\ -If the variable doesn't exist it will be created and its value set to the answer of the value as if the original value of the var is 0. - -## Usage - -```bash -$increaseUserVar[variable name;amount/expression;user id;default amount (default is 0)] -``` - -### Example (increase user money by 1000): -```bash -$increaseUserVar[money;1000] - - -``` - -### Example (double the money): - - - !!exec Before: $getUserVar[money]
$increaseUserVar[money;x*2]
After: $getUserVar[money]

-
- - Before: 1000
After: 2000 -
-
diff --git a/guide/Variables/resetUserVar.md b/guide/Variables/resetUserVar.md deleted file mode 100644 index b32d1e27..00000000 --- a/guide/Variables/resetUserVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $resetUserVar -Resets a user variable for all users. - -#### Usage: `$resetUserVar[variable]` -
- - - !!exec $resetUserVar[warnings] - - - -::: tip Related Functions -Check out: `$setUserVar` - -Check out: `$getUserVar` -::: diff --git a/guide/Variables/setChannelVar.md b/guide/Variables/setChannelVar.md deleted file mode 100644 index e01a1649..00000000 --- a/guide/Variables/setChannelVar.md +++ /dev/null @@ -1,24 +0,0 @@ -# $setChannelVar -Sets a channel variable value. - -#### Usage: `$setChannelVar[variable;value;channelID (optional)]` -
- - - !!exec $setChannelVar[Creator;Mido;$channelID] - - - -or for current Channel - - - - !!exec $setChannelVar[Creator;Mido] - - - -::: tip Related Functions -Check out: `$getChannelVar` - -Check out: `$deleteChannelVar` -::: diff --git a/guide/Variables/setMessageVar.md b/guide/Variables/setMessageVar.md deleted file mode 100644 index 9834a908..00000000 --- a/guide/Variables/setMessageVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $setMessageVar -Sets a message variable value. - -#### Usage: `$setMessageVar[variable;value;messageID(optional)]` -
- - - !!exec $setMessageVar[Creator;Mido;$messageID] - - - -::: tip Related Functions -Check out: `$getMessageVar` - -Check out: `$deleteMessageVar` -::: diff --git a/guide/Variables/setServerVar.md b/guide/Variables/setServerVar.md deleted file mode 100644 index da4410b5..00000000 --- a/guide/Variables/setServerVar.md +++ /dev/null @@ -1,16 +0,0 @@ -# $setServerVar -Sets a Server variable value. - -#### Usage: `$setServerVar[variable;value]` -
- - - !!exec $setServerVar[holder;Mika] - - - -::: tip Related Functions -Check out: `$getServerVar` - -Check out: `$deleteServerVar` -::: diff --git a/guide/Variables/setUserVar.md b/guide/Variables/setUserVar.md deleted file mode 100644 index f2642c8e..00000000 --- a/guide/Variables/setUserVar.md +++ /dev/null @@ -1,18 +0,0 @@ -# $setUserVar -Sets a user variable value. - -#### Usage: `$setUserVar[variable;value;userID(optional)]` -
- - - !!exec $setMessageVar[warnings;5] - - - -::: tip Related Functions -Check out: `$getUserVar` - -Check out: `$deleteUserVar` - -Check out: `$resetUserVar` -::: diff --git a/guide/Variables/userLeaderboard.md b/guide/Variables/userLeaderboard.md deleted file mode 100644 index 2ef9b195..00000000 --- a/guide/Variables/userLeaderboard.md +++ /dev/null @@ -1,44 +0,0 @@ -# $userLeaderboard -Generates a leaderboard of a user variable and return it. - -#### Usage: `$userLeaderboard[variable;asc/desc (optional);{top}.- {username} - {value};list (optional, max=40);page (optional)]` - -Available Variables: -| Variable | Description | -| --- | ----------- | -| {top} | returns the rank number | -| {value} | returns the numerical value of the variable | -| {raw_value} | returns the raw value in case it's not number | -| {id} | returns the user id | -| {mention} | returns the user mention | -| {username} | returns the username | -| {nickname} | returns the nickname | -| {tag} | returns the tag like Mido#1234 | -| {discriminator} | returns the discriminator like 1234 | - -Order: -* `desc`: Will display all the members' ranks from largest to smallest. -* `asc`: Will display all the members' ranks from smallest to largest. - -#### Example: -To use this function your uservar must have numeric values . -
- - - !!exec $setUserVar[money;100]
- !!exec $userLeaderboard[money;asc;{top}.- {username} - {value}] -
- - 1.- Mido - 100 - -
- -::: tip Related Functions -Check out: `$setUserVar` - -Check out: `$getUserVar` - -Check out: `$deleteUserVar` - -Check out: `$resetUserVar` -::: diff --git a/guide/Variables/userVarRank.md b/guide/Variables/userVarRank.md deleted file mode 100644 index c7262df5..00000000 --- a/guide/Variables/userVarRank.md +++ /dev/null @@ -1,19 +0,0 @@ -# $userVarRank - -Return user var rank returned by $userleaderboard for a single user - -## Usage - -```bash -$uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);User ID (optional)] -``` - -### Example: - - - !!exec Your rank is $userVarRank[xp]

-
- - Your rank is 3 - -
\ No newline at end of file diff --git a/guide/Variables/viewChannelVars.md b/guide/Variables/viewChannelVars.md deleted file mode 100644 index 6b55fd92..00000000 --- a/guide/Variables/viewChannelVars.md +++ /dev/null @@ -1,29 +0,0 @@ -# $viewChannelVars - -View a list of all the variables that are defined for a specific channel, and search for specific variables using a regular expression query filter - -## Usage - -```bash -$viewChannelVars[Channel ID (default: $channelID);Separator;Query Regex (optional)] -``` - -### Example: - - - !!exec $viewChannelVars

-
- - ticket, ticket_owner, staff

-
-
- -### Example (return only variables that starts with ticket): - - - !!exec $viewChannelVars[$channelID; ,;^ticket]

-
- - ticket, ticket_owner - -
\ No newline at end of file diff --git a/guide/Variables/viewServerVars.md b/guide/Variables/viewServerVars.md deleted file mode 100644 index 84a7cce5..00000000 --- a/guide/Variables/viewServerVars.md +++ /dev/null @@ -1,29 +0,0 @@ -# $viewServerVars - -View a list of all the variables that are defined for the server, and search for specific variables using a regular expression query filter - -## Usage - -```bash -$viewServerVars[Separator;Query Regex (optional)] -``` - -### Example: - - - !!exec $viewServerVars

-
- - level1_xp, names, staffs, level2_xp, level3_xp, level1_reward

-
-
- -### Example (return only variables that starts with level): - - - !!exec $viewServerVars[, ;^level]

-
- - level1_xp, level2_xp, level3_xp,level1_reward - -
diff --git a/guide/Variables/viewUserVars.md b/guide/Variables/viewUserVars.md deleted file mode 100644 index b1a09121..00000000 --- a/guide/Variables/viewUserVars.md +++ /dev/null @@ -1,19 +0,0 @@ -# $viewUserVars - -View a list of all the variables that are defined for a specific user - -## Usage - -```bash -$viewUserVars[User ID;Separator] -``` - -### Example: - - - !!exec $viewUsersVars[$authorID]

-
- - xp, money, bonus - -
diff --git a/guide/function-map.json b/guide/function-map.json index 668d564b..7998eeb4 100644 --- a/guide/function-map.json +++ b/guide/function-map.json @@ -1,557 +1,574 @@ { - "botcount": "Bot/botCount.md", - "botownerid": "Bot/botOwnerID.md", - "botping": "Bot/botPing.md", - "bottier": "Bot/botTier.md", - "bottyping": "Bot/botTyping.md", - "botverified": "Bot/botVerified.md", - "botversion": "Bot/botVersion.md", - "cachemember": "Bot/cacheMember.md", - "clientid": "Bot/clientID.md", - "cpu": "Bot/cpu.md", - "executiontime": "Bot/executionTime.md", - "getbotactivity": "Bot/getBotActivity.md", - "getbotinvite": "Bot/getBotInvite.md", - "maxram": "Bot/maxRam.md", - "ping": "Bot/ping.md", - "ram": "Bot/ram.md", - "servercount": "Bot/serverCount.md", - "setbotactivity": "Bot/setBotActivity.md", - "uptime": "Bot/uptime.md", - "blacklistchannelids": "Channel/blackListChannelIDs.md", - "cachechannelmessages": "Channel/cacheChannelMessages.md", - "categorychannels": "Channel/categoryChannels.md", - "channel": "Channel/channel.md", - "channelcategoryid": "Channel/channelCategoryID.md", - "channelcount": "Channel/channelCount.md", - "channelexists": "Channel/channelExists.md", - "channelid": "Channel/channelID.md", - "channelname": "Channel/channelName.md", - "channelpermissionsfor": "Channel/channelPermissionsFor.md", - "channeltopic": "Channel/channelTopic.md", - "channeltype": "Channel/channelType.md", - "channelused": "Channel/channelUsed.md", - "clear": "Channel/clear.md", - "clonechannel": "Channel/cloneChannel.md", - "closeticket": "Channel/closeTicket.md", - "createchannel": "Channel/createChannel.md", - "createforum": "Channel/createForum.md", - "deletechannels": "Channel/deleteChannels.md", - "editchannel": "Channel/editChannel.md", - "editforum": "Channel/editForum.md", - "eventchannelid": "Channel/eventChannelID.md", - "eventchannelparent": "Channel/eventChannelParent.md", - "findchannel": "Channel/findChannel.md", - "findserverchannel": "Channel/findServerChannel.md", - "getchannelmessages": "Channel/getChannelMessages.md", - "getchannelslowmode": "Channel/getChannelSlowmode.md", - "latestmessage": "Channel/latestMessage.md", - "mentionchannel": "Channel/mentionChannel.md", - "modifychannelperms": "Channel/modifyChannelPerms.md", - "newticket": "Message/newTicket.md", - "removecontains": "Channel/removeContains.md", - "serverchannels": "Channel/serverChannels.md", - "setchanneltopic": "Channel/setChannelTopic.md", - "slowmode": "Channel/slowmode.md", - "transcriptchannel": "Channel/transcriptChannel.md", - "usechannel": "Channel/useChannel.md", - "vcafter": "Channel/vcAfter.md", - "vcbefore": "Channel/vcBefore.md", - "voicechannelid": "Channel/voiceChannelID.md", - "channelcooldown": "Cooldown/channelCooldown.md", - "cooldown": "Cooldown/cooldown.md", - "servercooldowm": "CodeReferences/ref.serverCooldown.md", - "clearcooldown": "Cooldown/clearCoolDown.md", - "getcooldowntime": "Cooldown/getCooldownTime.md", - "servercooldown": "Cooldown/serverCooldown.md", - "creationdate": "Date/creationDate.md", - "datestamp": "Date/dateStamp.md", - "datetotime": "Date/dateToTime.md", - "day": "Date/day.md", - "formatdate": "Date/formatDate.md", - "hour": "Date/hour.md", - "humanizems": "Date/humanizeMS.md", - "memberjoinedcode": "Date/memberJoinedCode.md", - "memberjoineddate": "Date/memberJoinedDate.md", - "minute": "Date/minute.md", - "month": "Date/month.md", - "parsedate": "Date/parseDate.md", - "parsetime": "Date/parseTime.md", - "second": "Date/second.md", - "timestamp": "Date/timeStamp.md", - "timetodate": "Date/timeToDate.md", - "timezone": "Date/timezone.md", - "year": "Date/year.md", - "eventcreate": "Events/eventCreate.md", - "eventdelete": "Events/eventDelete.md", - "eventedit": "Events/eventEdit.md", - "eventend": "Events/eventEnd.md", - "eventexists": "Events/eventExists.md", - "eventstart": "Events/eventStart.md", - "geteventinfo": "Events/getEventInfo.md", - "geteventusers": "Events/getEventUsers.md", - "guildevents": "Events/guildEvents.md", - "imageborderrad": "Image/imageBorderRad.md", - "imagecreate": "Image/imageCreate.md", - "imagecrop": "Image/imageCrop.md", - "imagedraw": "Image/imageDraw.md", - "imagedrawback": "Image/imageDrawBack.md", - "imagefill": "Image/imageFill.md", - "imageheight": "Image/imageHeight.md", - "imagelineheight": "Image/imageLineHeight.md", - "imageloademoji": "Image/imageLoadEmoji.md", - "imageloadfromurl": "Image/imageLoadFromURL.md", - "imageoutput": "Image/imageOutput.md", - "imagepositionbase": "Image/imagePositionBase.md", - "imagesetopacity": "Image/imageSetOpacity.md", - "imagestroke": "Image/imageStroke.md", - "imagestrokewidth": "Image/imageStrokeWidth.md", - "imagetextalign": "Image/imageTextAlign.md", - "imagetextbaseline": "Image/imageTextBaseline.md", - "imagetextcolor": "Image/imageTextColor.md", - "imagetextfill": "Image/imageTextFill.md", - "imagetextfillcolor": "Image/imageTextFillColor.md", - "imagetextsize": "Image/imageTextSize.md", - "imagetextstroke": "Image/imageTextStroke.md", - "imagetextstrokecolor": "Image/imageTextStrokeColor.md", - "imagetextweight": "Image/imageTextWeight.md", - "imageusefont": "Image/imageUseFont.md", - "imagewidth": "Image/imageWidth.md", - "commandname": "Interaction/commandName.md", - "getoption": "Interaction/getOption.md", - "interactiondelete": "Interaction/interactionDelete.md", - "interactionedit": "Interaction/interactionEdit.md", - "interactionid": "Interaction/interactionId.md", - "interactionreply": "Interaction/interactionReply.md", - "modal": "Interaction/modal.md", - "modalanswer": "Interaction/modalAnswer.md", - "modalid": "Interaction/modalID.md", - "authoravatar": "Member/authorAvatar.md", - "authorid": "Member/authorID.md", - "ban": "Member/ban.md", - "blacklistids": "Member/blackListIDs.md", - "boostingsince": "Member/boostingSince.md", - "changenickname": "Member/changeNickname.md", - "discriminator": "Member/discriminator.md", - "displayname": "Member/displayName.md", - "eventnewnickname": "Member/eventNewNickname.md", - "eventoldnickname": "Member/eventOldNickname.md", - "findmember": "Member/findMember.md", - "getuserbadges": "Member/getUserBadges.md", - "hasanyperm": "Member/hasAnyPerm.md", - "hasanyrole": "Member/hasAnyRole.md", - "hasperms": "Member/hasPerms.md", - "hasroles": "Member/hasRoles.md", - "isbanned": "Member/isBanned.md", - "isuserdmenabled": "Member/isUserDMEnabled.md", - "kick": "Member/kick.md", - "membersearch": "Member/memberSearch.md", - "memberswithstatus": "Member/membersWithStatus.md", - "mention": "Member/mention.md", - "moveuser": "Member/moveUser.md", - "muteuser": "Member/muteUser.md", - "nickname": "Member/nickname.md", - "status": "Member/status.md", - "unban": "Member/unban.md", - "user": "Member/user.md", - "useravatar": "Member/userAvatar.md", - "userbanner": "Member/userBanner.md", - "userconnectedvc": "Member/userConnectedVC.md", - "userexists": "Member/userExists.md", - "userid": "Member/userID.md", - "userperms": "Member/userPerms.md", - "userreacted": "Member/userReacted.md", - "userrolecolor": "Member/userRoleColor.md", - "userroles": "Member/userRoles.md", - "usertag": "Member/userTag.md", - "username": "Member/username.md", - "usersbanned": "Member/usersBanned.md", - "usersinchannel": "Member/usersInChannel.md", - "userstyping": "Member/usersTyping.md", - "userswithrole": "Member/usersWithRole.md", - "dm": "Message/DM.md", - "addcmdreactions": "Message/addCmdReactions.md", - "addmessagereactions": "Message/addMessageReactions.md", - "addreactions": "Message/addReactions.md", - "argscheck": "Message/argsCheck.md", - "argscount": "Message/argsCount.md", - "awaitmessage": "Message/awaitMessage.md", - "channelsendmessage": "Message/channelSendMessage.md", - "clearreaction": "Message/clearReaction.md", - "clearreactions": "Message/clearReactions.md", - "createwebhook": "Message/createWebhook.md", - "deletecommand": "Message/deleteCommand.md", - "deletein": "Message/deleteIn.md", - "deletemessage": "Message/deleteMessage.md", - "deletewebhook": "Message/deleteWebhook.md", - "deletewebhookmessage": "Message/deleteWebhookMessage.md", - "disablechannelmentions": "Message/disableChannelMentions.md", - "disableeveryonementions": "Message/disableEveryoneMentions.md", - "disablerolementions": "Message/disableRoleMentions.md", - "editembed": "Message/editEmbed.md", - "editin": "Message/editIn.md", - "editmessage": "Message/editMessage.md", - "editwebhookmessage": "Message/editWebhookMessage.md", - "emoji": "Message/emoji.md", - "emojiid": "Message/emojiID.md", - "emojiname": "Message/emojiName.md", - "emojitostring": "Message/emojiToString.md", - "emojisfrommessage": "Message/emojisFromMessage.md", - "enableeveryonementions": "Message/enableEveryoneMentions.md", - "getcommandoption": "Message/getCommandOption.md", - "getembed": "Message/getEmbed.md", - "getmessage": "Message/getMessage.md", - "getmessagereactions": "Message/getMessageReactions.md", - "getreactioncount": "Message/getReactionCount.md", - "getreactions": "Message/getReactions.md", - "hasembeds": "Message/hasEmbeds.md", - "hyperlink": "Message/hyperlink.md", - "message": "Message/message.md", - "messageattachment": "Message/messageAttachment.md", - "messageexists": "Message/messageExists.md", - "messageflags": "Message/messageFlags.md", - "messageid": "Message/messageID.md", - "messagepublish": "Message/messagePublish.md", - "messageslice": "Message/messageSlice.md", - "messagetype": "Message/messageType.md", - "messagewebhookid": "Message/messageWebhookID.md", - "modifywebhook": "Message/modifyWebhook.md", - "msg": "Message/msg.md", - "noescapingmessage": "Message/noEscapingMessage.md", - "nomentionmessage": "Text/noMentionMessage.md", - "pinmessage": "Message/pinMessage.md", - "poll": "Message/poll.md", - "referencechannelid": "Message/referenceChannelID.md", - "referencemessageid": "Message/referenceMessageID.md", - "reply": "Message/reply.md", - "sendcrosspostingmessage": "Message/sendCrosspostingMessage.md", - "senddm": "Message/sendDM.md", - "sendmessage": "Message/sendMessage.md", - "sendwebhook": "Message/sendWebhook.md", - "sentmessageid": "Message/sentMessageID.md", - "unpinmessage": "Message/unpinMessage.md", - "webhookexists": "Message/webhookExists.md", - "random": "Random/random.md", - "randomchannelid": "Random/randomChannelID.md", - "randommention": "Random/randomMention.md", - "randomroleid": "Random/randomRoleID.md", - "randomstring": "Random/randomString.md", - "randomtext": "Random/randomText.md", - "randomtextbiased": "Random/randomTextBiased.md", - "randomuserid": "Random/randomUserID.md", - "resetrandom": "Random/resetRandom.md", - "httprequest": "Request/httpRequest.md", - "httprequestheader": "Request/httpRequestHeader.md", - "httprequeststatus": "Request/httpRequestStatus.md", - "blacklistroleids": "Role/blackListRoleIDs.md", - "colorrole": "Role/colorRole.md", - "createrole": "Role/createRole.md", - "deleteroles": "Role/deleteRoles.md", - "findrole": "Role/findRole.md", - "getrolecolor": "Role/getRoleColor.md", - "giveroles": "Role/giveRoles.md", - "guildroles": "Role/guildRoles.md", - "hasrole": "Role/hasRole.md", - "highestrole": "Role/highestRole.md", - "highestserverrole": "Role/highestServerRole.md", - "lowestrole": "Role/lowestRole.md", - "lowestserverrole": "Role/lowestServerRole.md", - "mentionrole": "Role/mentionRole.md", - "modifyrole": "Role/modifyRole.md", - "modifyroleperms": "Role/modifyRolePerms.md", - "modifyuserroles": "Role/modifyUserRoles.md", - "role": "Role/role.md", - "rolecount": "Role/roleCount.md", - "roleexists": "Role/roleExists.md", - "roleid": "Role/roleID.md", - "roleicon": "Role/roleIcon.md", - "rolememberscount": "Role/roleMembersCount.md", - "rolename": "Role/roleName.md", - "roleperms": "Role/rolePerms.md", - "roleposition": "Role/rolePosition.md", - "setroles": "Role/setRoles.md", - "takeroles": "Role/takeRoles.md", - "toggleroles": "Role/toggleRoles.md", - "addemoji": "Server/addEmoji.md", - "allmemberscount": "Server/allMembersCount.md", - "createautomodkeyword": "Server/createAutomodKeyword.md", - "deleteautomod": "Server/deleteAutomod.md", - "deleteemojis": "Server/deleteEmojis.md", - "editautomodkeyword": "Server/editAutomodKeyword.md", - "emojicount": "Server/emojiCount.md", - "emojiexists": "Server/emojiExists.md", - "getinviteinfo": "Server/getInviteInfo.md", - "getserverinvite": "Server/getServerInvite.md", - "guild": "Server/guild.md", - "memberscount": "Server/membersCount.md", - "ownerid": "Server/ownerID.md", - "resolveemojiid": "Server/resolveEmojiID.md", - "securitypause": "Server/securityPause.md", - "serverbanner": "Server/serverBanner.md", - "serverboostcount": "Server/serverBoostCount.md", - "serverboostlevel": "Server/serverBoostLevel.md", - "servercontentfilter": "Server/serverContentFilter.md", - "serverdescription": "Server/serverDescription.md", - "serveremojis": "Server/serverEmojis.md", - "serverfeatures": "Server/serverFeatures.md", - "servericon": "Server/serverIcon.md", - "servername": "Server/serverName.md", - "serverregion": "Server/serverRegion.md", - "serversplash": "Server/serverSplash.md", - "serververificationlevel": "Server/serverVerificationLevel.md", - "setguildicon": "Server/setGuildIcon.md", - "setguildname": "Server/setGuildName.md", - "systemchannelid": "Server/systemChannelID.md", - "createsticker": "Stickers/createSticker.md", - "deletesticker": "Stickers/deleteSticker.md", - "editsticker": "Stickers/editSticker.md", - "messagestickers": "Stickers/messageStickers.md", - "serverstickers": "Stickers/serverStickers.md", - "sticker": "Stickers/sticker.md", - "arrayclear": "Text/Array/arrayClear.md", - "arrayconcat": "Text/Array/arrayConcat.md", - "arraycount": "Text/Array/arrayCount.md", - "arraycreate": "Text/Array/arrayCreate.md", - "arrayelementcount": "Text/Array/arrayElementCount.md", - "arrayfilter": "Text/Array/arrayFilter.md", - "arrayget": "Text/Array/arrayGet.md", - "arrayinclude": "Text/Array/arrayInclude.md", - "arrayjoin": "Text/Array/arrayJoin.md", - "arraylength": "Text/Array/arrayLength.md", - "arrayloop": "Text/Array/arrayLoop.md", - "arraymap": "Text/Array/arrayMap.md", - "arraypop": "Text/Array/arrayPop.md", - "arraypush": "Text/Array/arrayPush.md", - "arrayremove": "Text/Array/arrayRemove.md", - "arrayreverse": "Text/Array/arrayReverse.md", - "arraysearch": "Text/Array/arraySearch.md", - "arrayset": "Text/Array/arraySet.md", - "arrayshift": "Text/Array/arrayShift.md", - "arrayshuffle": "Text/Array/arrayShuffle.md", - "arrayslice": "Text/Array/arraySlice.md", - "arraysort": "Text/Array/arraySort.md", - "arrayunique": "Text/Array/arrayUnique.md", - "arrayunshift": "Text/Array/arrayUnshift.md", - "addbutton": "Text/Components/addButton.md", - "addmenu": "Text/Components/addMenu.md", - "awaitbutton": "Text/Components/awaitButton.md", - "awaitmenu": "Text/Components/awaitMenu.md", - "button": "Text/Components/button.md", - "buttonemoji": "Text/Components/buttonEmoji.md", - "buttonid": "Text/Components/buttonID.md", - "buttonisdisabled": "Text/Components/buttonIsDisabled.md", - "buttonlabel": "Text/Components/buttonLabel.md", - "buttonstyle": "Text/Components/buttonStyle.md", - "buttonurl": "Text/Components/buttonURL.md", - "disablebutton": "Text/Components/disableButton.md", - "disablebuttons": "Text/Components/disableButtons.md", - "disablemenu": "Text/Components/disableMenu.md", - "editbutton": "Text/Components/editButton.md", - "editmenu": "Text/Components/editMenu.md", - "enablebuttons": "Text/Components/enableButtons.md", - "enablemenu": "Text/Components/enableMenu.md", - "eventselected": "Text/Components/eventSelected.md", - "menuid": "Text/Components/menuId.md", - "removebutton": "Text/Components/removeButton.md", - "removebuttons": "Text/Components/removeButtons.md", - "removeembed": "Text/Components/removeEmbed.md", - "removemenu": "Text/Components/removeMenu.md", - "selectmenu": "Text/Components/selectMenu.md", - "checkcondition": "Text/Condition/checkCondition.md", - "conditional": "Text/Condition/conditional.md", - "else": "Text/Condition/else.md", - "elseif": "Text/Condition/elseif.md", - "endif": "Text/Condition/endIf.md", - "endelseif": "Text/Condition/endelseif.md", - "if": "Text/Condition/if.md", - "addfield": "Text/Embed/addField.md", - "addtimestamp": "Text/Embed/addTimestamp.md", - "attachment": "Text/Embed/attachment.md", - "author": "Text/Embed/author.md", - "color": "Text/Embed/color.md", - "description": "Text/Embed/description.md", - "footer": "Text/Embed/footer.md", - "image": "Text/Embed/image.md", - "thumbnail": "Text/Embed/thumbnail.md", - "title": "Text/Embed/title.md", - "abbreviate": "Text/Math/abbreviate.md", - "abs": "Text/Math/abs.md", - "ceil": "Text/Math/ceil.md", - "divide": "Text/Math/divide.md", - "floor": "Text/Math/floor.md", - "math": "Text/Math/math.md", - "mathmax": "Text/Math/mathMax.md", - "mathmin": "Text/Math/mathMin.md", - "modulo": "Text/Math/modulo.md", - "multi": "Text/Math/multi.md", - "ordinal": "Text/Math/ordinal.md", - "round": "Text/Math/round.md", - "roundtenth": "Text/Math/roundTenth.md", - "sub": "Text/Math/sub.md", - "sum": "Text/Math/sum.md", - "truncate": "Text/Math/truncate.md", - "objectcreate": "Text/Object/ObjectCreate.md", - "objectget": "Text/Object/ObjectGet.md", - "objectincrease": "Text/Object/ObjectIncrease.md", - "objectkeyexists": "Text/Object/ObjectKeyExists.md", - "objectkeys": "Text/Object/ObjectKeys.md", - "objectloop": "Text/Object/ObjectLoop.md", - "objectmerge": "Text/Object/ObjectMerge.md", - "objectremove": "Text/Object/ObjectRemove.md", - "objectrenamekey": "Text/Object/ObjectRenameKey.md", - "objectset": "Text/Object/ObjectSet.md", - "objectvalues": "Text/Object/ObjectValues.md", - "addobjectproperty": "Text/Object/addObjectProperty.md", - "createobject": "Text/Object/createObject.md", - "getobject": "Text/Object/getObject.md", - "getobjectkeys": "Text/Object/getObjectKeys.md", - "getobjectproperty": "Text/Object/getObjectProperty.md", - "regexcheck": "Text/Regex/regexCheck.md", - "regexmatch": "Text/Regex/regexMatch.md", - "regexreplace": "Text/Regex/regexReplace.md", - "replacetextwithregex": "Text/Regex/replaceTextWithRegex.md", - "buffer": "Text/buffer.md", - "channelnsfw": "Text/channelNSFW.md", - "charcount": "Text/charCount.md", - "checkcontains": "Text/checkContains.md", - "customemoji": "Text/customEmoji.md", - "disablementions": "Text/disableMentions.md", - "filtermessage": "Text/filterMessage.md", - "filtermessagewords": "Text/filterMessageWords.md", - "findchars": "Text/findChars.md", - "findnumbers": "Text/findNumbers.md", - "findspecialchars": "Text/findSpecialChars.md", - "indexof": "Text/indexOf.md", - "ischannelmention": "Text/isChannelMention.md", - "isusermention": "Text/isUserMention.md", - "isboosting": "Text/isandhas/isBoosting.md", - "isbot": "Text/isandhas/isBot.md", - "isconnected": "Text/isandhas/isConnected.md", - "isdeafened": "Text/isandhas/isDeafened.md", - "isemoji": "Text/isandhas/isEmoji.md", - "ishoisted": "Text/isandhas/isHoisted.md", - "ismanaged": "Text/isandhas/isManaged.md", - "ismentionable": "Text/isandhas/isMentionable.md", - "ismentioned": "Text/isandhas/isMentioned.md", - "ismuted": "Text/isandhas/isMuted.md", - "isnumber": "Text/isandhas/isNumber.md", - "isstreaming": "Text/isandhas/isStreaming.md", - "isticket": "Text/isandhas/isTicket.md", - "isvalidhex": "Text/isandhas/isValidHex.md", - "isvalidinvite": "Text/isandhas/isValidInvite.md", - "isvalidlink": "Text/isandhas/isValidLink.md", - "isvalidobject": "Text/isandhas/isValidObject.md", - "mentiontype": "Text/mentionType.md", - "mentioned": "Text/mentioned.md", - "mentionedchannels": "Text/mentionedChannels.md", - "mentionedroles": "Text/mentionedRoles.md", - "numtoword": "Text/numToWord.md", - "numberseparator": "Text/numberSeparator.md", - "onlybotperms": "Text/only/onlyBotPerms.md", - "onlyforcategories": "Text/only/onlyForCategories.md", - "onlyforchannels": "Text/only/onlyForChannels.md", - "onlyforids": "Text/only/onlyForIDs.md", - "onlyforroles": "Text/only/onlyForRoles.md", - "onlyif": "Text/only/onlyIf.md", - "onlyifmessagecontains": "Text/only/onlyIfMessageContains.md", - "onlynsfw": "Text/only/onlyNSFW.md", - "onlyperms": "Text/only/onlyPerms.md", - "padleft": "Text/padLeft.md", - "padright": "Text/padRight.md", - "repeatmessage": "Text/repeatMessage.md", - "replacetext": "Text/replaceText.md", - "stringendswith": "Text/stringEndsWith.md", - "stringstartswith": "Text/stringStartsWith.md", - "textlength": "Text/textLength.md", - "textshuffle": "Text/textShuffle.md", - "textslice": "Text/textSlice.md", - "advancedtextsplit": "Text/textSplit/advancedTextSplit.md", - "concattextsplit": "Text/textSplit/concatTextSplit.md", - "edittextsplitelement": "Text/textSplit/editTextSplitElement.md", - "findtextsplitindex": "Text/textSplit/findTextSplitIndex.md", - "gettextsplitlength": "Text/textSplit/getTextSplitLength.md", - "joinsplittext": "Text/textSplit/joinSplitText.md", - "removesplittextelement": "Text/textSplit/removeSplitTextElement.md", - "removetextsplitelement": "Text/textSplit/removeTextSplitElement.md", - "splicetextjoin": "Text/textSplit/spliceTextJoin.md", - "splittext": "Text/textSplit/splitText.md", - "textsplit": "Text/textSplit/textSplit.md", - "texttrim": "Text/textTrim.md", - "tolocaleuppercase": "Text/toLocaleUpperCase.md", - "tolowercase": "Text/toLowercase.md", - "touppercase": "Text/toUppercase.md", - "uri": "Text/uri.md", - "void": "Text/void.md", - "adduserstothread": "Threads/addUsersToThread.md", - "archivethread": "Threads/archiveThread.md", - "closepost": "Threads/closePost.md", - "createpost": "Threads/createPost.md", - "createthread": "Threads/createThread.md", - "deletepost": "Threads/deletePost.md", - "deleteposts": "Threads/deletePosts.md", - "deletethreads": "Threads/deleteThreads.md", - "editpost": "Threads/editPost.md", - "editthread": "Threads/editThread.md", - "getthreads": "Threads/getThreads.md", - "jointhreads": "Threads/joinThreads.md", - "leavethreads": "Threads/leaveThreads.md", - "lockpost": "Threads/lockPost.md", - "lockthread": "Threads/lockThread.md", - "pinpost": "Threads/pinPost.md", - "removeusersfromthread": "Threads/removeUsersFromThread.md", - "thread": "Threads/thread.md", - "timeoutaction": "Timeout/timeoutAction.md", - "timeoutby": "Timeout/timeoutBy.md", - "timeoutreason": "Timeout/timeoutReason.md", - "usergettimeout": "Timeout/userGetTimeout.md", - "userremovetimeout": "Timeout/userRemoveTimeout.md", - "usersettimeout": "Timeout/userSetTimeout.md", - "callfunction": "Useful/callFunction.md", - "commandcode": "Useful/commandCode.md", - "deletetrigger": "Useful/deleteTrigger.md", - "edittrigger": "Useful/editTrigger.md", - "endforeach": "Useful/endForEach.md", - "endfunction": "Useful/endFunction.md", - "endtimeout": "Useful/endTimeout.md", - "error": "Useful/error.md", - "foreach": "Useful/forEach.md", - "function": "Useful/function.md", - "gettoken": "Useful/getToken.md", - "gettrigger": "Useful/getTrigger.md", - "ignoreerrors": "Useful/ignoreErrors.md", - "includelibrary": "Useful/includeLibrary.md", - "jsonrequest": "Useful/jsonRequest.md", - "redirecterrors": "Useful/redirectErrors.md", - "return": "Useful/return.md", - "seq": "Useful/seq.md", - "settimeout": "Useful/setTimeout.md", - "spread": "Useful/spread.md", - "stop": "Useful/stop.md", - "suppresserrors": "Useful/suppressErrors.md", - "triggerexists": "Useful/triggerExists.md", - "wait": "Useful/wait.md", - "deletechannelvar": "Variables/deleteChannelVar.md", - "deletemessagevar": "Variables/deleteMessageVar.md", - "deleteservervar": "Variables/deleteServerVar.md", - "deleteuservar": "Variables/deleteUserVar.md", - "get": "Variables/get.md", - "getchannelvar": "Variables/getChannelVar.md", - "getmessagevar": "Variables/getMessageVar.md", - "getservervar": "Variables/getServerVar.md", - "getuservar": "Variables/getUserVar.md", - "increasechannelvar": "Variables/increaseChannelVar.md", - "increaseservervar": "Variables/increaseServerVar.md", - "increaseuservar": "Variables/increaseUserVar.md", - "initvar": "Variables/initVar.md", - "let": "Variables/let.md", - "resetuservar": "Variables/resetUserVar.md", - "setchannelvar": "Variables/setChannelVar.md", - "setmessagevar": "Variables/setMessageVar.md", - "setservervar": "Variables/setServerVar.md", - "setuservar": "Variables/setUserVar.md", - "userleaderboard": "Variables/userLeaderboard.md", - "uservarrank": "Variables/userVarRank.md", - "viewchannelvars": "Variables/viewChannelVars.md", - "viewservervars": "Variables/viewServerVars.md", - "viewuservars": "Variables/viewUserVars.md" -} \ No newline at end of file + "abbreviate": "Text/Math/abbreviate.mdx", + "abs": "Text/Math/abs.mdx", + "addbutton": "Text/Components/addButton.mdx", + "addcmdreactions": "Message/addCmdReactions.mdx", + "addemoji": "Server/addEmoji.mdx", + "addfield": "Text/Embed/addField.mdx", + "addmenu": "Text/Components/addMenu.mdx", + "addmessagereactions": "Message/addMessageReactions.mdx", + "addobjectproperty": "Text/Object/addObjectProperty.mdx", + "addreactions": "Message/addReactions.mdx", + "addtimestamp": "Text/Embed/addTimestamp.mdx", + "adduserstothread": "Threads/addUsersToThread.mdx", + "advancedtextsplit": "Text/textSplit/advancedTextSplit.mdx", + "allmemberscount": "Server/allMembersCount.mdx", + "archivethread": "Threads/archiveThread.mdx", + "argscheck": "Message/argsCheck.mdx", + "argscount": "Message/argsCount.mdx", + "arrayclear": "Text/Array/arrayClear.mdx", + "arrayconcat": "Text/Array/arrayConcat.mdx", + "arraycount": "Text/Array/arrayCount.mdx", + "arraycreate": "Text/Array/arrayCreate.mdx", + "arrayelementcount": "Text/Array/arrayElementCount.mdx", + "arrayfilter": "Text/Array/arrayFilter.mdx", + "arrayget": "Text/Array/arrayGet.mdx", + "arrayinclude": "Text/Array/arrayInclude.mdx", + "arrayjoin": "Text/Array/arrayJoin.mdx", + "arraylength": "Text/Array/arrayLength.mdx", + "arrayloop": "Text/Array/arrayLoop.mdx", + "arraymap": "Text/Array/arrayMap.mdx", + "arraypop": "Text/Array/arrayPop.mdx", + "arraypush": "Text/Array/arrayPush.mdx", + "arrayremove": "Text/Array/arrayRemove.mdx", + "arrayreverse": "Text/Array/arrayReverse.mdx", + "arraysearch": "Text/Array/arraySearch.mdx", + "arrayset": "Text/Array/arraySet.mdx", + "arrayshift": "Text/Array/arrayShift.mdx", + "arrayshuffle": "Text/Array/arrayShuffle.mdx", + "arrayslice": "Text/Array/arraySlice.mdx", + "arraysort": "Text/Array/arraySort.mdx", + "arrayunique": "Text/Array/arrayUnique.mdx", + "arrayunshift": "Text/Array/arrayUnshift.mdx", + "attachment": "Text/Embed/attachment.mdx", + "author": "Text/Embed/author.mdx", + "authoravatar": "Member/authorAvatar.mdx", + "authorid": "Member/authorID.mdx", + "awaitbutton": "Text/Components/awaitButton.mdx", + "awaitmenu": "Text/Components/awaitMenu.mdx", + "awaitmessage": "Message/awaitMessage.mdx", + "ban": "Member/ban.mdx", + "blacklistchannelids": "Channel/blackListChannelIDs.mdx", + "blacklistids": "Member/blackListIDs.mdx", + "blacklistroleids": "Role/blackListRoleIDs.mdx", + "boostingsince": "Member/boostingSince.mdx", + "botcount": "Bot/botCount.mdx", + "botownerid": "Bot/botOwnerID.mdx", + "botping": "Bot/botPing.mdx", + "bottier": "Bot/botTier.mdx", + "bottyping": "Bot/botTyping.mdx", + "botverified": "Bot/botVerified.mdx", + "botversion": "Bot/botVersion.mdx", + "buffer": "Text/buffer.mdx", + "button": "Text/Components/button.mdx", + "buttonemoji": "Text/Components/buttonEmoji.mdx", + "buttonid": "Text/Components/buttonID.mdx", + "buttonisdisabled": "Text/Components/buttonIsDisabled.mdx", + "buttonlabel": "Text/Components/buttonLabel.mdx", + "buttonstyle": "Text/Components/buttonStyle.mdx", + "buttonurl": "Text/Components/buttonURL.mdx", + "cachechannelmessages": "Channel/cacheChannelMessages.mdx", + "cachemember": "Bot/cacheMember.mdx", + "callfunction": "Useful/callFunction.mdx", + "categorychannels": "Channel/categoryChannels.mdx", + "ceil": "Text/Math/ceil.mdx", + "changenickname": "Member/changeNickname.mdx", + "channel": "Channel/channel.mdx", + "channelcategoryid": "Channel/channelCategoryID.mdx", + "channelcooldown": "Cooldown/channelCooldown.mdx", + "channelcount": "Channel/channelCount.mdx", + "channelexists": "Channel/channelExists.mdx", + "channelid": "Channel/channelID.mdx", + "channelname": "Channel/channelName.mdx", + "channelnsfw": "Text/channelNSFW.mdx", + "channelpermissionsfor": "Channel/channelPermissionsFor.mdx", + "channelsendmessage": "Message/channelSendMessage.mdx", + "channeltopic": "Channel/channelTopic.mdx", + "channeltype": "Channel/channelType.mdx", + "channelused": "Channel/channelUsed.mdx", + "charcount": "Text/charCount.mdx", + "checkcondition": "Text/Condition/checkCondition.mdx", + "checkcontains": "Text/checkContains.mdx", + "clear": "Channel/clear.mdx", + "clearcooldown": "Cooldown/clearCoolDown.mdx", + "clearreaction": "Message/clearReaction.mdx", + "clearreactions": "Message/clearReactions.mdx", + "clientid": "Bot/clientID.mdx", + "clonechannel": "Channel/cloneChannel.mdx", + "closepost": "Threads/closePost.mdx", + "closeticket": "Channel/closeTicket.mdx", + "color": "Text/Embed/color.mdx", + "colorrole": "Role/colorRole.mdx", + "commandcode": "Useful/commandCode.mdx", + "commandname": "Interaction/commandName.mdx", + "concattextsplit": "Text/textSplit/concatTextSplit.mdx", + "conditional": "Text/Condition/conditional.mdx", + "cooldown": "Cooldown/cooldown.mdx", + "cpu": "Bot/cpu.mdx", + "createautomodkeyword": "Server/createAutomodKeyword.mdx", + "createchannel": "Channel/createChannel.mdx", + "createforum": "Channel/createForum.mdx", + "createobject": "Text/Object/createObject.mdx", + "createpost": "Threads/createPost.mdx", + "createrole": "Role/createRole.mdx", + "createsticker": "Stickers/createSticker.mdx", + "createthread": "Threads/createThread.mdx", + "createwebhook": "Message/createWebhook.mdx", + "creationdate": "Date/creationDate.mdx", + "customemoji": "Text/customEmoji.mdx", + "datestamp": "Date/dateStamp.mdx", + "datetotime": "Date/dateToTime.mdx", + "day": "Date/day.mdx", + "deleteautomod": "Server/deleteAutomod.mdx", + "deletechannels": "Channel/deleteChannels.mdx", + "deletechannelvar": "Variables/deleteChannelVar.mdx", + "deletecommand": "Message/deleteCommand.mdx", + "deleteemojis": "Server/deleteEmojis.mdx", + "deletein": "Message/deleteIn.mdx", + "deletemessage": "Message/deleteMessage.mdx", + "deletemessagevar": "Variables/deleteMessageVar.mdx", + "deletepost": "Threads/deletePost.mdx", + "deleteposts": "Threads/deletePosts.mdx", + "deleteroles": "Role/deleteRoles.mdx", + "deleteservervar": "Variables/deleteServerVar.mdx", + "deletesticker": "Stickers/deleteSticker.mdx", + "deletethreads": "Threads/deleteThreads.mdx", + "deletetrigger": "Useful/deleteTrigger.mdx", + "deleteuservar": "Variables/deleteUserVar.mdx", + "deletewebhook": "Message/deleteWebhook.mdx", + "deletewebhookmessage": "Message/deleteWebhookMessage.mdx", + "description": "Text/Embed/description.mdx", + "disablebutton": "Text/Components/disableButton.mdx", + "disablebuttons": "Text/Components/disableButtons.mdx", + "disablechannelmentions": "Message/disableChannelMentions.mdx", + "disableeveryonementions": "Message/disableEveryoneMentions.mdx", + "disablementions": "Text/disableMentions.mdx", + "disablemenu": "Text/Components/disableMenu.mdx", + "disablerolementions": "Message/disableRoleMentions.mdx", + "discriminator": "Member/discriminator.mdx", + "displayname": "Member/displayName.mdx", + "divide": "Text/Math/divide.mdx", + "dm": "Message/DM.mdx", + "editautomodkeyword": "Server/editAutomodKeyword.mdx", + "editbutton": "Text/Components/editButton.mdx", + "editchannel": "Channel/editChannel.mdx", + "editembed": "Message/editEmbed.mdx", + "editforum": "Channel/editForum.mdx", + "editin": "Message/editIn.mdx", + "editmenu": "Text/Components/editMenu.mdx", + "editmessage": "Message/editMessage.mdx", + "editpost": "Threads/editPost.mdx", + "editsticker": "Stickers/editSticker.mdx", + "edittextsplitelement": "Text/textSplit/editTextSplitElement.mdx", + "editthread": "Threads/editThread.mdx", + "edittrigger": "Useful/editTrigger.mdx", + "editwebhookmessage": "Message/editWebhookMessage.mdx", + "else": "Text/Condition/else.mdx", + "elseif": "Text/Condition/elseif.mdx", + "emoji": "Message/emoji.mdx", + "emojicount": "Server/emojiCount.mdx", + "emojiexists": "Server/emojiExists.mdx", + "emojiid": "Message/emojiID.mdx", + "emojiname": "Message/emojiName.mdx", + "emojisfrommessage": "Message/emojisFromMessage.mdx", + "emojitostring": "Message/emojiToString.mdx", + "enablebuttons": "Text/Components/enableButtons.mdx", + "enableeveryonementions": "Message/enableEveryoneMentions.mdx", + "enablemenu": "Text/Components/enableMenu.mdx", + "endelseif": "Text/Condition/endelseif.mdx", + "endforeach": "Useful/endForEach.mdx", + "endfunction": "Useful/endFunction.mdx", + "endif": "Text/Condition/endIf.mdx", + "endtimeout": "Useful/endTimeout.mdx", + "error": "Useful/error.mdx", + "eventchannelid": "Channel/eventChannelID.mdx", + "eventchannelparent": "Channel/eventChannelParent.mdx", + "eventcreate": "Events/eventCreate.mdx", + "eventdelete": "Events/eventDelete.mdx", + "eventedit": "Events/eventEdit.mdx", + "eventend": "Events/eventEnd.mdx", + "eventexists": "Events/eventExists.mdx", + "eventnewnickname": "Member/eventNewNickname.mdx", + "eventoldnickname": "Member/eventOldNickname.mdx", + "eventselected": "Text/Components/eventSelected.mdx", + "eventstart": "Events/eventStart.mdx", + "eventtargetid": "Text/Components/eventTargetID.mdx", + "example": "Text/Embed/example.mdx", + "executiontime": "Bot/executionTime.mdx", + "filtermessage": "Text/filterMessage.mdx", + "filtermessagewords": "Text/filterMessageWords.mdx", + "findchannel": "Channel/findChannel.mdx", + "findchars": "Text/findChars.mdx", + "findmember": "Member/findMember.mdx", + "findnumbers": "Text/findNumbers.mdx", + "findrole": "Role/findRole.mdx", + "findserverchannel": "Channel/findServerChannel.mdx", + "findspecialchars": "Text/findSpecialChars.mdx", + "findtextsplitindex": "Text/textSplit/findTextSplitIndex.mdx", + "floor": "Text/Math/floor.mdx", + "footer": "Text/Embed/footer.mdx", + "foreach": "Useful/forEach.mdx", + "formatdate": "Date/formatDate.mdx", + "forwardmessage": "Message/forwardMessage.mdx", + "function": "Useful/function.mdx", + "get": "Variables/get.mdx", + "getbotactivity": "Bot/getBotActivity.mdx", + "getbotinvite": "Bot/getBotInvite.mdx", + "getchannelmessages": "Channel/getChannelMessages.mdx", + "getchannelslowmode": "Channel/getChannelSlowmode.mdx", + "getchannelvar": "Variables/getChannelVar.mdx", + "getcommandoption": "Message/getCommandOption.mdx", + "getcooldowntime": "Cooldown/getCooldownTime.mdx", + "getembed": "Message/getEmbed.mdx", + "geteventinfo": "Events/getEventInfo.mdx", + "geteventusers": "Events/getEventUsers.mdx", + "getinviteinfo": "Server/getInviteInfo.mdx", + "getmessage": "Message/getMessage.mdx", + "getmessagereactions": "Message/getMessageReactions.mdx", + "getmessagevar": "Variables/getMessageVar.mdx", + "getobject": "Text/Object/getObject.mdx", + "getobjectkeys": "Text/Object/getObjectKeys.mdx", + "getobjectproperty": "Text/Object/getObjectProperty.mdx", + "getoption": "Interaction/getOption.mdx", + "getreactioncount": "Message/getReactionCount.mdx", + "getreactions": "Message/getReactions.mdx", + "getrolecolor": "Role/getRoleColor.mdx", + "getserverinvite": "Server/getServerInvite.mdx", + "getservervar": "Variables/getServerVar.mdx", + "gettextsplitlength": "Text/textSplit/getTextSplitLength.mdx", + "getthreads": "Threads/getThreads.mdx", + "gettoken": "Useful/getToken.mdx", + "gettrigger": "Useful/getTrigger.mdx", + "getuserbadges": "Member/getUserBadges.mdx", + "getuservar": "Variables/getUserVar.mdx", + "giveroles": "Role/giveRoles.mdx", + "globalname": "Member/globalName.mdx", + "guild": "Server/guild.mdx", + "guildevents": "Events/guildEvents.mdx", + "guildroles": "Role/guildRoles.mdx", + "hasanyperm": "Member/hasAnyPerm.mdx", + "hasanyrole": "Member/hasAnyRole.mdx", + "hasembeds": "Message/hasEmbeds.mdx", + "hasperms": "Member/hasPerms.mdx", + "hasrole": "Role/hasRole.mdx", + "hasroles": "Member/hasRoles.mdx", + "highestrole": "Role/highestRole.mdx", + "highestserverrole": "Role/highestServerRole.mdx", + "hour": "Date/hour.mdx", + "httprequest": "Request/httpRequest.mdx", + "httprequestheader": "Request/httpRequestHeader.mdx", + "httprequeststatus": "Request/httpRequestStatus.mdx", + "humanizems": "Date/humanizeMS.mdx", + "hyperlink": "Message/hyperlink.mdx", + "if": "Text/Condition/if.mdx", + "ignoreerrors": "Useful/ignoreErrors.mdx", + "image": "Text/Embed/image.mdx", + "imageborderrad": "Image/imageBorderRad.mdx", + "imagecreate": "Image/imageCreate.mdx", + "imagecrop": "Image/imageCrop.mdx", + "imagedraw": "Image/imageDraw.mdx", + "imagedrawback": "Image/imageDrawBack.mdx", + "imagefill": "Image/imageFill.mdx", + "imageheight": "Image/imageHeight.mdx", + "imagelineheight": "Image/imageLineHeight.mdx", + "imageloademoji": "Image/imageLoadEmoji.mdx", + "imageloadfromurl": "Image/imageLoadFromURL.mdx", + "imageoutput": "Image/imageOutput.mdx", + "imagepositionbase": "Image/imagePositionBase.mdx", + "imagesetopacity": "Image/imageSetOpacity.mdx", + "imagestroke": "Image/imageStroke.mdx", + "imagestrokewidth": "Image/imageStrokeWidth.mdx", + "imagetextalign": "Image/imageTextAlign.mdx", + "imagetextbaseline": "Image/imageTextBaseline.mdx", + "imagetextcolor": "Image/imageTextColor.mdx", + "imagetextfill": "Image/imageTextFill.mdx", + "imagetextfillcolor": "Image/imageTextFillColor.mdx", + "imagetextsize": "Image/imageTextSize.mdx", + "imagetextstroke": "Image/imageTextStroke.mdx", + "imagetextstrokecolor": "Image/imageTextStrokeColor.mdx", + "imagetextweight": "Image/imageTextWeight.mdx", + "imageusefont": "Image/imageUseFont.mdx", + "imagewidth": "Image/imageWidth.mdx", + "includelibrary": "Useful/includeLibrary.mdx", + "increasechannelvar": "Variables/increaseChannelVar.mdx", + "increaseservervar": "Variables/increaseServerVar.mdx", + "increaseuservar": "Variables/increaseUserVar.mdx", + "indexof": "Text/indexOf.mdx", + "initvar": "Variables/initVar.mdx", + "interactiondelete": "Interaction/interactionDelete.mdx", + "interactionedit": "Interaction/interactionEdit.mdx", + "interactionid": "Interaction/interactionId.mdx", + "interactionreply": "Interaction/interactionReply.mdx", + "isbanned": "Member/isBanned.mdx", + "isboosting": "Text/isandhas/isBoosting.mdx", + "isbot": "Text/isandhas/isBot.mdx", + "ischannelmention": "Text/isChannelMention.mdx", + "isconnected": "Text/isandhas/isConnected.mdx", + "isdeafened": "Text/isandhas/isDeafened.mdx", + "isemoji": "Text/isandhas/isEmoji.mdx", + "ishoisted": "Text/isandhas/isHoisted.mdx", + "ismanaged": "Text/isandhas/isManaged.mdx", + "ismentionable": "Text/isandhas/isMentionable.mdx", + "ismentioned": "Text/isandhas/isMentioned.mdx", + "ismuted": "Text/isandhas/isMuted.mdx", + "isnumber": "Text/isandhas/isNumber.mdx", + "isstreaming": "Text/isandhas/isStreaming.mdx", + "isticket": "Text/isandhas/isTicket.mdx", + "isuserdmenabled": "Member/isUserDMEnabled.mdx", + "isusermention": "Text/isUserMention.mdx", + "isvalidhex": "Text/isandhas/isValidHex.mdx", + "isvalidinvite": "Text/isandhas/isValidInvite.mdx", + "isvalidlink": "Text/isandhas/isValidLink.mdx", + "isvalidobject": "Text/isandhas/isValidObject.mdx", + "joinsplittext": "Text/textSplit/joinSplitText.mdx", + "jointhreads": "Threads/joinThreads.mdx", + "jsonrequest": "Useful/jsonRequest.mdx", + "kick": "Member/kick.mdx", + "latestmessage": "Channel/latestMessage.mdx", + "leavethreads": "Threads/leaveThreads.mdx", + "let": "Variables/let.mdx", + "lockpost": "Threads/lockPost.mdx", + "lockthread": "Threads/lockThread.mdx", + "lowestrole": "Role/lowestRole.mdx", + "lowestserverrole": "Role/lowestServerRole.mdx", + "math": "Text/Math/math.mdx", + "mathmax": "Text/Math/mathMax.mdx", + "mathmin": "Text/Math/mathMin.mdx", + "maxram": "Bot/maxRam.mdx", + "memberjoinedcode": "Date/memberJoinedCode.mdx", + "memberjoineddate": "Date/memberJoinedDate.mdx", + "memberscount": "Server/membersCount.mdx", + "membersearch": "Member/memberSearch.mdx", + "memberswithstatus": "Member/membersWithStatus.mdx", + "mention": "Member/mention.mdx", + "mentionchannel": "Channel/mentionChannel.mdx", + "mentioned": "Text/mentioned.mdx", + "mentionedchannels": "Text/mentionedChannels.mdx", + "mentionedroles": "Text/mentionedRoles.mdx", + "mentionrole": "Role/mentionRole.mdx", + "mentiontype": "Text/mentionType.mdx", + "menuid": "Text/Components/menuId.mdx", + "message": "Message/message.mdx", + "messageattachment": "Message/messageAttachment.mdx", + "messageexists": "Message/messageExists.mdx", + "messageflags": "Message/messageFlags.mdx", + "messageid": "Message/messageID.mdx", + "messagepublish": "Message/messagePublish.mdx", + "messageslice": "Message/messageSlice.mdx", + "messagestickers": "Stickers/messageStickers.mdx", + "messagetype": "Message/messageType.mdx", + "messagewebhookid": "Message/messageWebhookID.mdx", + "minute": "Date/minute.mdx", + "modal": "Interaction/modal.mdx", + "modalanswer": "Interaction/modalAnswer.mdx", + "modalid": "Interaction/modalID.mdx", + "modifychannelperms": "Channel/modifyChannelPerms.mdx", + "modifyrole": "Role/modifyRole.mdx", + "modifyroleperms": "Role/modifyRolePerms.mdx", + "modifyuserroles": "Role/modifyUserRoles.mdx", + "modifywebhook": "Message/modifyWebhook.mdx", + "modulo": "Text/Math/modulo.mdx", + "month": "Date/month.mdx", + "moveuser": "Member/moveUser.mdx", + "msg": "Message/msg.mdx", + "multi": "Text/Math/multi.mdx", + "muteuser": "Member/muteUser.mdx", + "newticket": "Channel/newTicket.mdx", + "nickname": "Member/nickname.mdx", + "noescapingmessage": "Message/noEscapingMessage.mdx", + "nomentionmessage": "Text/noMentionMessage.mdx", + "numberseparator": "Text/numberSeparator.mdx", + "numtoword": "Text/numToWord.mdx", + "objectcreate": "Text/Object/ObjectCreate.mdx", + "objectget": "Text/Object/ObjectGet.mdx", + "objectincrease": "Text/Object/ObjectIncrease.mdx", + "objectkeyexists": "Text/Object/ObjectKeyExists.mdx", + "objectkeys": "Text/Object/ObjectKeys.mdx", + "objectloop": "Text/Object/ObjectLoop.mdx", + "objectmerge": "Text/Object/ObjectMerge.mdx", + "objectremove": "Text/Object/ObjectRemove.mdx", + "objectrenamekey": "Text/Object/ObjectRenameKey.mdx", + "objectset": "Text/Object/ObjectSet.mdx", + "objectvalues": "Text/Object/ObjectValues.mdx", + "onlybotperms": "Text/only/onlyBotPerms.mdx", + "onlyforcategories": "Text/only/onlyForCategories.mdx", + "onlyforchannels": "Text/only/onlyForChannels.mdx", + "onlyforids": "Text/only/onlyForIDs.mdx", + "onlyforroles": "Text/only/onlyForRoles.mdx", + "onlyif": "Text/only/onlyIf.mdx", + "onlyifmessagecontains": "Text/only/onlyIfMessageContains.mdx", + "onlynsfw": "Text/only/onlyNSFW.mdx", + "onlyperms": "Text/only/onlyPerms.mdx", + "ordinal": "Text/Math/ordinal.mdx", + "ownerid": "Server/ownerID.mdx", + "padleft": "Text/padLeft.mdx", + "padright": "Text/padRight.mdx", + "parsedate": "Date/parseDate.mdx", + "parsetime": "Date/parseTime.mdx", + "ping": "Bot/ping.mdx", + "pinmessage": "Message/pinMessage.mdx", + "pinpost": "Threads/pinPost.mdx", + "poll": "Message/poll.mdx", + "ram": "Bot/ram.mdx", + "random": "Random/random.mdx", + "randomchannelid": "Random/randomChannelID.mdx", + "randommention": "Random/randomMention.mdx", + "randomroleid": "Random/randomRoleID.mdx", + "randomstring": "Random/randomString.mdx", + "randomtext": "Random/randomText.mdx", + "randomtextbiased": "Random/randomTextBiased.mdx", + "randomuserid": "Random/randomUserID.mdx", + "redirecterrors": "Useful/redirectErrors.mdx", + "ref.channel_types": "CodeReferences/ref.channel_types.mdx", + "ref.embed.colors": "CodeReferences/ref.embed.colors.mdx", + "ref.expression": "CodeReferences/ref.expression.mdx", + "ref.imgbuild.position": "CodeReferences/ref.imgbuild.position.mdx", + "ref.imgbuild.size": "CodeReferences/ref.imgbuild.size.mdx", + "ref.message_curl_format": "CodeReferences/ref.message_curl_format.mdx", + "ref.message_types": "CodeReferences/ref.message_types.mdx", + "ref.permissions_list": "CodeReferences/ref.permissions_list.mdx", + "ref.poll_data": "CodeReferences/ref.poll_data.mdx", + "ref.time_format": "CodeReferences/ref.time_format.mdx", + "ref.v2_components": "CodeReferences/ref.v2_components.mdx", + "referencechannelid": "Message/referenceChannelID.mdx", + "referencemessageid": "Message/referenceMessageID.mdx", + "regexcheck": "Text/Regex/regexCheck.mdx", + "regexmatch": "Text/Regex/regexMatch.mdx", + "regexreplace": "Text/Regex/regexReplace.mdx", + "removebutton": "Text/Components/removeButton.mdx", + "removebuttons": "Text/Components/removeButtons.mdx", + "removecontains": "Channel/removeContains.mdx", + "removeembed": "Text/Components/removeEmbed.mdx", + "removemenu": "Text/Components/removeMenu.mdx", + "removesplittextelement": "Text/textSplit/removeSplitTextElement.mdx", + "removetextsplitelement": "Text/textSplit/removeTextSplitElement.mdx", + "removeusersfromthread": "Threads/removeUsersFromThread.mdx", + "repeatmessage": "Text/repeatMessage.mdx", + "replacetext": "Text/replaceText.mdx", + "replacetextwithregex": "Text/Regex/replaceTextWithRegex.mdx", + "reply": "Message/reply.mdx", + "resetrandom": "Random/resetRandom.mdx", + "resetuservar": "Variables/resetUserVar.mdx", + "resolveemojiid": "Server/resolveEmojiID.mdx", + "return": "Useful/return.mdx", + "role": "Role/role.mdx", + "rolecount": "Role/roleCount.mdx", + "roleexists": "Role/roleExists.mdx", + "roleicon": "Role/roleIcon.mdx", + "roleid": "Role/roleID.mdx", + "rolememberscount": "Role/roleMembersCount.mdx", + "rolename": "Role/roleName.mdx", + "roleperms": "Role/rolePerms.mdx", + "roleposition": "Role/rolePosition.mdx", + "round": "Text/Math/round.mdx", + "roundtenth": "Text/Math/roundTenth.mdx", + "second": "Date/second.mdx", + "securitypause": "Server/securityPause.mdx", + "selectmenu": "Text/Components/selectMenu.mdx", + "sendcrosspostingmessage": "Message/sendCrosspostingMessage.mdx", + "senddm": "Message/sendDM.mdx", + "sendmessage": "Message/sendMessage.mdx", + "sendwebhook": "Message/sendWebhook.mdx", + "sentmessageid": "Message/sentMessageID.mdx", + "seq": "Useful/seq.mdx", + "serverbanner": "Server/serverBanner.mdx", + "serverboostcount": "Server/serverBoostCount.mdx", + "serverboostlevel": "Server/serverBoostLevel.mdx", + "serverchannels": "Channel/serverChannels.mdx", + "servercontentfilter": "Server/serverContentFilter.mdx", + "servercooldown": "Cooldown/serverCooldown.mdx", + "servercount": "Bot/serverCount.mdx", + "serverdescription": "Server/serverDescription.mdx", + "serveremojis": "Server/serverEmojis.mdx", + "serverfeatures": "Server/serverFeatures.mdx", + "servericon": "Server/serverIcon.mdx", + "servername": "Server/serverName.mdx", + "serverregion": "Server/serverRegion.mdx", + "serversplash": "Server/serverSplash.mdx", + "serverstickers": "Stickers/serverStickers.mdx", + "serververificationlevel": "Server/serverVerificationLevel.mdx", + "setbotactivity": "Bot/setBotActivity.mdx", + "setchanneltopic": "Channel/setChannelTopic.mdx", + "setchannelvar": "Variables/setChannelVar.mdx", + "setguildicon": "Server/setGuildIcon.mdx", + "setguildname": "Server/setGuildName.mdx", + "setmessagevar": "Variables/setMessageVar.mdx", + "setroles": "Role/setRoles.mdx", + "setservervar": "Variables/setServerVar.mdx", + "settimeout": "Useful/setTimeout.mdx", + "setuservar": "Variables/setUserVar.mdx", + "slowmode": "Channel/slowmode.mdx", + "specialcharacters": "CodeReferences/specialCharacters.mdx", + "splicetextjoin": "Text/textSplit/spliceTextJoin.mdx", + "splittext": "Text/textSplit/splitText.mdx", + "spread": "Useful/spread.mdx", + "status": "Member/status.mdx", + "sticker": "Stickers/sticker.mdx", + "stop": "Useful/stop.mdx", + "stringendswith": "Text/stringEndsWith.mdx", + "stringstartswith": "Text/stringStartsWith.mdx", + "sub": "Text/Math/sub.mdx", + "sum": "Text/Math/sum.mdx", + "suppresserrors": "Useful/suppressErrors.mdx", + "systemchannelid": "Server/systemChannelID.mdx", + "takeroles": "Role/takeRoles.mdx", + "textlength": "Text/textLength.mdx", + "textshuffle": "Text/textShuffle.mdx", + "textslice": "Text/textSlice.mdx", + "textsplit": "Text/textSplit/textSplit.mdx", + "texttrim": "Text/textTrim.mdx", + "thread": "Threads/thread.mdx", + "thumbnail": "Text/Embed/thumbnail.mdx", + "timeoutaction": "Timeout/timeoutAction.mdx", + "timeoutby": "Timeout/timeoutBy.mdx", + "timeoutreason": "Timeout/timeoutReason.mdx", + "timestamp": "Date/timeStamp.mdx", + "timetodate": "Date/timeToDate.mdx", + "timezone": "Date/timezone.mdx", + "title": "Text/Embed/title.mdx", + "toggleroles": "Role/toggleRoles.mdx", + "tolocaleuppercase": "Text/toLocaleUpperCase.mdx", + "tolowercase": "Text/toLowercase.mdx", + "touppercase": "Text/toUppercase.mdx", + "transcriptchannel": "Channel/transcriptChannel.mdx", + "triggerexists": "Useful/triggerExists.mdx", + "truncate": "Text/Math/truncate.mdx", + "unban": "Member/unban.mdx", + "unpinmessage": "Message/unpinMessage.mdx", + "uptime": "Bot/uptime.mdx", + "upvotereferraluserid": "Member/upvoteReferralUserID.mdx", + "upvotetime": "Date/upvoteTime.mdx", + "uri": "Text/uri.mdx", + "usechannel": "Channel/useChannel.mdx", + "user": "Member/user.mdx", + "useravatar": "Member/userAvatar.mdx", + "userbanner": "Member/userBanner.mdx", + "userconnectedvc": "Member/userConnectedVC.mdx", + "userexists": "Member/userExists.mdx", + "usergettimeout": "Timeout/userGetTimeout.mdx", + "userid": "Member/userID.mdx", + "userleaderboard": "Variables/userLeaderboard.mdx", + "username": "Member/username.mdx", + "userperms": "Member/userPerms.mdx", + "userreacted": "Member/userReacted.mdx", + "userremovetimeout": "Timeout/userRemoveTimeout.mdx", + "userrolecolor": "Member/userRoleColor.mdx", + "userroles": "Member/userRoles.mdx", + "usersbanned": "Member/usersBanned.mdx", + "usersettimeout": "Timeout/userSetTimeout.mdx", + "usersinchannel": "Member/usersInChannel.mdx", + "userstyping": "Member/usersTyping.mdx", + "userswithrole": "Member/usersWithRole.mdx", + "usertag": "Member/userTag.mdx", + "uservarrank": "Variables/userVarRank.mdx", + "vcafter": "Channel/vcAfter.mdx", + "vcbefore": "Channel/vcBefore.mdx", + "viewchannelvars": "Variables/viewChannelVars.mdx", + "viewservervars": "Variables/viewServerVars.mdx", + "viewuservars": "Variables/viewUserVars.mdx", + "voicechannelid": "Channel/voiceChannelID.mdx", + "void": "Text/void.mdx", + "wait": "Useful/wait.mdx", + "webhookexists": "Message/webhookExists.mdx", + "year": "Date/year.mdx" +} diff --git a/guide/notUsed/perms&privacy.md b/guide/notUsed/perms&privacy.md deleted file mode 100644 index 444d4e76..00000000 --- a/guide/notUsed/perms&privacy.md +++ /dev/null @@ -1,7 +0,0 @@ -# Terms Of Service, Privacy Policy - -## Terms Of Service (ToS) -[Read here](../Legal/tos.md) - -# Privacy Policy -[Read here](../Legal/policy.md) \ No newline at end of file diff --git a/lib/cn.ts b/lib/cn.ts new file mode 100644 index 00000000..241ffb37 --- /dev/null +++ b/lib/cn.ts @@ -0,0 +1 @@ +export { cn } from 'cnfast'; diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx new file mode 100644 index 00000000..2f7f4a99 --- /dev/null +++ b/lib/layout.shared.tsx @@ -0,0 +1,29 @@ +import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; +import { appName, gitConfig } from './shared'; + +export function baseOptions(): BaseLayoutProps { + return { + nav: { + title: ( + <> + + {appName} + + ), + }, + // Carried over from the old VuePress navbar. + links: [ + { + text: 'Dashboard', + url: 'https://ccommandbot.com/dashboard', + external: true, + }, + { + text: 'Discord', + url: 'https://discord.gg/ZFQNZA4Ekz', + external: true, + }, + ], + githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, + }; +} diff --git a/lib/remark/cooldowns.ts b/lib/remark/cooldowns.ts new file mode 100644 index 00000000..f635cf30 --- /dev/null +++ b/lib/remark/cooldowns.ts @@ -0,0 +1,114 @@ +import path from 'node:path'; +import type { Root, RootContent, PhrasingContent } from 'mdast'; +import cooldowns from '../../data/cooldowns.json'; + +type Cooldown = { + time: number; + per: string; + scope: string; + hardCooldown?: boolean; +}; + +const table = cooldowns as Record; + +function formatDuration(ms: number): string { + if (ms < 1) return `${(ms * 1000).toFixed(ms >= 0.1 ? 0 : 1)} μs`; + if (ms < 1000) return `${ms} ms`; + + const units: [string, number][] = [ + ['day', 86400000], + ['hour', 3600000], + ['minute', 60000], + ['second', 1000], + ]; + + const parts: string[] = []; + let rest = ms; + for (const [name, value] of units) { + const amount = Math.floor(rest / value); + if (!amount) continue; + parts.push(`${amount} ${name}${amount !== 1 ? 's' : ''}`); + rest %= value; + if (parts.length === 2) break; + } + return parts.join(' '); +} + +const text = (value: string): PhrasingContent => ({ type: 'text', value }); +const bullet = (label: string, ...rest: PhrasingContent[]): RootContent => + ({ + type: 'listItem', + spread: false, + children: [ + { + type: 'paragraph', + children: [{ type: 'strong', children: [text(label)] }, text(' '), ...rest], + }, + ], + }) as RootContent; + +/** + * Port of the VuePress `cooldownAddition` replacer: appends a generated + * "Function Cooldown" section to any function page listed in + * `data/cooldowns.json`. + */ +export function remarkCooldowns() { + return (tree: Root, file: { path?: string }) => { + if (!file.path) return; + + const fn = '$' + path.basename(file.path).replace(/\.mdx?$/, ''); + const cooldown = table[fn.toLowerCase()]; + if (!cooldown) return; + + tree.children.push( + { type: 'heading', depth: 2, children: [text('Function Cooldown')] }, + { + type: 'paragraph', + children: [ + text('This function has built-in cooldown. Why? Read more about cooldowns '), + { + type: 'link', + url: '/Other/ratelimits', + children: [text('here')], + }, + text('.'), + ], + }, + { + type: 'list', + ordered: false, + spread: false, + children: [ + bullet('Cooldown:', text(formatDuration(cooldown.time))), + bullet('Tracked By:', text(cooldown.per)), + bullet('Type:', { type: 'inlineCode', value: cooldown.scope }), + ], + } as RootContent, + { + type: 'paragraph', + children: [ + text('Functions with the same type share cooldowns based on the same '), + { type: 'inlineCode', value: 'Tracked By' }, + text(' value.'), + ], + }, + ); + + if (cooldown.hardCooldown) { + tree.children.push({ + type: 'mdxJsxFlowElement', + name: 'Callout', + attributes: [ + { type: 'mdxJsxAttribute', name: 'type', value: 'warn' }, + { type: 'mdxJsxAttribute', name: 'title', value: 'Warning' }, + ], + children: [ + { + type: 'paragraph', + children: [text('This cooldown cannot be bypassed by Tier 3+ bots.')], + }, + ], + } as unknown as RootContent); + } + }; +} diff --git a/lib/remark/function-links.ts b/lib/remark/function-links.ts new file mode 100644 index 00000000..27004fcd --- /dev/null +++ b/lib/remark/function-links.ts @@ -0,0 +1,91 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import type { Root, InlineCode, Parent } from 'mdast'; + +const CONTENT = path.join(process.cwd(), 'content/docs'); + +/** lowercased function name -> site route, e.g. `sendmessage` -> `/Message/sendMessage` */ +let routes: Map | null = null; + +function buildRoutes() { + const map = new Map(); + + const walk = (dir: string) => { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + walk(full); + continue; + } + if (!entry.name.endsWith('.mdx')) continue; + + const rel = path.relative(CONTENT, full).split(path.sep).join('/'); + const isFunction = rel.startsWith('(functions)/'); + const url = '/' + rel.replace(/\.mdx$/, '').replace(/^\(functions\)\//, ''); + const key = path.basename(entry.name, '.mdx').toLowerCase(); + + /* + * Six names exist in two places (e.g. $modal is both a function and a + * trigger page). The old scan let the last match win, which pointed + * `$modal` at /Trigger/modal instead of the function — always prefer the + * function page, and otherwise keep the first match. + */ + const existing = map.get(key); + if (!existing || (isFunction && !existing.isFunction)) { + map.set(key, { url, isFunction }); + } + } + }; + + walk(CONTENT); + return new Map([...map].map(([key, { url }]) => [key, url])); +} + +/** + * Port of the VuePress `functionLinkReference` replacer: turns an inline + * `` `$someFunction` `` into a link to that function's page. + * + * Unlike the original this skips self-references, which previously produced a + * link from a page to itself. + */ +export function remarkFunctionLinks() { + return (tree: Root, file: { path?: string }) => { + routes ??= buildRoutes(); + + const self = file.path ? path.basename(file.path, '.mdx').toLowerCase() : null; + + const visit = (node: Parent) => { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + + if (child.type === 'inlineCode') { + const match = (child as InlineCode).value.match(/^\$([A-Za-z]+)$/); + if (!match) continue; + + const name = match[1].toLowerCase(); + if (name === self) continue; + + const url = routes!.get(name); + if (!url) continue; + + node.children[i] = { + type: 'link', + url, + children: [child], + } as never; + continue; + } + + /* + * Skip links and code blocks (no nested anchors, no rewriting source), + * and skip headings: Fumadocs wraps every heading in its own anchor, so + * a link inside one is invalid HTML and breaks hydration. + */ + if (child.type === 'link' || child.type === 'code' || child.type === 'heading') continue; + if ('children' in child) visit(child as Parent); + } + }; + + visit(tree); + }; +} diff --git a/lib/remark/images.ts b/lib/remark/images.ts new file mode 100644 index 00000000..0c8b595b --- /dev/null +++ b/lib/remark/images.ts @@ -0,0 +1,50 @@ +import crypto from 'node:crypto'; +import fs from 'node:fs'; +import path from 'node:path'; +import type { Root, Image, Parent } from 'mdast'; + +const CACHE_DIR = path.join(process.cwd(), 'public/images'); + +/** + * Must stay byte-identical to the old VuePress `imageReplacement` helper: the + * cache in public/images is filled by a separate process using that naming, so + * the extension is taken from the raw URL (query string included) rather than + * from the parsed pathname. + */ +function hashedName(url: string) { + const ext = path.extname(url); + return crypto.createHash('sha256').update(url).digest('hex') + ext; +} + +/** + * Port of the VuePress `imageReplacement` replacer: swaps a remote image URL + * for a locally cached copy at `public/images/.`, when one has + * been downloaded. Falls back to the remote URL when it hasn't. + */ +export function remarkCachedImages() { + return (tree: Root) => { + const visit = (node: Parent) => { + for (const child of node.children) { + if (child.type === 'image') { + const image = child as Image; + if (!/^https?:\/\//.test(image.url)) continue; + + let name: string; + try { + name = hashedName(image.url); + } catch { + continue; + } + + if (fs.existsSync(path.join(CACHE_DIR, name))) { + image.url = `/images/${name}`; + } + continue; + } + if ('children' in child) visit(child as Parent); + } + }; + + visit(tree); + }; +} diff --git a/lib/shared.ts b/lib/shared.ts new file mode 100644 index 00000000..b24ee42d --- /dev/null +++ b/lib/shared.ts @@ -0,0 +1,15 @@ +export const appName = 'Custom Command'; +export const appDescription = "Custom Command Bot's Documentation"; +export const siteUrl = 'https://doc.ccommandbot.com'; +export const socialImage = `${siteUrl}/bot-profile.png`; + +// Docs are mounted at the site root so URLs match the previous VuePress site +// (e.g. /Member/setNickname), keeping every existing inbound link alive. +export const docsRoute = '/'; +export const docsContentRoute = '/llms.mdx'; + +export const gitConfig = { + user: 'raspdevpy', + repo: 'ccdoc', + branch: 'main', +}; diff --git a/lib/source.ts b/lib/source.ts new file mode 100644 index 00000000..3097a378 --- /dev/null +++ b/lib/source.ts @@ -0,0 +1,41 @@ +import { loader } from 'fumadocs-core/source'; +import { docsContentRoute, docsRoute } from './shared'; +import { defineDocs } from 'fumadocs-mdx/macro'; +import { metaSchema, pageSchema } from 'fumadocs-core/source/schema'; + +const docs = defineDocs({ + dir: 'content/docs', + docs: { + schema: pageSchema, + postprocess: { + includeProcessedMarkdown: true, + }, + }, + meta: { + schema: metaSchema, + }, +}); + +// See https://fumadocs.dev/docs/headless/source-api for more info +export const source = loader({ + baseUrl: docsRoute, + source: docs.toFumadocsSource(), + plugins: [], +}); + +export function getPageMarkdownUrl(page: (typeof source)['$inferPage']) { + const segments = [...page.slugs, 'content.md']; + + return { + segments, + url: '/' + [page.locale, ...docsContentRoute.split('/'), ...segments].filter(Boolean).join('/'), + }; +} + +export async function getLLMText(page: (typeof source)['$inferPage']) { + const processed = await page.data.getText('processed'); + + return `# ${page.data.title} (${page.url}) + +${processed}`; +} diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 00000000..85a1e558 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,13 @@ +import { createMDX } from 'fumadocs-mdx/next'; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +const config = { + output: 'export', + reactStrictMode: true, + // static export has no image optimizer; nginx serves the files as-is + images: { unoptimized: true }, +}; + +export default withMDX(config); diff --git a/nginx.conf b/nginx.conf index a6e75bc5..2f63eb87 100644 --- a/nginx.conf +++ b/nginx.conf @@ -5,6 +5,31 @@ server { root /usr/share/nginx/html; index index.html; + # Fumadocs inlines the navigation tree and the RSC payload into every page, + # so pages are ~290 KB raw but ~27 KB gzipped. The search index is 8.6 MB + # raw / 1.4 MB gzipped. Serving these uncompressed is not viable. + gzip on; + gzip_comp_level 6; + gzip_min_length 1024; + gzip_vary on; + gzip_proxied any; + gzip_types + text/plain + text/css + text/markdown + application/json + application/javascript + application/octet-stream + image/svg+xml; + # text/html is always compressed by nginx and must not be listed here + + # Serve the home page directly. Without this, the `index index.html` + # fallback below rewrites "/" to "/index.html", which the redirect rule + # then bounces to "/index". + location = / { + try_files /index.html =404; + } + location ~ ^(.+)\.html$ { return 301 $1; } @@ -12,4 +37,4 @@ server { location / { try_files $uri $uri.html $uri/ =404; } -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 68463e6e..00000000 --- a/package-lock.json +++ /dev/null @@ -1,5664 +0,0 @@ -{ - "name": "guide", - "version": "3.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "guide", - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "@discord-message-components/vue": "^0.2.1", - "@vueuse/core": "^14.4.0", - "cheerio": "^1.0.0-rc.10", - "gray-matter": "^4.0.3", - "vuepress-plugin-remove-html-extension": "^1.26.0" - }, - "devDependencies": { - "@vuepress/bundler-vite": "^2.0.0-rc.31", - "@vuepress/plugin-container": "^2.0.0-rc.28", - "@vuepress/plugin-search": "^2.0.0-rc.131", - "@vuepress/theme-default": "^2.0.0-rc.132", - "sass-embedded": "^1.100.0", - "vuepress": "^2.0.0-rc.31" - } - }, - "node_modules/@babel/generator": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz", - "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^8.0.0", - "@babel/types": "^8.0.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "@types/jsesc": "^2.5.0", - "jsesc": "^3.0.2" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-string-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", - "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.4.tgz", - "integrity": "sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==", - "license": "MIT", - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/parser": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.4.tgz", - "integrity": "sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==", - "license": "MIT", - "dependencies": { - "@babel/types": "^8.0.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.4.tgz", - "integrity": "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^8.0.0", - "@babel/helper-validator-identifier": "^8.0.4" - }, - "engines": { - "node": "^22.18.0 || >=24.11.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bufbuild/protobuf": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.13.0.tgz", - "integrity": "sha512-acq7c49vxfm1ggJ95P70TX7ABDM0vxr1SYD3BB0o0jnBLB4OAqeHyKuN+cD3w80gXEDQ2zxHpR6CUeA+O/aU9g==", - "dev": true, - "license": "(Apache-2.0 AND BSD-3-Clause)" - }, - "node_modules/@discord-message-components/core": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@discord-message-components/core/-/core-0.2.1.tgz", - "integrity": "sha512-oPxBpq5vS7yLYvfMcHpCt1JVcGuRtnksPsJoiAmtmWDOeiO83BWfWvC1Xhvb2B6gNpg/H6+y6XuX3FhuHORJfA==", - "dependencies": { - "@discord-message-components/markdown": "^0.2.0", - "color-rgba": "^2.2.3" - } - }, - "node_modules/@discord-message-components/markdown": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@discord-message-components/markdown/-/markdown-0.2.0.tgz", - "integrity": "sha512-Av+Q6rUNTtYqKI0NqkcPDNoYv2U7YcWNQmAEDU1JMR7lZOoz5R/iSGV1TwAs6uoYNawDovBECiEQgIDUxKKPBg==", - "dependencies": { - "simple-markdown": "^0.7.3" - } - }, - "node_modules/@discord-message-components/vue": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@discord-message-components/vue/-/vue-0.2.1.tgz", - "integrity": "sha512-BLs6JshamjKh28f9boWIDMZ/BqWqLfg9wUUGxE3PqnMaomqKgs1eeWMKff/20Ie1cBJ6vYSYCxxxQUsw97SptQ==", - "dependencies": { - "@discord-message-components/core": "^0.2.1" - }, - "peerDependencies": { - "vue": "^3.0.6" - } - }, - "node_modules/@emnapi/core": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.2.tgz", - "integrity": "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", - "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mdit-vue/plugin-component": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-component/-/plugin-component-3.0.2.tgz", - "integrity": "sha512-Fu53MajrZMOAjOIPGMTdTXgHLgGU9KwTqKtYc6WNYtFZNKw04euSfJ/zFg8eBY/2MlciVngkF7Gyc2IL7e8Bsw==", - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/plugin-frontmatter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-3.0.2.tgz", - "integrity": "sha512-QKKgIva31YtqHgSAz7S7hRcL7cHXiqdog4wxTfxeQCHo+9IP4Oi5/r1Y5E93nTPccpadDWzAwr3A0F+kAEnsVQ==", - "license": "MIT", - "dependencies": { - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "gray-matter": "^4.0.3", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/plugin-headers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-headers/-/plugin-headers-3.0.2.tgz", - "integrity": "sha512-Z3PpDdwBTO5jlW2r617tQibkwtCc5unTnj/Ew1SCxTQaXjtKgwP9WngdSN+xxriISHoNOYzwpoUw/1CW8ntibA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/shared": "3.0.2", - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/plugin-sfc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-sfc/-/plugin-sfc-3.0.2.tgz", - "integrity": "sha512-dhxIrCGu5Nd4Cgo9JJHLjdNy2lMEv+LpimetBHDSeEEJxJBC4TPN0Cljn+3/nV1uJdGyw33UZA86PGdgt1LsoA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/plugin-title": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-title/-/plugin-title-3.0.2.tgz", - "integrity": "sha512-KTDP7s68eKTwy4iYp5UauQuVJf+tDMdJZMO6K4feWYS8TX95ItmcxyX7RprfBWLTUwNXBYOifsL6CkIGlWcNjA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/shared": "3.0.2", - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/plugin-toc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-toc/-/plugin-toc-3.0.2.tgz", - "integrity": "sha512-Dz0dURjD5wR4nBxFMiqb0BTGRAOkCE60byIemqLqnkF6ORKKJ8h5aLF5J5ssbLO87hwu81IikHiaXvqoiEneoQ==", - "license": "MIT", - "dependencies": { - "@mdit-vue/shared": "3.0.2", - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/shared": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/shared/-/shared-3.0.2.tgz", - "integrity": "sha512-anFGls154h0iVzUt5O43EaqYvPwzfUxQ34QpNQsUQML7pbEJMhcgkRNvYw9hZBspab+/TP45agdPw5joh6/BBA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/types": "3.0.2", - "@types/markdown-it": "^14.1.2", - "markdown-it": "^14.1.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit-vue/types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@mdit-vue/types/-/types-3.0.2.tgz", - "integrity": "sha512-00aAZ0F0NLik6I6Yba2emGbHLxv+QYrPH00qQ5dFKXlAo1Ll2RHDXwY7nN2WAfrx2pP+WrvSRFTGFCNGdzBDHw==", - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@mdit/helper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mdit/helper/-/helper-1.0.1.tgz", - "integrity": "sha512-zAzShsRZmkqjuoOFg6/zTCYVpvghj9a30Cl/eOGkE0xzRJJJG8T18eqb2lgceQhjVLWHK02HNVkzyfNHc429lQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.1.2" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "markdown-it": "^14.2.0" - }, - "peerDependenciesMeta": { - "markdown-it": { - "optional": true - } - } - }, - "node_modules/@mdit/plugin-alert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mdit/plugin-alert/-/plugin-alert-1.0.2.tgz", - "integrity": "sha512-A8p/Kodj96OeO1wrQMH0oSKQQ8N4jzeHSVrZQwQsBS6Z2NA+JvAk1AdVhzmn2C4b4EuprbFwWPvFlruoFm9iMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.1.2" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "markdown-it": "^14.2.0" - }, - "peerDependenciesMeta": { - "markdown-it": { - "optional": true - } - } - }, - "node_modules/@mdit/plugin-container": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mdit/plugin-container/-/plugin-container-1.0.2.tgz", - "integrity": "sha512-gCpqmadamWVbDI7+OgkywDGjfgqxrjZo3U+iK+sH7vERnZyX4sx1X65pXbqrem8Q5/4yO5t0d+kWkPC733ceRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.1.2" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "markdown-it": "^14.2.0" - }, - "peerDependenciesMeta": { - "markdown-it": { - "optional": true - } - } - }, - "node_modules/@mdit/plugin-tab": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mdit/plugin-tab/-/plugin-tab-1.0.2.tgz", - "integrity": "sha512-eWrP8lgrMOVRJDS4E1fOpFNTiH/FTxMcnUp3GqwkNrUNnNvdptjMmnJdBV7tnrYzSJpjG/JB+EA5TXjZ/Cru9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdit/helper": "1.0.1", - "@types/markdown-it": "^14.1.2" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "markdown-it": "^14.2.0" - }, - "peerDependenciesMeta": { - "markdown-it": { - "optional": true - } - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", - "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=23.5.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", - "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.140.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.140.0.tgz", - "integrity": "sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", - "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.6.0", - "@parcel/watcher-darwin-arm64": "2.6.0", - "@parcel/watcher-darwin-x64": "2.6.0", - "@parcel/watcher-freebsd-x64": "2.6.0", - "@parcel/watcher-linux-arm-glibc": "2.6.0", - "@parcel/watcher-linux-arm-musl": "2.6.0", - "@parcel/watcher-linux-arm64-glibc": "2.6.0", - "@parcel/watcher-linux-arm64-musl": "2.6.0", - "@parcel/watcher-linux-x64-glibc": "2.6.0", - "@parcel/watcher-linux-x64-musl": "2.6.0", - "@parcel/watcher-win32-arm64": "2.6.0", - "@parcel/watcher-win32-x64": "2.6.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", - "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", - "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", - "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", - "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", - "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", - "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", - "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", - "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", - "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", - "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", - "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", - "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.0.tgz", - "integrity": "sha512-9yB1l95IrJuNGDFdOYe79vdApdz6WWBCObE+rQ2LUliYUlcyFwSYIb2xb5/Ifw7dAtMy2ZqNyd8QTSOc7duAKw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.0.tgz", - "integrity": "sha512-pexNaW9ACLUOaBITOpU6qVu4VrsOFIjTv6bzgu0YUATo4eUJx0V605PxwZfndpPOn0ilqGqvGQ0M8UW0IE24jg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.0.tgz", - "integrity": "sha512-NqKYaq0355ZmNMG4QGpxtEDxsc7tGDhjhCm4PpE0cwnBW+5Il95LJyq414niEiaKLVjnVHBEjSo1wngKxJNiFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.0.tgz", - "integrity": "sha512-3vPoHzh6eBTz9IbB0/qZdSr0Qeks2echn+I4cHu2joV74VriPDdldswksEDzrl1mBB+oPRi+67+3Ib59paxIPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.0.tgz", - "integrity": "sha512-E6NNefZ1bUVmKJq2tJkf45J4Zyczj7qm9rUT7NY+Xo2474Y13qWAwc2tvBt0BAVbmtXR1llkxXg0Ou1jbDf2SQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.0.tgz", - "integrity": "sha512-D+TgkdgM1vu+7/Fpf8+v0ARW+RXEP9Ccazgm8zQ4JFFd9Q7SrYQ2TakU5S5ihazQDgpKyAgZDOcIFsvoHmTZ8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.0.tgz", - "integrity": "sha512-wUqdwJBbAv0APN87GecstdMUtLjjNTs0hBALpxETD73mccFxdmt/XeizXDtN5RAlBwNKmI+Tg+blect2G+8IeQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.0.tgz", - "integrity": "sha512-9DtF35qR9/NrfhM4oxLplCzVVjE+KKm8Pjemi0i/sdhAWkUasjmSo8WTTubNJClhSHCfyk2yeyoXDQEDPtDAAw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.0.tgz", - "integrity": "sha512-RzuHrBh8X8Hntd2N4VR02QGEciq/9JhcZoTpR/Cee6otRrlILGCf3cg2ygHuih+ZebUnWmMrDX6ITI85btO6rQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.0.tgz", - "integrity": "sha512-MK7L0018jjh1jR3mh21G2j1zAVcpscJBlPo2z19pRjv2XOYGRhaV4LyiD8HO6nCDdZln9IFgCMIV5yt4E3klGQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.0.tgz", - "integrity": "sha512-gyrxLQ9NfGb/9LoVnC4kb9miUghw1mghnkfYvNHSnVIXriabnfgGPUP4RLcJm87q3KgYz4FYUG8IDiWUT+CpSw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.0.tgz", - "integrity": "sha512-/6VFMQGRmrhP77KXDC+StIxGzcNp5JOIyYtw0CQ8gPlzhpiIRucYfoM5FaFamHd5BJYIdH86yfP46l1p3WdrFA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.2.0.tgz", - "integrity": "sha512-rwdbUL465kisF24WEJLvP3JrEG6E5GRuIHt5wpMwHGERtHe4Wm2CIvtf5gTBgr2tGOHKh5NdKEAFS2VkOPE91g==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.2", - "@emnapi/runtime": "1.11.2", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.0.tgz", - "integrity": "sha512-+5suHwRiKGmhwyUaNT8a5QbrBvLFh2DbO910TEmGRH1aSxwrCezodvGQnulv4uiWEIv1Kq4ypRsJ5+O+ry1DiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.0.tgz", - "integrity": "sha512-WfFv6/qGufotqBSBzBYwgpCkJBk8Nj7697LL9vTz/XWc67e0r3oewu8iMRwQj3AUL45GVD7wVsPjCsAAtW66Wg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/debug": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", - "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "license": "MIT", - "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "node_modules/@types/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz", - "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", - "license": "MIT" - }, - "node_modules/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/markdown-it-emoji": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/markdown-it-emoji/-/markdown-it-emoji-3.0.1.tgz", - "integrity": "sha512-cz1j8R35XivBqq9mwnsrP2fsz2yicLhB8+PDtuVkKOExwEdsVBNI+ROL3sbhtR5occRZ66vT0QnwFZCqdjf3pA==", - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", - "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.18.0" - } - }, - "node_modules/@types/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-iG0T6+nYJ9FAPmx9SsUlnwcq1ZVRuCXcVEvWnntoPlrOpwtSTKNDC9uVAxTsC3PUvJ+99n4RpAcNgBbHX3JSnQ==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.0.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", - "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/sax": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.21", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", - "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", - "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.8.tgz", - "integrity": "sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rolldown/pluginutils": "^1.0.1" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue-macros/common": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.4.tgz", - "integrity": "sha512-/5Fv+6DgIcM9ajY05ZmKBv+LMX1M9A0X+IUwDRVdt67ciw8OV9bvG2r34p3RiEadlsQybjhKPRKNXDC8Bp23cw==", - "license": "MIT", - "dependencies": { - "@vue/compiler-sfc": "^3.5.22", - "ast-kit": "^2.1.2", - "local-pkg": "^1.1.2", - "magic-string-ast": "^1.0.2", - "unplugin-utils": "^0.3.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/vue-macros" - }, - "peerDependencies": { - "vue": "^2.7.0 || ^3.2.25" - }, - "peerDependenciesMeta": { - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.40.tgz", - "integrity": "sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/shared": "3.5.40", - "entities": "^7.0.1", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.40.tgz", - "integrity": "sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.40", - "@vue/shared": "3.5.40" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.40.tgz", - "integrity": "sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.7", - "@vue/compiler-core": "3.5.40", - "@vue/compiler-dom": "3.5.40", - "@vue/compiler-ssr": "3.5.40", - "@vue/shared": "3.5.40", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.21", - "postcss": "^8.5.19", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.40.tgz", - "integrity": "sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.40", - "@vue/shared": "3.5.40" - } - }, - "node_modules/@vue/devtools-api": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.2.1.tgz", - "integrity": "sha512-6u4vXBlIBAC1wMplIZgpyPn7uh/s4Bf6F5bMzvLv+EdJ0aHs/+4B7Ygv864EStQSjRbsRzTko/kUG1A1IejQ3A==", - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^8.2.1" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.2.1.tgz", - "integrity": "sha512-FIGIuq3AWReEpbAHY/cRGeHDfI0qOb8OCQ3YjbEAX04uaxIDbGc9rhkbVcG7rnfHPXE3RsU5KrWOu9V/okd8AQ==", - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^8.2.1", - "birpc": "^2.6.1", - "hookable": "^5.5.3", - "perfect-debounce": "^2.0.0" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.2.1.tgz", - "integrity": "sha512-Fkac7lUdGReh6pVOi3AYPRGe82LQqRmAfThW7RRligOAP0ZA/Z1z9XLHDM9dv34pV2HRc79DK8uKPeG2fLnA/g==", - "license": "MIT" - }, - "node_modules/@vue/reactivity": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.40.tgz", - "integrity": "sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.40" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.40.tgz", - "integrity": "sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.40", - "@vue/shared": "3.5.40" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.40.tgz", - "integrity": "sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.40", - "@vue/runtime-core": "3.5.40", - "@vue/shared": "3.5.40", - "csstype": "^3.2.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.40.tgz", - "integrity": "sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.40", - "@vue/runtime-dom": "3.5.40", - "@vue/shared": "3.5.40" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.40.tgz", - "integrity": "sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==", - "license": "MIT" - }, - "node_modules/@vuepress/bundler-vite": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/bundler-vite/-/bundler-vite-2.0.0-rc.31.tgz", - "integrity": "sha512-4ptpbmDvAf9KvME7xY4OhYT4M/fAyk4qnP97jl5+kdRkOcv/XsRW2WKhP2lC8ckr9hMwVoRdBRE2/qgrtX+iDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitejs/plugin-vue": "^6.0.8", - "@vuepress/bundlerutils": "2.0.0-rc.31", - "@vuepress/client": "2.0.0-rc.31", - "@vuepress/core": "2.0.0-rc.31", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "autoprefixer": "^10.5.4", - "connect-history-api-fallback": "^2.0.0", - "postcss": "^8.5.22", - "postcss-load-config": "^6.0.1", - "rolldown": "^1.2.0", - "vite": "^8.1.5", - "vue": "^3.5.40", - "vue-router": "^5.2.0" - } - }, - "node_modules/@vuepress/bundlerutils": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/bundlerutils/-/bundlerutils-2.0.0-rc.31.tgz", - "integrity": "sha512-CSk4gR0fvJ419ocipH3cbk/xt0IFK92XwqzFX3N7BzPVFlWE74iaBfT3VUFQHQN2vYPwMMou4wlEdnK4PS4cvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/client": "2.0.0-rc.31", - "@vuepress/core": "2.0.0-rc.31", - "@vuepress/markdown": "2.0.0-rc.31", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "vue": "^3.5.40", - "vue-router": "^5.2.0" - } - }, - "node_modules/@vuepress/cli": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-rc.31.tgz", - "integrity": "sha512-X75edJjhacYCzrYSOhXvlakh+/1fm2eCGJcrcZqKGfeZXcKhDrF154E7meLqfEkiHDb3zPCg+C2wAs1m6ujoxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/core": "2.0.0-rc.31", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "cac": "^7.0.0", - "chokidar": "^5.0.0", - "envinfo": "^7.21.0", - "rolldown": "^1.2.0" - }, - "bin": { - "vuepress-cli": "bin/vuepress.js" - } - }, - "node_modules/@vuepress/client": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-rc.31.tgz", - "integrity": "sha512-F1mVj2NCblUwweGjfsmfLiC7GrO0YN5rnej14nMSGfHP3ch1FHpZeACiiRk1L0MolpBd7OYskx5rYyh7vY0tCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^8.1.5", - "@vue/devtools-kit": "^8.1.5", - "@vuepress/shared": "2.0.0-rc.31", - "vue": "^3.5.40", - "vue-router": "^5.2.0" - } - }, - "node_modules/@vuepress/core": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-rc.31.tgz", - "integrity": "sha512-b01o8GkukVSZwQYn0DZirEr5ghiAiX2m8yNUeptOJ6nJgLyPGO02zmGlmERCxR9qsfHnTsc5UcbjJpmOr/cFiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/client": "2.0.0-rc.31", - "@vuepress/markdown": "2.0.0-rc.31", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "vue": "^3.5.40" - } - }, - "node_modules/@vuepress/helper": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/helper/-/helper-2.0.0-rc.131.tgz", - "integrity": "sha512-VlzJre0tJhlyoHpiRzclM9KntYzdip9rUWf8zaqfwlOV8A280fexTfWdxZwDkekgh9E3l6jJTqRJZpVDdXVFYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/shared": "^3.5.39", - "@vueuse/core": "^14.3.0", - "cheerio": "^1.2.0", - "fflate": "^0.8.3", - "gray-matter": "^4.0.3", - "vue": "^3.5.39" - }, - "peerDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.30", - "@vuepress/bundler-webpack": "2.0.0-rc.30", - "vuepress": "2.0.0-rc.30" - }, - "peerDependenciesMeta": { - "@vuepress/bundler-vite": { - "optional": true - }, - "@vuepress/bundler-webpack": { - "optional": true - } - } - }, - "node_modules/@vuepress/highlighter-helper": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/highlighter-helper/-/highlighter-helper-2.0.0-rc.131.tgz", - "integrity": "sha512-KbKI30NlVWttza0KiKCIQtQTUzWWVXwVnhUxKN2lL7dvK2mGM/41tutIBGj0G16kvPr5KiCHNAWSmZVd4IRkkg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "vuepress": "2.0.0-rc.30" - }, - "peerDependenciesMeta": { - "@vueuse/core": { - "optional": true - } - } - }, - "node_modules/@vuepress/markdown": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-rc.31.tgz", - "integrity": "sha512-W4UdVwYob3sZ794BFd53dolhXVOma0JzN15k6CwmmhOy/3wWuIZ8pV3YQsxxyAQJ8ZxQWGZ4Wf5u/w7G/1/IkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdit-vue/plugin-component": "^3.0.2", - "@mdit-vue/plugin-frontmatter": "^3.0.2", - "@mdit-vue/plugin-headers": "^3.0.2", - "@mdit-vue/plugin-sfc": "^3.0.2", - "@mdit-vue/plugin-title": "^3.0.2", - "@mdit-vue/plugin-toc": "^3.0.2", - "@mdit-vue/shared": "^3.0.2", - "@mdit-vue/types": "^3.0.2", - "@types/markdown-it": "^14.1.2", - "@types/markdown-it-emoji": "^3.0.1", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "markdown-it": "^14.3.0", - "markdown-it-anchor": "^9.2.1", - "markdown-it-emoji": "^3.1.0", - "mdurl": "^2.1.0" - } - }, - "node_modules/@vuepress/plugin-active-header-links": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-rc.131.tgz", - "integrity": "sha512-ouBBcln9iqmH0Kmm5gtq05B/TmeruFjIlyerrSRN9fuOhP2whDAlF05JixXd0EEFLuVt/DNMscWIsx0TE4TKPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vueuse/core": "^14.3.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-back-to-top": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-rc.131.tgz", - "integrity": "sha512-SKuAT7vcilBae7W7TBMyZU/Toy7GEPxprrBbN9RmdIov/g2NQd9jY1mSuOY4o0cQlM6R91dm8LQCNKhBUW+6Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-container": { - "version": "2.0.0-rc.28", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-rc.28.tgz", - "integrity": "sha512-EBvmanLATZRtjDr/a6Td8Dw8Mr3ToigNoqdfibhhGA3PKAk5/olUbtpJBcYemgA3nVIyH6gdqbC3zMTO3/vx3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/markdown-it": "^14.1.1", - "markdown-it": "^14.1.0", - "markdown-it-container": "^4.0.0" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.9" - } - }, - "node_modules/@vuepress/plugin-copy-code": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-copy-code/-/plugin-copy-code-2.0.0-rc.131.tgz", - "integrity": "sha512-fHZroAO1hmB4p3xsoUmcGV0sWGPghmW+ukDZQ7fgz11eAtUk9idWqQtZ8+NrhWab2ZV9vC0mxNXSXyAQKjmEEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-git": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-rc.132.tgz", - "integrity": "sha512-2F7ef0t8Av6U35xcNwWFxn/o4+Bn4fseArFC0jl5ov3OeZZF2FVd54B5NKxbo98gnteZ0W5UUMr37iMAeBhfSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "rehype-parse": "^9.0.1", - "rehype-sanitize": "^6.0.0", - "rehype-stringify": "^10.0.1", - "unified": "^11.0.5", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-links-check": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-links-check/-/plugin-links-check-2.0.0-rc.131.tgz", - "integrity": "sha512-uWz2bXDlrZmCtZL+q7YQiVV0fBJwNLy7WWPl3AlD9EPVf61mT1K5P1HSKaVO2TMAdDr6pBjjfvMw6DZj9bJd1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-markdown-hint": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-markdown-hint/-/plugin-markdown-hint-2.0.0-rc.132.tgz", - "integrity": "sha512-vnq++26+NYMdxJPj60sBL8HYoIkNsTUwXwtE2QHYJ8psqe4HIQAxICVTo13munhFCKn1EQQTvgs9P2mW/WraEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdit/plugin-alert": "^1.0.1", - "@mdit/plugin-container": "^1.0.1", - "@types/markdown-it": "^14.1.2", - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-markdown-tab": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-markdown-tab/-/plugin-markdown-tab-2.0.0-rc.132.tgz", - "integrity": "sha512-JdXbfzPqLdeOjhmKgn6gLdUqH2CnvGBqei/HYPYVkEm5Pg3BCCYY8ePaTJdBpsFWRdkkgYGV3jKfSs7isXMviA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdit/plugin-tab": "^1.0.1", - "@types/markdown-it": "^14.1.2", - "@vuepress/helper": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-medium-zoom": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-rc.131.tgz", - "integrity": "sha512-QO53LlZs27JLnOyH9ZfH8tpITRUehGOtwpISw+ZSBEqXAkqqPspDjH//CXiqY4pgjm3sARFkXIXrX1GKCmZnrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "medium-zoom": "^1.1.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-nprogress": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-rc.131.tgz", - "integrity": "sha512-22a4qHBPObBVQanFGnCDEuLb4WCkC7MQAlksX8cAQdbhFIo6Q4L/GvZJR/thfil0feAgEI2qGxTrULJ97f3aFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-palette": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-rc.131.tgz", - "integrity": "sha512-FVdWjwJ1BD/e8wP4M/09iEdSYuRwk6g1yTKMZeqRC0enXFyOPZg2BGXZ4MeQwi+j8q+NgSCGJN0l6UK9FWUjTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "chokidar": "^5.0.0" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-prismjs": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-rc.132.tgz", - "integrity": "sha512-DZDt1hoWCdRegzlKG3BB+wWbu4z+cIC/t40fpgHiIVhfTVDZIg9bqOlZylPnLEbSin45V4gAI/20x9RevtU0cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vuepress/highlighter-helper": "2.0.0-rc.131", - "prismjs": "^1.30.0" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-search": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-rc.131.tgz", - "integrity": "sha512-IfhvhfW17035WTTGcji1jnUdej4A346YABpjMwsMU0vNLmoeXluakWeIk7CujtI/RCTF0PaWjCBru6J3gW5R6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "chokidar": "^5.0.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-seo": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-seo/-/plugin-seo-2.0.0-rc.132.tgz", - "integrity": "sha512-+dQ2YJ/LKt/InHgN93DwtrjXkaERplXxD9gu+xkj02ioHgo87WZRH8rkChWPjzBRvfDjEFYcXDT16pzcyc27OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-sitemap": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-sitemap/-/plugin-sitemap-2.0.0-rc.132.tgz", - "integrity": "sha512-bTeThkscqNRnyMcm35UR50c+YAjbOk6youMojBrHvf/ocggmiWpFa7EbKW399NsfZ7udo/2EaG4GTyn0UZws+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "sitemap": "^9.0.1" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/plugin-theme-data": { - "version": "2.0.0-rc.131", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-rc.131.tgz", - "integrity": "sha512-/v1c77ILZ3usYJ+QaAkCIELymvglJOa5Rl7sZ+dEqtcfPs3DMm8NPbsUyy+8oi08oFgF4ViefAZhKKIMgOSYmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^8.1.5", - "vue": "^3.5.39" - }, - "peerDependencies": { - "vuepress": "2.0.0-rc.30" - } - }, - "node_modules/@vuepress/shared": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-rc.31.tgz", - "integrity": "sha512-FCBYbDrRd8rbRdj7osw2liS+gGsx7eyYktEm0efJlZavPh5O9nqC6e1ryUc0Mjzo04ZCgS+8EY3B+NHa5W2t8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdit-vue/types": "^3.0.2" - } - }, - "node_modules/@vuepress/theme-default": { - "version": "2.0.0-rc.132", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-rc.132.tgz", - "integrity": "sha512-ZzYdbRMNmlCr7wlqlcd46e16/IkGfwWlqceMOZdrw/5Cp3U/lWA06s2VUQECsJGZc9oqnHI71E/O1hg/YDchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/helper": "2.0.0-rc.131", - "@vuepress/plugin-active-header-links": "2.0.0-rc.131", - "@vuepress/plugin-back-to-top": "2.0.0-rc.131", - "@vuepress/plugin-copy-code": "2.0.0-rc.131", - "@vuepress/plugin-git": "2.0.0-rc.132", - "@vuepress/plugin-links-check": "2.0.0-rc.131", - "@vuepress/plugin-markdown-hint": "2.0.0-rc.132", - "@vuepress/plugin-markdown-tab": "2.0.0-rc.132", - "@vuepress/plugin-medium-zoom": "2.0.0-rc.131", - "@vuepress/plugin-nprogress": "2.0.0-rc.131", - "@vuepress/plugin-palette": "2.0.0-rc.131", - "@vuepress/plugin-prismjs": "2.0.0-rc.132", - "@vuepress/plugin-seo": "2.0.0-rc.132", - "@vuepress/plugin-sitemap": "2.0.0-rc.132", - "@vuepress/plugin-theme-data": "2.0.0-rc.131", - "@vueuse/core": "^14.3.0", - "vue": "^3.5.39" - }, - "peerDependencies": { - "sass": "^1.101.0", - "sass-embedded": "^1.100.0", - "sass-loader": "^17.0.0", - "vuepress": "2.0.0-rc.30" - }, - "peerDependenciesMeta": { - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "sass-loader": { - "optional": true - } - } - }, - "node_modules/@vuepress/utils": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-rc.31.tgz", - "integrity": "sha512-UeJYobsP2JuGjGNqh9Tk/iLhV9O0FQLj1ClFRxjG0gl/KUAASxofOODjOFFEsWv4FnkxNEUwejxO6cNqW1zOWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.13", - "@types/fs-extra": "^11.0.4", - "@types/hash-sum": "^1.0.2", - "@types/picomatch": "^4.0.3", - "@vuepress/shared": "2.0.0-rc.31", - "debug": "^4.4.3", - "fs-extra": "^11.3.6", - "hash-sum": "^2.0.0", - "ora": "^9.4.1", - "picocolors": "^1.1.1", - "picomatch": "^4.0.5", - "tinyglobby": "^0.2.17", - "upath": "^3.0.8" - } - }, - "node_modules/@vueuse/core": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.4.0.tgz", - "integrity": "sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.21", - "@vueuse/metadata": "14.4.0", - "@vueuse/shared": "14.4.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/@vueuse/metadata": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.4.0.tgz", - "integrity": "sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "14.4.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.4.0.tgz", - "integrity": "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/acorn": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", - "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/ast-kit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", - "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "pathe": "^2.0.3" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/ast-walker-scope": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.9.0.tgz", - "integrity": "sha512-IJdzo2vLiElBxKzwS36VsCue/62d6IdWjnPB2v3nuPKeWGynp6FF/CYoLa5i/3jXH/z97ZDdsXz6abpgM6w07A==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.2", - "@babel/types": "^7.29.0", - "ast-kit": "^2.2.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/autoprefixer": { - "version": "10.5.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz", - "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.6", - "caniuse-lite": "^1.0.30001806", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.6.tgz", - "integrity": "sha512-69D/imtToCsIcAl8WBS2YaRwA4jO/j0HhU+hELqMEu9f54MoUtI6+XH5mrKU8rEFNEk/Ui1I2MK4/JkWacclGw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/birpc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", - "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.28.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", - "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.44", - "caniuse-lite": "^1.0.30001806", - "electron-to-chromium": "^1.5.393", - "node-releases": "^2.0.51", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/cac": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cac/-/cac-7.0.0.tgz", - "integrity": "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001806", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", - "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", - "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-parse": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.2.tgz", - "integrity": "sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==", - "dependencies": { - "color-name": "^1.0.0" - } - }, - "node_modules/color-rgba": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-2.4.0.tgz", - "integrity": "sha512-Nti4qbzr/z2LbUWySr7H9dk3Rl7gZt7ihHAxlgT4Ho90EXWkjtkL1avTleu9yeGuqrt/chxTB6GKK8nZZ6V0+Q==", - "dependencies": { - "color-parse": "^1.4.2", - "color-space": "^2.0.0" - } - }, - "node_modules/color-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/color-space/-/color-space-2.0.0.tgz", - "integrity": "sha512-Bu8P/usGNuVWushjxcuaGSkhT+L2KX0cvgMGMTF0KJ7lFeqonhsntT68d6Yu3uwZzCmbF7KTB9EV67AGcUXhJw==" - }, - "node_modules/colorjs.io": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", - "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/confbox": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", - "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", - "license": "MIT" - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.398", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.398.tgz", - "integrity": "sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", - "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/exsolve": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz", - "integrity": "sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==", - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fflate": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", - "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-extra": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", - "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "license": "MIT" - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^7.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-sanitize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz", - "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "unist-util-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "license": "MIT" - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immutable": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", - "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-yaml": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz", - "integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lightningcss": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", - "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.33.0", - "lightningcss-darwin-arm64": "1.33.0", - "lightningcss-darwin-x64": "1.33.0", - "lightningcss-freebsd-x64": "1.33.0", - "lightningcss-linux-arm-gnueabihf": "1.33.0", - "lightningcss-linux-arm64-gnu": "1.33.0", - "lightningcss-linux-arm64-musl": "1.33.0", - "lightningcss-linux-x64-gnu": "1.33.0", - "lightningcss-linux-x64-musl": "1.33.0", - "lightningcss-win32-arm64-msvc": "1.33.0", - "lightningcss-win32-x64-msvc": "1.33.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", - "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", - "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", - "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", - "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", - "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", - "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", - "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", - "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", - "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", - "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", - "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/linkify-it": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/local-pkg": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz", - "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==", - "license": "MIT", - "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.3.0", - "quansync": "^0.2.11" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/magic-string-ast": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-1.0.3.tgz", - "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.19" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/markdown-it": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.5.0", - "linkify-it": "^5.0.2", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/markdown-it-anchor": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-9.2.1.tgz", - "integrity": "sha512-p6APiLJDFAW2GEvaavDvhIBn7jrX2jLv77NkBGgNacFTurbORYc4pyYySg/mI6mpR6cHQuAtzKtmqgQr4K8dsQ==", - "license": "Unlicense", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/markdown-it-container": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-4.0.0.tgz", - "integrity": "sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/markdown-it-emoji": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-3.1.0.tgz", - "integrity": "sha512-NhmMEH2ywduD4Nty1E8uB5NqfLhAT1VR0dyvoJyStKOqCzbZmVdn/+8wj7zpDsb/fLBikpCPsWwxqKlvMmbz4g==", - "license": "MIT" - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdurl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", - "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", - "license": "MIT" - }, - "node_modules/medium-zoom": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.1.0.tgz", - "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mlly": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", - "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", - "license": "MIT", - "dependencies": { - "acorn": "^8.16.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.3" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/nostics": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/nostics/-/nostics-1.2.0.tgz", - "integrity": "sha512-FGqEfhQjrvo1lL8KFifdTQiNwwQHJxC1jtYE1Rc54qF/jxONUNL+kC9gS1krX8Q65PgrQ5fCqH/I4NhWBvdSqg==", - "license": "MIT" - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.4.1.tgz", - "integrity": "sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==", - "license": "MIT", - "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.3.2", - "string-width": "^8.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", - "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", - "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", - "license": "MIT", - "dependencies": { - "confbox": "^0.2.4", - "exsolve": "^1.0.8", - "pathe": "^2.0.3" - } - }, - "node_modules/postcss": { - "version": "8.5.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.24.tgz", - "integrity": "sha512-8RyVklq0owXUTa4xlpzu4l9AaVKIdQvAcOHZWaMh98HgySsUtxRVf/chRe3dsSLqb6i40BzGRzEUddRaI+9TSw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.16", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/property-information": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", - "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/quansync": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", - "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-sanitize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz", - "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-sanitize": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-stringify": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", - "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-to-html": "^9.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rolldown": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.0.tgz", - "integrity": "sha512-u7tgm5l4Yw1iTqUL4EcYOAt7fFvCgQMLeidrnD4GALlC6aOznCjezYajgxeyKw27u0Q5N7fwgCzjVyPIWzwuBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.140.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.2.0", - "@rolldown/binding-darwin-arm64": "1.2.0", - "@rolldown/binding-darwin-x64": "1.2.0", - "@rolldown/binding-freebsd-x64": "1.2.0", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.0", - "@rolldown/binding-linux-arm64-gnu": "1.2.0", - "@rolldown/binding-linux-arm64-musl": "1.2.0", - "@rolldown/binding-linux-ppc64-gnu": "1.2.0", - "@rolldown/binding-linux-s390x-gnu": "1.2.0", - "@rolldown/binding-linux-x64-gnu": "1.2.0", - "@rolldown/binding-linux-x64-musl": "1.2.0", - "@rolldown/binding-openharmony-arm64": "1.2.0", - "@rolldown/binding-wasm32-wasi": "1.2.0", - "@rolldown/binding-win32-arm64-msvc": "1.2.0", - "@rolldown/binding-win32-x64-msvc": "1.2.0" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz", - "integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^5.0.0", - "immutable": "^5.1.5", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=20.19.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/sass-embedded": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.100.0.tgz", - "integrity": "sha512-Ut8wlQSk19tm7jMK6mz6cF1+e+E7tUnW2tM02zQDPnOTcVbV8qCQG8UWxZkkNlY50+hV3hqP24OOkUlMz8xBpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bufbuild/protobuf": "^2.5.0", - "colorjs.io": "^0.5.0", - "immutable": "^5.1.5", - "rxjs": "^7.4.0", - "supports-color": "^8.1.1", - "sync-child-process": "^1.0.2", - "varint": "^6.0.0" - }, - "bin": { - "sass": "dist/bin/sass.js" - }, - "engines": { - "node": ">=16.0.0" - }, - "optionalDependencies": { - "sass-embedded-all-unknown": "1.100.0", - "sass-embedded-android-arm": "1.100.0", - "sass-embedded-android-arm64": "1.100.0", - "sass-embedded-android-riscv64": "1.100.0", - "sass-embedded-android-x64": "1.100.0", - "sass-embedded-darwin-arm64": "1.100.0", - "sass-embedded-darwin-x64": "1.100.0", - "sass-embedded-linux-arm": "1.100.0", - "sass-embedded-linux-arm64": "1.100.0", - "sass-embedded-linux-musl-arm": "1.100.0", - "sass-embedded-linux-musl-arm64": "1.100.0", - "sass-embedded-linux-musl-riscv64": "1.100.0", - "sass-embedded-linux-musl-x64": "1.100.0", - "sass-embedded-linux-riscv64": "1.100.0", - "sass-embedded-linux-x64": "1.100.0", - "sass-embedded-unknown-all": "1.100.0", - "sass-embedded-win32-arm64": "1.100.0", - "sass-embedded-win32-x64": "1.100.0" - } - }, - "node_modules/sass-embedded-all-unknown": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.100.0.tgz", - "integrity": "sha512-auFtXY/kwYILmSVjtBDwyj0axcLbYYiffOKWoaXHnI5bsYwiRbBh3EneR1rpbX2ZIZCrwX93i5pxKLTZF/662Q==", - "cpu": [ - "!arm", - "!arm64", - "!riscv64", - "!x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "sass": "1.100.0" - } - }, - "node_modules/sass-embedded-android-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.100.0.tgz", - "integrity": "sha512-70f3HgX2pFNmzpGQ86n5e6QfWn2fP4QUQGfFQK0P1XH73ZLIzLo2YqygrGKGKeeqtc5eU2Wl1/xQzhzuKnO4kw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.100.0.tgz", - "integrity": "sha512-W+Ru9JwTnfU0UX3jSZcbqFdtKFMcYdfFwytc57h2DgnqCOIiAqI2E06mABZBZC+r3LwXCBuS5GbXAGeVgvVDkA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.100.0.tgz", - "integrity": "sha512-icU3o0V/uCSytSpf+tX5Lf51BvyQEbLzDUJfUi9etSauYBGHpPKkdtdZH0si4v98phq11Kl8rSV1SggksxF1Hg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-android-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.100.0.tgz", - "integrity": "sha512-mevF9VQk6gEYByy8+jusaHGmd7Usb2ytX/DsEOd0JtOGCtcf1kh575xJ6OUBDIcJ15uLnbau/0iy1eP6WVBvWA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.100.0.tgz", - "integrity": "sha512-1PVlYi61POo93IT/FfrG1mc1tAHxeSTyUALF2aOFmXGWjVXr3bQzEQiBGCOvQbj/ix+5hNyXFXcEMEyKvtUJJA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-darwin-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.100.0.tgz", - "integrity": "sha512-x97o3JnGyImZNCIVs9wQHJUE5QCvmVIKaH1cwrz/5dK7OT1FpeNiW+u9TUomP9hG6Ekjd8EL8NBHpxTfIhdjmg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.100.0.tgz", - "integrity": "sha512-9Ul7O1eKrc5YlhwWjkp8tZPSe3UEwSZ1uwUZOQom1HL0pRlBA6F/IlGZYFTLwnHMIP1fc77MMNaBRfc05mKMpw==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": "glibc", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.100.0.tgz", - "integrity": "sha512-Dwjmj8Z6VRy7rAi53JAdEwIyUjpfl7PhpSc2/LpQPQx+aO5Dp7Spaipkax0ufJl1SoDUdchCsM4y/88YaluorQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": "glibc", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.100.0.tgz", - "integrity": "sha512-sl0JgbGloPyJg66XXx5UDSDScZ0oU85DpMQU4JU/sCUCFj1Z8zZ69SJWKTCNE4/jwnce7WI2zPCV5AG+RHOZJw==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": "musl", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.100.0.tgz", - "integrity": "sha512-XpACJB2KjSLjf2e9uuvGVdOURsoNrFqgRiihhXyUHK9W0t3LIHb7z5MA/7XGPIT9bWSOO2zyw+rH/FHtDV/Yrg==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": "musl", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.100.0.tgz", - "integrity": "sha512-ShvI0Kx04mwoCARwZ0UjiT97isQvzO80tAt91zmFyHLN9kelc/IrQi940farSm2xQVPCKdeVyeG0ekBsokSpYQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": "musl", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.100.0.tgz", - "integrity": "sha512-TDBCRWNuS4RDLQXvRc1gjZlWiWTWaWGp0Bwu/IKwJxov81lsvrCs3TihTyNXtW7V5aoN4Ky3r0QOkNb3mwmBnA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": "musl", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-riscv64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.100.0.tgz", - "integrity": "sha512-j4ENJGOheO+fm3j/yorLxCjBP6/XskrZx7dTLlT+lXYwN/qqCqoA/gsNLI0McS3DFM6GBwPiffzWsdWS8t6sEQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": "glibc", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-linux-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.100.0.tgz", - "integrity": "sha512-0vUSN8j0WGtCJIOPh//EmUvYGHW0QOe5iul8qyhPk50MAcw49MA0r34AhftjDdx94ILPF6vApFs0gwHPQRlpVA==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": "glibc", - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-unknown-all": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.100.0.tgz", - "integrity": "sha512-c+naBgWId4MIpToXcI0DgqetjdAkwTTAxFAuOaBz7HUXLdyG1oZRrEvSsbe41nEdQOKH0vgofVFCeSQgoXOG9A==", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "!android", - "!darwin", - "!linux", - "!win32" - ], - "dependencies": { - "sass": "1.100.0" - } - }, - "node_modules/sass-embedded-win32-arm64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.100.0.tgz", - "integrity": "sha512-iE+yxj+hUXwwbqpHkXxgAWTzeRfcWxJ7SSTQEPMk48lwq3oCrWLlz5sQuWHbuTK/i0GKQfROdP+hOmPi89yjUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sass-embedded-win32-x64": { - "version": "1.100.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.100.0.tgz", - "integrity": "sha512-qI4F8MI7/KYoy9NdjJfhSspG42WPkADSNDvwEV7qWvCSFC83koJssRsKO2/PfY+niZz6BG65Ic/D+A11h959hw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/sax": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", - "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } - }, - "node_modules/scule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", - "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", - "license": "MIT" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-markdown": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/simple-markdown/-/simple-markdown-0.7.3.tgz", - "integrity": "sha512-uGXIc13NGpqfPeFJIt/7SHHxd6HekEJYtsdoCM06mEBPL9fQH/pSD7LRM6PZ7CKchpSvxKL4tvwMamqAaNDAyg==", - "dependencies": { - "@types/react": ">=16.0.0" - } - }, - "node_modules/sitemap": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz", - "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^24.9.2", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.4.1" - }, - "bin": { - "sitemap": "dist/esm/cli.js" - }, - "engines": { - "node": ">=20.19.5", - "npm": ">=10.8.2" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/stdin-discarder": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.2.tgz", - "integrity": "sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", - "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "dev": true, - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/sync-child-process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", - "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "sync-message-port": "^1.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/sync-message-port": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", - "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/ufo": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz", - "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==", - "license": "MIT" - }, - "node_modules/undici": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", - "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "license": "MIT" - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", - "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", - "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", - "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unplugin": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.3.0.tgz", - "integrity": "sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==", - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "picomatch": "^4.0.4", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@farmfe/core": "*", - "@rspack/core": "*", - "bun-types-no-globals": "*", - "esbuild": "*", - "rolldown": "*", - "rollup": "*", - "unloader": "*", - "vite": "*", - "webpack": "*" - }, - "peerDependenciesMeta": { - "@farmfe/core": { - "optional": true - }, - "@rspack/core": { - "optional": true - }, - "bun-types-no-globals": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "rolldown": { - "optional": true - }, - "rollup": { - "optional": true - }, - "unloader": { - "optional": true - }, - "vite": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/unplugin-utils": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.2.tgz", - "integrity": "sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==", - "license": "MIT", - "dependencies": { - "pathe": "^2.0.3", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/upath": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/upath/-/upath-3.0.8.tgz", - "integrity": "sha512-YAsrLMIlhfSCm9rga5TZsJ1mXgahs7N0qOTokzU8mFz35hUrYMvVkaEPefI3rEb/vkAWAOj1Km/qdije9RC1kQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/anodynos" - }, - { - "type": "polar", - "url": "https://polar.sh/anodynos" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-upath" - } - ], - "license": "MIT", - "engines": { - "node": ">=20" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", - "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vite": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz", - "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.5", - "postcss": "^8.5.17", - "rolldown": "~1.1.5", - "tinyglobby": "^0.2.17" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/vite/node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/vite/node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", - "cpu": [ - "s390x" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vite/node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.139.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" - } - }, - "node_modules/vue": { - "version": "3.5.40", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.40.tgz", - "integrity": "sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.40", - "@vue/compiler-sfc": "3.5.40", - "@vue/runtime-dom": "3.5.40", - "@vue/server-renderer": "3.5.40", - "@vue/shared": "3.5.40" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.2.0.tgz", - "integrity": "sha512-QAC5i0LEb1GLG0LXDQmHu8L7FX12j0KwU/JTKmLQUJMrn04gQdKP6Du+p0QwpHb3iy71vBlqnHQ8WAfOSAWhqw==", - "license": "MIT", - "dependencies": { - "@babel/generator": "^8.0.0", - "@vue-macros/common": "^3.1.3", - "@vue/devtools-api": "^8.1.5", - "ast-walker-scope": "^0.9.0", - "chokidar": "^5.0.0", - "json5": "^2.2.3", - "local-pkg": "^1.2.1", - "magic-string": "^0.30.21", - "mlly": "^1.8.2", - "muggle-string": "^0.4.1", - "nostics": "^1.1.4", - "pathe": "^2.0.3", - "picomatch": "^4.0.5", - "scule": "^1.3.0", - "tinyglobby": "^0.2.17", - "unplugin": "^3.3.0", - "unplugin-utils": "^0.3.2", - "yaml": "^2.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "@pinia/colada": ">=0.21.2", - "@vue/compiler-sfc": "^3.5.34 || ^4.0.0", - "pinia": "^3.0.4 || ^4.0.2", - "vite": "^7.3.0 || ^8.0.0", - "vue": "^3.5.34 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@pinia/colada": { - "optional": true - }, - "@vue/compiler-sfc": { - "optional": true - }, - "pinia": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/vuepress": { - "version": "2.0.0-rc.31", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-2.0.0-rc.31.tgz", - "integrity": "sha512-IcJ4E5iOL4aoERm5d+W4j6rJeH/gxDx+NGxvLYvEVPInmv2p90Mjj4VFjFoxqlWc7lIwwFNIVYpPI6dw0miH4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vuepress/cli": "2.0.0-rc.31", - "@vuepress/client": "2.0.0-rc.31", - "@vuepress/core": "2.0.0-rc.31", - "@vuepress/markdown": "2.0.0-rc.31", - "@vuepress/shared": "2.0.0-rc.31", - "@vuepress/utils": "2.0.0-rc.31", - "vue": "^3.5.40" - }, - "bin": { - "vuepress": "bin/vuepress.js", - "vuepress-vite": "bin/vuepress-vite.js", - "vuepress-webpack": "bin/vuepress-webpack.js" - }, - "engines": { - "node": ">=22.18.0" - }, - "peerDependencies": { - "@vuepress/bundler-vite": "2.0.0-rc.31", - "@vuepress/bundler-webpack": "2.0.0-rc.31", - "vue": "^3.5.40" - }, - "peerDependenciesMeta": { - "@vuepress/bundler-vite": { - "optional": true - }, - "@vuepress/bundler-webpack": { - "optional": true - } - } - }, - "node_modules/vuepress-plugin-remove-html-extension": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/vuepress-plugin-remove-html-extension/-/vuepress-plugin-remove-html-extension-1.26.0.tgz", - "integrity": "sha512-0SPSJHZPF3EoA6ENO5bQqWuJVYDUerJp7vTFQx6KqEPLmSpOMM7e8mf4rgT0FK5sORfJXL3WpjHCoXYrPjA25Q==", - "license": "MIT", - "dependencies": { - "@vuepress/core": "2.0.0-rc.30" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - } - }, - "node_modules/vuepress-plugin-remove-html-extension/node_modules/@vuepress/client": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-rc.30.tgz", - "integrity": "sha512-bIAY32Z3Rx6ONBriY+8K2K5wjKxQXzA1jMao4cVTOgMfapHyzhyfNCp1FTkWw6iHoccM9xIDniuyeT8W6JDWPg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^8.1.1", - "@vue/devtools-kit": "^8.1.1", - "@vuepress/shared": "2.0.0-rc.30", - "vue": "^3.5.34", - "vue-router": "^5.0.6" - } - }, - "node_modules/vuepress-plugin-remove-html-extension/node_modules/@vuepress/core": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-rc.30.tgz", - "integrity": "sha512-Sxe+S0xC0Yn7eh4P4TlnzolYqDBo62ZnfbY3qaLc5nlKW4sgJY+pJDBqSOHBL5Z5I4q0V43+9WULNtHXeDHVMg==", - "license": "MIT", - "dependencies": { - "@vuepress/client": "2.0.0-rc.30", - "@vuepress/markdown": "2.0.0-rc.30", - "@vuepress/shared": "2.0.0-rc.30", - "@vuepress/utils": "2.0.0-rc.30", - "vue": "^3.5.34" - } - }, - "node_modules/vuepress-plugin-remove-html-extension/node_modules/@vuepress/markdown": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-rc.30.tgz", - "integrity": "sha512-4wloGD4xBVm09yi48rPg9LOBXHh/aHGMxpks1GuF79yifS78n8cHSZilWaDryM5nimcUrPtK21XUAXFjyZHjBA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/plugin-component": "^3.0.2", - "@mdit-vue/plugin-frontmatter": "^3.0.2", - "@mdit-vue/plugin-headers": "^3.0.2", - "@mdit-vue/plugin-sfc": "^3.0.2", - "@mdit-vue/plugin-title": "^3.0.2", - "@mdit-vue/plugin-toc": "^3.0.2", - "@mdit-vue/shared": "^3.0.2", - "@mdit-vue/types": "^3.0.2", - "@types/markdown-it": "^14.1.2", - "@types/markdown-it-emoji": "^3.0.1", - "@vuepress/shared": "2.0.0-rc.30", - "@vuepress/utils": "2.0.0-rc.30", - "markdown-it": "^14.1.1", - "markdown-it-anchor": "^9.2.0", - "markdown-it-emoji": "^3.0.0", - "mdurl": "^2.0.0" - } - }, - "node_modules/vuepress-plugin-remove-html-extension/node_modules/@vuepress/shared": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-rc.30.tgz", - "integrity": "sha512-tW2bUobo96UQjBtnq6VkFG8ytWTwFT/3jjSVp75kDUb6N6D5ogXZdQIMvX7q+9OW0ogNKjLkCyRM3xK5eJbojA==", - "license": "MIT", - "dependencies": { - "@mdit-vue/types": "^3.0.2" - } - }, - "node_modules/vuepress-plugin-remove-html-extension/node_modules/@vuepress/utils": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-rc.30.tgz", - "integrity": "sha512-pIqvCPDAm3puCeJqYtVmxTN35Q3ApKYe5O6xPYt0SExnmmZI6W7QmV1ZsYwanjjjWME2Kqd4OrFVxEw7V+V6ng==", - "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.13", - "@types/fs-extra": "^11.0.4", - "@types/hash-sum": "^1.0.2", - "@types/picomatch": "^4.0.3", - "@vuepress/shared": "2.0.0-rc.30", - "debug": "^4.4.3", - "fs-extra": "^11.3.5", - "hash-sum": "^2.0.0", - "ora": "^9.4.0", - "picocolors": "^1.1.1", - "picomatch": "^4.0.4", - "tinyglobby": "^0.2.16", - "upath": "^3.0.7" - } - }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "license": "MIT" - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yoctocolors": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz", - "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/package.json b/package.json index 11ec8664..24c3c1f2 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,40 @@ { "name": "guide", "description": "Imagine a guide..", - "version": "3.0.0", + "version": "4.0.0", "private": true, "scripts": { - "dev": "vuepress dev guide", - "build": "NODE_OPTIONS=--max-old-space-size=8192 vuepress build guide" - }, - "devDependencies": { - "@vuepress/bundler-vite": "^2.0.0-rc.31", - "@vuepress/plugin-container": "^2.0.0-rc.28", - "@vuepress/plugin-search": "^2.0.0-rc.131", - "@vuepress/theme-default": "^2.0.0-rc.132", - "sass-embedded": "^1.100.0", - "vuepress": "^2.0.0-rc.31" + "dev": "next dev -p 8080", + "build": "next build && node scripts/build-docs-pages.mjs", + "start": "serve out -l 8080", + "types:check": "next typegen && tsc --noEmit" }, "dependencies": { - "@discord-message-components/vue": "^0.2.1", - "@vueuse/core": "^14.4.0", - "cheerio": "^1.0.0-rc.10", - "gray-matter": "^4.0.3", - "vuepress-plugin-remove-html-extension": "^1.26.0" + "@skyra/discord-components-core": "^4.0.2", + "@skyra/discord-components-react": "^4.0.2", + "cnfast": "^0.1.0", + "fumadocs-core": "16.14.0", + "fumadocs-mdx": "15.2.1", + "fumadocs-ui": "npm:@fumadocs/base-ui@16.14.0", + "lucide-react": "^1.27.0", + "next": "16.2.12", + "next-themes": "^0.4.6", + "react": "^19.2.8", + "react-dom": "^19.2.8" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.3.3", + "@types/mdast": "^4.0.4", + "@types/mdx": "^2.0.14", + "@types/node": "^26.1.2", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "cheerio": "^1.2.0", + "postcss": "^8.5.24", + "serve": "^14.2.6", + "tailwindcss": "^4.3.3", + "typescript": "^6.0.3" }, - "main": "index.js", "repository": { "type": "git", "url": "git+https://github.com/raspdevpy/ccdoc.git" @@ -33,8 +45,5 @@ "bugs": { "url": "https://github.com/raspdevpy/ccdoc/issues" }, - "homepage": "https://github.com/raspdevpy/ccdoc", - "allowScripts": { - "vue-demi": true - } + "homepage": "https://github.com/raspdevpy/ccdoc" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..67ed202e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4418 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@skyra/discord-components-core': + specifier: ^4.0.2 + version: 4.0.2 + '@skyra/discord-components-react': + specifier: ^4.0.2 + version: 4.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + cnfast: + specifier: ^0.1.0 + version: 0.1.0 + fumadocs-core: + specifier: 16.14.0 + version: 16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3) + fumadocs-mdx: + specifier: 15.2.1 + version: 15.2.1(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)(supports-color@7.2.0) + fumadocs-ui: + specifier: npm:@fumadocs/base-ui@16.14.0 + version: '@fumadocs/base-ui@16.14.0(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3)' + lucide-react: + specifier: ^1.27.0 + version: 1.28.0(react@19.2.8) + next: + specifier: 16.2.12 + version: 16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: + specifier: ^19.2.8 + version: 19.2.8 + react-dom: + specifier: ^19.2.8 + version: 19.2.8(react@19.2.8) + devDependencies: + '@tailwindcss/postcss': + specifier: ^4.3.3 + version: 4.3.3 + '@types/mdast': + specifier: ^4.0.4 + version: 4.0.4 + '@types/mdx': + specifier: ^2.0.14 + version: 2.0.14 + '@types/node': + specifier: ^26.1.2 + version: 26.1.2 + '@types/react': + specifier: ^19.2.17 + version: 19.2.18 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.4(@types/react@19.2.18) + cheerio: + specifier: ^1.2.0 + version: 1.2.0 + postcss: + specifier: ^8.5.24 + version: 8.5.25 + serve: + specifier: ^14.2.6 + version: 14.2.6(supports-color@7.2.0) + tailwindcss: + specifier: ^4.3.3 + version: 4.3.3 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@base-ui/react@1.6.0': + resolution: {integrity: sha512-/jzjTWJYXhRFO45Bev9lc3cHbmjzCMpUqbMZ2AgKy/z25mY9B6shGSNcXcjQar9n5doM0KYW1W8fcFv2jZBuMw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@date-fns/tz': ^1.2.0 + '@types/react': ^17 || ^18 || ^19 + date-fns: ^4.0.0 + react: ^17 || ^18 || ^19 + react-dom: ^17 || ^18 || ^19 + peerDependenciesMeta: + '@date-fns/tz': + optional: true + '@types/react': + optional: true + date-fns: + optional: true + + '@base-ui/utils@0.3.1': + resolution: {integrity: sha512-gFFiltORVmW/N6IILTGxizP3PBpVpysqML1ALY5Vk0mH+7faVkCknOU31goYHN5Aoek2dkjxva1XOD2Ce9WuIg==} + peerDependencies: + '@types/react': ^17 || ^18 || ^19 + react: ^17 || ^18 || ^19 + react-dom: ^17 || ^18 || ^19 + peerDependenciesMeta: + '@types/react': + optional: true + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@fuma-translate/react@1.0.2': + resolution: {integrity: sha512-uOiOtBx3nRXR8Nu1GzBf1tApgF1FErDBTHxRIAQeyQdyOoZbrNRN6H4kDCWObY4qyGeGbHydG0DHzgeUgFDMIw==} + peerDependencies: + '@types/react': '*' + react: ^19.2.0 + react-dom: ^19.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@fumadocs/base-ui@16.14.0': + resolution: {integrity: sha512-mJ0PVUtKGr/PdwIb3S0CYgUr+U5RxQ+SwnaM+m4yxl7MvVyvaP4DMtU791POOVzF3tYpYa0xEEp1CQjM6A0r5w==} + peerDependencies: + '@types/mdx': '*' + '@types/react': '*' + fumadocs-core: 16.14.0 + next: 16.x.x + react: ^19.2.0 + react-dom: ^19.2.0 + takumi-js: '*' + peerDependenciesMeta: + '@types/mdx': + optional: true + '@types/react': + optional: true + next: + optional: true + takumi-js: + optional: true + + '@fumadocs/tailwind@0.1.1': + resolution: {integrity: sha512-BnPe52UxSaG8yKlHMKBxXw8h6GpK5qO55ci6+Qd5JnquTvIw6SpfbC1P+qAi82PuPWv1KZAWY8bxRk4+x9ctXw==} + peerDependencies: + tailwindcss: ^4.0.0 + peerDependenciesMeta: + tailwindcss: + optional: true + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@lit-labs/ssr-dom-shim@1.6.0': + resolution: {integrity: sha512-VHb0ALPMTlgKjM6yIxxoQNnpKyUKLD04VzeQdsiXkMqkvYlAHxq9glGLmgbb889/1GsohSOAjvQYoiBppXFqrQ==} + + '@lit/context@1.1.6': + resolution: {integrity: sha512-M26qDE6UkQbZA2mQ3RjJ3Gzd8TxP+/0obMgE5HfkfLhEEyYE3Bui4A5XHiGPjy0MUGAyxB3QgVuw2ciS0kHn6A==} + + '@lit/react@1.0.8': + resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + + '@lit/reactive-element@2.1.2': + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@next/env@16.2.12': + resolution: {integrity: sha512-d0Z5Bc13Fa4nR8pFAKx2jay2yhJM16vlfHbTzYnUQAxlNb6B6lmn4hjt69lYNt4kRtyYP6gEM49lPRHNbIyneg==} + + '@next/swc-darwin-arm64@16.2.12': + resolution: {integrity: sha512-0W1R0teHWJrqKX0FH20IzzIWAOuGtBxPGuObrxy1lE8hQvCFj49KE8a3WUg0D7sq6rn6zkM4c7YGUnhudBS6oA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.2.12': + resolution: {integrity: sha512-Hy5Ls099+aFUmOLmIgPfLqNi6iCwhL3uQCssz5rWk+5Nkc6TUKCE83DY5BbNylfm3+mfwcSFnLRfrZDJhVxdtw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.2.12': + resolution: {integrity: sha512-+YqU2h1cQkHsGfvjAsrSmst8UIFBibBGm5x3Xgel8NLMiDQtNOM4sM2GOEMvG5YiOBNeN/Ykk8cQC2S0Xrqljg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.2.12': + resolution: {integrity: sha512-0qjhiYBaKAqF63LA1ZWAAnKTzFUguAaZiRa5etMLGGPj/B6uEVjtIZldIzFEp3wHlB0koK6aTzqPtSdplTCjoA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.2.12': + resolution: {integrity: sha512-7A3q26W+h7gnA15uqBToNuDqBEFZZcqh0mW2mn4AJh/G5pdg2RVE3n4slzLEliASZFG3NmsbEzng/x2Sh09mBg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.2.12': + resolution: {integrity: sha512-qSjL/uppm+cbh21s72Ss8gkiOhQ4dExWHNGOWy6eZV7STj5WsKehgxT61beSsOj+YYQuTplL376lOCdMQU5T8w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.2.12': + resolution: {integrity: sha512-X6hzsOUJac/e7AWSbn9gQ9nzHld1xWP5iyjHpYWvud8pufB679O1xg4JDyKr8Xd69Jvd+kM2Der6uftiZCmjYA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.2.12': + resolution: {integrity: sha512-F6fakeHuFTLOPt0bslQJdf+xtT+WIP9DVn/m4y1w1mRnVPyh3D/cNvzlRkxM444xfm+IvvYNSOrKiA2CDJ0Uxw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@shikijs/core@4.4.1': + resolution: {integrity: sha512-VeR2CY6Nn9/WbisoYLOQZ7HZOnwTrpBuOw4wExjqLnBCi62BNWynBUO6K2uPIASPFJwAv7cX1fUu+LrPlSstcw==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.4.1': + resolution: {integrity: sha512-6U4lJBh8LTvIkEVqRHv/rr3ruwtO6IweFQt1ME1ntHJMGHS+6N86vfYGO1o8c/DtOCTia2lfhdQBtBrps1sDfQ==} + engines: {node: '>=20'} + + '@shikijs/engine-oniguruma@4.4.1': + resolution: {integrity: sha512-p23RugMKss0r5DAtRJW1yAXUDl60JvhQYV20yuxei//26JyDSJefV3umyWzzwep2weblMnJGDYahuti6XkcMgA==} + engines: {node: '>=20'} + + '@shikijs/langs@4.4.1': + resolution: {integrity: sha512-xb2kCMloBCIraIy2fS5MW0t/BxVY3q2nDyQKBoeSeq6KNrQbShHetCFlw2n35fGIJ6t3+hXDLQogP5ir9O9bvA==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.4.1': + resolution: {integrity: sha512-ko2OfDoG89YuQ7xL5LtcQiWKb7NIv1Ephb7g48TVU198OzAMLC8lXVEwaJGHK4sUMYrfAGJDqYmNLOLiW/Kz8w==} + engines: {node: '>=20'} + + '@shikijs/themes@4.4.1': + resolution: {integrity: sha512-wudOaoFro+/Zl9gQv2W1Ur5XlVduqvTuYLI483Xi0wgc1A+cy1hfB2r6ac6ufBgF+ID7KJEW7L41MHrzQ4wH+w==} + engines: {node: '>=20'} + + '@shikijs/types@4.4.1': + resolution: {integrity: sha512-GOwCLQDHM5EjGUWNPrhzJbr6JP8V/Dx/CDVkWvbZ1Avw5JFnNUckrgbLmE07qtg4WlW7Q7QFndhjIkeU9XMPvw==} + engines: {node: '>=20'} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@skyra/discord-components-core@4.0.2': + resolution: {integrity: sha512-1AvNBWZ7clY9jVZzA9Lmxr2wXddXA2lWT/kknFa2vO0p4ON8vz2uqbPrmzSStZGVHqT4jk5A6MTFInm/K0qQIw==} + engines: {node: '>=v18'} + + '@skyra/discord-components-react@4.0.2': + resolution: {integrity: sha512-K3wF8Op/zsHi5Y6cMVwACh/Df0FLkVLkYUUAJ+KnRVfuYM5id9i82jVnInQcmcw/jdR6FcUp2dOGSMINGUG2Qw==} + engines: {node: '>=v18'} + peerDependencies: + react: 16.8.x || 17.x || 18.x || 19.x + react-dom: 16.8.x || 17.x || 18.x || 19.x + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.3.3': + resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} + + '@tailwindcss/oxide-android-arm64@4.3.3': + resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.3': + resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.3': + resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.3.3': + resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.14': + resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + + '@yuku-analyzer/binding-android-arm64@0.8.3': + resolution: {integrity: sha512-t1H+d/ubotHLJPQ2gTPZ9C+XD5ZYsxasmxi8wBsUm9WONr0DEFtlxwIgvGZS1Kvlc+sZH9xErCtnKS+odKCabA==} + cpu: [arm64] + os: [android] + + '@yuku-analyzer/binding-darwin-arm64@0.8.3': + resolution: {integrity: sha512-2SULWSl6ZJb9mSmlJTw+tzHtYu4PUV50TQDnB3x3VpxHNextIj4Cc2MPO+KYxnETpKliD9ufaxjViU0EPbaRKw==} + cpu: [arm64] + os: [darwin] + + '@yuku-analyzer/binding-darwin-x64@0.8.3': + resolution: {integrity: sha512-CUnZOy4xKlEZyZddO14sodw7dxlJjm+ELTRRvIStf+Q3UVIwqH8gfvrQc1oFFWdYAQxMNVG+xtzAkcC1wL0IAA==} + cpu: [x64] + os: [darwin] + + '@yuku-analyzer/binding-freebsd-x64@0.8.3': + resolution: {integrity: sha512-hmzVEB0hl1NwDw0WhTam9BL5MB+WQ23CCWeB0PN5o7+8x/k69v816VipV+67eFkagjWEFkF32c586qYUT0H5wQ==} + cpu: [x64] + os: [freebsd] + + '@yuku-analyzer/binding-linux-arm-gnu@0.8.3': + resolution: {integrity: sha512-N7o78i1TGloyw9hNbFzD5qts4DQFz+pMBywPyPZ0P4asTjCIZFxQlJwQyvFIqI/ddPT6WSMbwyIdwnA4HNQP4w==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-analyzer/binding-linux-arm-musl@0.8.3': + resolution: {integrity: sha512-G/7tB72G7nkNHHd6kW0wUjfCCJHNAXHjWb5zFusLhR5JR/qG1mtPCHZKh8kcYuXVtdx10EQUBvDvwYR8qcg8Fw==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-analyzer/binding-linux-arm64-gnu@0.8.3': + resolution: {integrity: sha512-RzZs4PTRMZkOKlxRz3TgQcwYURqsNDJQsCZiGDsMr6oujUenAA55g83G8R4qrp4AP8XzupuctiN2Mj94ix5C9w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-analyzer/binding-linux-arm64-musl@0.8.3': + resolution: {integrity: sha512-bhVhTXNkSmIY4XW7UBHjv/FcFzIKFlWAdYl7JgznwoN9f30Gm75hakEImFVNI1Cyapo1IgDzBttBEkcgtr3hjQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-analyzer/binding-linux-x64-gnu@0.8.3': + resolution: {integrity: sha512-GchPBviJ2WobjhNwEUb7csnCTa900jwUy98OIhvJ0fktlMXSw4a49jztUobIaThvR1prfa280XcIwwUpFrTJtQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-analyzer/binding-linux-x64-musl@0.8.3': + resolution: {integrity: sha512-FmKdZ8eJjP405zsjkfCq78L5+zLYMfh2jit5xVUkc5FHFkekILTP3/l4A5WbAg3vSlsHuU8IK8qTMP/I/DdjnQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-analyzer/binding-win32-arm64@0.8.3': + resolution: {integrity: sha512-QkpBczJfr462MvOY7kWXfv0NkLmjiUNaPwwty2lwZv2Xk1NKuYPiAjcdyqC59nsoftp1xf8qjDKUtF5ykuhoRQ==} + cpu: [arm64] + os: [win32] + + '@yuku-analyzer/binding-win32-x64@0.8.3': + resolution: {integrity: sha512-bgdgP+I/+lYIaG6xWv0L8VpwSVZ+FUsqTju+xFGhU2mkhgmU1e5PYle7Vl8ZsS7R4Udf28j66L1lXeLEyWvwhg==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.8.3': + resolution: {integrity: sha512-9LN3HYs3A9qSPVFunsxlbfwBcUgexti3TmhOzIxB/UH8zFuaHQJXTRDcN17DW6cp1GsyZtiZA7f18uIra36Jag==} + + '@zeit/schemas@2.36.0': + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.11.10: + resolution: {integrity: sha512-35JEvJ5/KKlbCHjMCsONI2w6HE88STjVdHk+C7d8LtcFxUjZR1KeLP9izofn2qs0KUxX5r4z73bwH/rd+JHacw==} + engines: {node: '>=6.0.0'} + hasBin: true + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} + engines: {node: '>=20.18.1'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cnfast@0.1.0: + resolution: {integrity: sha512-rH0jBKeLkVrK7NsZ5Ba2l7WdMBmm1k0FMpABeXUU1PgTUxbz3261gEuCSsrYuXo4BwAe3yCcIbQ93YyS52lOGQ==} + hasBin: true + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + + enhanced-resolve@5.24.5: + resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@3.5.0: + resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-uri@3.1.5: + resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + framer-motion@12.43.0: + resolution: {integrity: sha512-1eaL3RvR/kAlbG7UYcpMptEyzPoENO0c6w7ZnB3/hh2vSAz/6uGAFn6fdoqTBguNstf3MsFhJHsD/0DHiclG+g==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + fumadocs-core@16.14.0: + resolution: {integrity: sha512-CQBsVm2XoxytoK5iTxd2Q3L76XBXY9yrWdThH9iJxZPcZ4aHED7YJCYuHPHZDIWg80fy1UAgVc6ogfE+24jTDA==} + peerDependencies: + '@mdx-js/mdx': '*' + '@mixedbread/sdk': 0.x.x + '@orama/core': 1.x.x + '@oramacloud/client': 2.x.x + '@tanstack/react-router': 1.x.x + '@types/estree-jsx': '*' + '@types/hast': '*' + '@types/mdast': '*' + '@types/react': '*' + algoliasearch: 5.x.x + flexsearch: '*' + lucide-react: '*' + next: 16.x.x + react: ^19.2.0 + react-dom: ^19.2.0 + react-router: 7.x.x || 8.x.x + waku: '*' + zod: 4.x.x + peerDependenciesMeta: + '@mdx-js/mdx': + optional: true + '@mixedbread/sdk': + optional: true + '@orama/core': + optional: true + '@oramacloud/client': + optional: true + '@tanstack/react-router': + optional: true + '@types/estree-jsx': + optional: true + '@types/hast': + optional: true + '@types/mdast': + optional: true + '@types/react': + optional: true + algoliasearch: + optional: true + flexsearch: + optional: true + lucide-react: + optional: true + next: + optional: true + react: + optional: true + react-dom: + optional: true + react-router: + optional: true + waku: + optional: true + zod: + optional: true + + fumadocs-mdx@15.2.1: + resolution: {integrity: sha512-lyx35MAFAj9yuLPudNoRGGvauZlT1xRLLw17P0jnvhXikrJNC8mAeg/4WIity5K+3V6ZetBQ2PYIcnli450vMg==} + hasBin: true + peerDependencies: + '@fumadocs/satteri': 0.x.x + '@types/mdast': '*' + '@types/mdx': '*' + '@types/react': '*' + fumadocs-core: ^16.7.0 + mdast-util-directive: '*' + next: ^15.3.0 || ^16.0.0 + react: ^19.2.0 + rolldown: '*' + satteri: ^0.9.4 + vite: 7.x.x || 8.x.x + peerDependenciesMeta: + '@fumadocs/satteri': + optional: true + '@types/mdast': + optional: true + '@types/mdx': + optional: true + '@types/react': + optional: true + mdast-util-directive: + optional: true + next: + optional: true + react: + optional: true + rolldown: + optional: true + satteri: + optional: true + vite: + optional: true + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + lit-element@4.2.2: + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} + + lit-html@3.3.3: + resolution: {integrity: sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==} + + lit@3.3.3: + resolution: {integrity: sha512-fycuvZg/hkpozL00lm1pEJH5nN/lr9ZXd6mJI2HSN4+Bzc+LDNdEApJ6HFbPkdFNHLvOplIIuJvxkS4XUxqirw==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lucide-react@1.28.0: + resolution: {integrity: sha512-fARAFJULsGuDDydjp6+6blekG/sBIM29TerzLjc9bQUKAcEfrSc4ZQKb25KRz4OMKd87cZTb5dgq0w/T6KufVg==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magic-string@1.1.0: + resolution: {integrity: sha512-kS3VHe0nEPST2saQV4Rbkchcd3UBRkVTQHo1D3h/ZTwFDhai/mfKkmtPAtD129EOI7K3HlHIsFOt0WrI2/oU9g==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + motion-dom@12.43.0: + resolution: {integrity: sha512-azKON4d9S65PEoFUiQTMTgPheEmzf2QngdRc50AKfJp9Q9mmcBVw22c8eMq9k8kxOFHdL7+WZY7N/5F/lwiDag==} + + motion-utils@12.39.0: + resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} + + motion@12.43.0: + resolution: {integrity: sha512-BQgQbSa9Hn3/mtbib0MK53y6JSANa+YKUKlaYnWzAVDH424RYQ5LVpV3pNiWH00BA2z4ojsSdMzqT7g2FQwjuQ==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.2.12: + resolution: {integrity: sha512-iD59eYQWmbFcEbX7v/acG5DRym9iw1DdaPoD0WTA920naWsE25wShzJW4+UvAs8MK9EC2kBfIH6vtto1H1PHGw==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-to-yarn@3.2.0: + resolution: {integrity: sha512-K1HmQeZT2HrjpsR6KgqbN2FAXL2NrJJmNUSD9ck7HGTVu1JKXox8n9SB+tjbU8m8JGLF4OscrroPepew/L7/Xw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} + engines: {node: ^10 || ^12 || >=14} + + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + reselect@5.2.0: + resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + serve-handler@6.1.7: + resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} + + serve@14.2.6: + resolution: {integrity: sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==} + engines: {node: '>= 14'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@4.4.1: + resolution: {integrity: sha512-rFP+iYKzjLEIqiMiKANhARqiAbk4deDhWnBtnUO/K0D0dPxMGDH4N0FVfBY/VeI+lPrV4wNGCHQZp7EOr7NNBw==} + engines: {node: '>=20'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tailwindcss@4.3.3: + resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + undici@7.29.0: + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yuku-analyzer@0.8.3: + resolution: {integrity: sha512-u/kRdlS/Hcqo78pevGoKCcjM4ymcquFlw2qxZgZy6TPkyoExJLww8pnbR8Yck8wO7f9fQ4ymjCdFlhJ1VTzzBw==} + + yuku-ast@0.8.3: + resolution: {integrity: sha512-8x34yU5uhHUnJXzy2Qvjvec/vE9BzS0/2khVT1MsLmSLO/P8Q1Wp8IxHv+IhD+HMYETk6kherOSvP4JPWw2joQ==} + + zbsearch@3.3.4: + resolution: {integrity: sha512-xGsv9rIwrili/fpLpVwmnCovEcvaAJg1ey+3Ur0+m3x1mnGoVO71iAwn4op420QLGNsQJNmScZjFq5TQ+cRi/g==} + engines: {node: '>= 20.0.0'} + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@babel/runtime@7.29.7': {} + + '@base-ui/react@1.6.0(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/utils': 0.3.1(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@floating-ui/utils': 0.2.12 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + use-sync-external-store: 1.6.0(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + '@base-ui/utils@0.3.1(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@babel/runtime': 7.29.7 + '@floating-ui/utils': 0.2.12 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + reselect: 5.2.0 + use-sync-external-store: 1.6.0(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@floating-ui/utils@0.2.12': {} + + '@fuma-translate/react@1.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + '@fumadocs/base-ui@16.14.0(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3)': + dependencies: + '@base-ui/react': 1.6.0(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@fuma-translate/react': 1.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@fumadocs/tailwind': 0.1.1(tailwindcss@4.3.3) + class-variance-authority: 0.7.1 + cnfast: 0.1.0 + fumadocs-core: 16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3) + lucide-react: 1.28.0(react@19.2.8) + motion: 12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next-themes: 0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.18)(react@19.2.8) + rehype-raw: 7.0.0 + scroll-into-view-if-needed: 3.1.0 + shiki: 4.4.1 + unist-util-visit: 5.1.0 + optionalDependencies: + '@types/mdx': 2.0.14 + '@types/react': 19.2.18 + next: 16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + transitivePeerDependencies: + - '@date-fns/tz' + - '@emotion/is-prop-valid' + - date-fns + - tailwindcss + + '@fumadocs/tailwind@0.1.1(tailwindcss@4.3.3)': + optionalDependencies: + tailwindcss: 4.3.3 + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@lit-labs/ssr-dom-shim@1.6.0': {} + + '@lit/context@1.1.6': + dependencies: + '@lit/reactive-element': 2.1.2 + + '@lit/react@1.0.8(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@lit/reactive-element@2.1.2': + dependencies: + '@lit-labs/ssr-dom-shim': 1.6.0 + + '@mdx-js/mdx@3.1.1(supports-color@7.2.0)': + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdx': 2.0.14 + acorn: 8.18.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.18.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0(supports-color@7.2.0) + remark-mdx: 3.1.1(supports-color@7.2.0) + remark-parse: 11.0.0(supports-color@7.2.0) + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@next/env@16.2.12': {} + + '@next/swc-darwin-arm64@16.2.12': + optional: true + + '@next/swc-darwin-x64@16.2.12': + optional: true + + '@next/swc-linux-arm64-gnu@16.2.12': + optional: true + + '@next/swc-linux-arm64-musl@16.2.12': + optional: true + + '@next/swc-linux-x64-gnu@16.2.12': + optional: true + + '@next/swc-linux-x64-musl@16.2.12': + optional: true + + '@next/swc-win32-arm64-msvc@16.2.12': + optional: true + + '@next/swc-win32-x64-msvc@16.2.12': + optional: true + + '@shikijs/core@4.4.1': + dependencies: + '@shikijs/primitive': 4.4.1 + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + + '@shikijs/primitive@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/themes@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + + '@shikijs/types@4.4.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@skyra/discord-components-core@4.0.2': + dependencies: + '@lit/context': 1.1.6 + lit: 3.3.3 + + '@skyra/discord-components-react@4.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@lit/react': 1.0.8(@types/react@19.2.18) + '@skyra/discord-components-core': 4.0.2 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@types/react' + + '@standard-schema/spec@1.1.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.3.3': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.24.5 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.3 + + '@tailwindcss/oxide-android-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide@4.3.3': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-x64': 4.3.3 + '@tailwindcss/oxide-freebsd-x64': 4.3.3 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.3 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-x64-musl': 4.3.3 + '@tailwindcss/oxide-wasm32-wasi': 4.3.3 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 + + '@tailwindcss/postcss@4.3.3': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.3.3 + '@tailwindcss/oxide': 4.3.3 + postcss: 8.5.25 + tailwindcss: 4.3.3 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@1.0.9': {} + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.14': {} + + '@types/ms@2.1.0': {} + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + '@types/react-dom@19.2.4(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + + '@types/trusted-types@2.0.7': {} + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@ungap/structured-clone@1.3.3': {} + + '@yuku-analyzer/binding-android-arm64@0.8.3': + optional: true + + '@yuku-analyzer/binding-darwin-arm64@0.8.3': + optional: true + + '@yuku-analyzer/binding-darwin-x64@0.8.3': + optional: true + + '@yuku-analyzer/binding-freebsd-x64@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-arm-gnu@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-arm-musl@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-arm64-gnu@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-arm64-musl@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-x64-gnu@0.8.3': + optional: true + + '@yuku-analyzer/binding-linux-x64-musl@0.8.3': + optional: true + + '@yuku-analyzer/binding-win32-arm64@0.8.3': + optional: true + + '@yuku-analyzer/binding-win32-x64@0.8.3': + optional: true + + '@yuku-toolchain/types@0.8.3': {} + + '@zeit/schemas@2.36.0': {} + + acorn-jsx@5.3.2(acorn@8.18.0): + dependencies: + acorn: 8.18.0 + + acorn@8.18.0: {} + + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.5 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + arch@2.2.0: {} + + arg@5.0.2: {} + + astring@1.9.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.11.10: {} + + boolbase@1.0.0: {} + + boxen@7.0.0: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.0.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + brace-expansion@1.1.18: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + camelcase@7.0.1: {} + + caniuse-lite@1.0.30001806: {} + + ccount@2.0.1: {} + + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.0.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.2.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.29.0 + whatwg-mimetype: 4.0.0 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-boxes@3.0.0: {} + + client-only@0.0.1: {} + + clipboardy@3.0.0: + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + + clsx@2.1.1: {} + + cnfast@0.1.0: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1(supports-color@7.2.0): + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9(supports-color@7.2.0) + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + compute-scroll-into-view@3.1.1: {} + + concat-map@0.0.1: {} + + content-disposition@0.5.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-what@6.2.2: {} + + csstype@3.2.3: {} + + debug@2.6.9(supports-color@7.2.0): + dependencies: + ms: 2.0.0 + optionalDependencies: + supports-color: 7.2.0 + + debug@4.4.3(supports-color@7.2.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 7.2.0 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + deep-extend@0.6.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + enhanced-resolve@5.24.5: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.18.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escape-string-regexp@5.0.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.9 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-value-to-estree@3.5.0: + dependencies: + '@types/estree': 1.0.9 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-uri@3.1.5: {} + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + framer-motion@12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + motion-dom: 12.43.0 + motion-utils: 12.39.0 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3): + dependencies: + estree-util-value-to-estree: 3.5.0 + github-slugger: 2.0.0 + hast-util-to-estree: 3.1.3(supports-color@7.2.0) + hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) + mdast-util-mdx: 3.0.0(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + npm-to-yarn: 3.2.0 + remark: 15.0.1(supports-color@7.2.0) + remark-gfm: 4.0.1(supports-color@7.2.0) + remark-rehype: 11.1.2 + scroll-into-view-if-needed: 3.1.0 + shiki: 4.4.1 + tinyglobby: 0.2.17 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + yaml: 2.9.0 + zbsearch: 3.3.4 + optionalDependencies: + '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/react': 19.2.18 + lucide-react: 1.28.0(react@19.2.8) + next: 16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + transitivePeerDependencies: + - supports-color + + fumadocs-mdx@15.2.1(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react@19.2.8)(supports-color@7.2.0): + dependencies: + '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) + '@standard-schema/spec': 1.1.0 + chokidar: 5.0.0 + esbuild: 0.28.1 + estree-util-value-to-estree: 3.5.0 + fumadocs-core: 16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3) + github-slugger: 2.0.0 + magic-string: 1.1.0 + mdast-util-mdx: 3.0.0(supports-color@7.2.0) + picocolors: 1.1.1 + picomatch: 4.0.5 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + yaml: 2.9.0 + yuku-analyzer: 0.8.3 + zod: 4.4.3 + optionalDependencies: + '@types/mdast': 4.0.4 + '@types/mdx': 2.0.14 + '@types/react': 19.2.18 + next: 16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + transitivePeerDependencies: + - supports-color + + get-nonce@1.0.1: {} + + get-stream@6.0.1: {} + + github-slugger@2.0.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.2.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.5 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.3 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-estree@3.1.3(supports-color@7.2.0): + dependencies: + '@types/estree': 1.0.9 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) + mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) + mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0): + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) + mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) + mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.5 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + + html-void-elements@3.0.0: {} + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + + human-signals@2.1.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ini@1.3.8: {} + + inline-style-parser@0.2.7: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-hexadecimal@2.0.1: {} + + is-plain-obj@4.1.0: {} + + is-port-reachable@4.0.0: {} + + is-stream@2.0.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isexe@2.0.0: {} + + jiti@2.7.0: {} + + json-schema-traverse@1.0.0: {} + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lit-element@4.2.2: + dependencies: + '@lit-labs/ssr-dom-shim': 1.6.0 + '@lit/reactive-element': 2.1.2 + lit-html: 3.3.3 + + lit-html@3.3.3: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@3.3.3: + dependencies: + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.3 + + longest-streak@3.1.0: {} + + lucide-react@1.28.0(react@19.2.8): + dependencies: + react: 19.2.8 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magic-string@1.1.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.3(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2(supports-color@7.2.0) + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0(supports-color@7.2.0): + dependencies: + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0(supports-color@7.2.0) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@7.2.0) + mdast-util-gfm-table: 2.0.0(supports-color@7.2.0) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1(supports-color@7.2.0): + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0): + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0(supports-color@7.2.0): + dependencies: + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) + mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) + mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0): + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.3 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + merge-stream@2.0.0: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.9 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.9 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2(supports-color@7.2.0): + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3(supports-color@7.2.0) + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + mime-db@1.33.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + + mimic-fn@2.1.0: {} + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.18 + + minimist@1.2.8: {} + + motion-dom@12.43.0: + dependencies: + motion-utils: 12.39.0 + + motion-utils@12.39.0: {} + + motion@12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + framer-motion: 12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + tslib: 2.8.1 + optionalDependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + ms@2.0.0: {} + + ms@2.1.3: {} + + nanoid@3.3.16: {} + + negotiator@0.6.4: {} + + next-themes@0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + '@next/env': 16.2.12 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.11.10 + caniuse-lite: 1.0.30001806 + postcss: 8.4.31 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + styled-jsx: 5.1.6(react@19.2.8) + optionalDependencies: + '@next/swc-darwin-arm64': 16.2.12 + '@next/swc-darwin-x64': 16.2.12 + '@next/swc-linux-arm64-gnu': 16.2.12 + '@next/swc-linux-arm64-musl': 16.2.12 + '@next/swc-linux-x64-gnu': 16.2.12 + '@next/swc-linux-x64-musl': 16.2.12 + '@next/swc-win32-arm64-msvc': 16.2.12 + '@next/swc-win32-x64-msvc': 16.2.12 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-to-yarn@3.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + on-headers@1.1.0: {} + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-is-inside@1.0.2: {} + + path-key@3.1.1: {} + + path-to-regexp@3.3.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.5: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.25: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + property-information@7.2.0: {} + + range-parser@1.2.0: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + react-remove-scroll@2.7.2(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.18)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.18)(react@19.2.8) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.18)(react@19.2.8) + use-sidecar: 1.1.3(@types/react@19.2.18)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.18 + + react-style-singleton@2.2.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + get-nonce: 1.0.1 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + react@19.2.8: {} + + readdirp@5.0.0: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.18.0): + dependencies: + acorn: 8.18.0 + acorn-jsx: 5.3.2(acorn@8.18.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.9 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.9 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + registry-auth-token@3.3.2: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.5 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-recma@1.0.0(supports-color@7.2.0): + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + hast-util-to-estree: 3.1.3(supports-color@7.2.0) + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0(supports-color@7.2.0) + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0(supports-color@7.2.0) + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.1(supports-color@7.2.0): + dependencies: + mdast-util-mdx: 3.0.0(supports-color@7.2.0) + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remark@15.0.1(supports-color@7.2.0): + dependencies: + '@types/mdast': 4.0.4 + remark-parse: 11.0.0(supports-color@7.2.0) + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + require-from-string@2.0.2: {} + + reselect@5.2.0: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + semver@7.8.5: + optional: true + + serve-handler@6.1.7: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.5 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + + serve@14.2.6(supports-color@7.2.0): + dependencies: + '@zeit/schemas': 2.36.0 + ajv: 8.18.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.8.1(supports-color@7.2.0) + is-port-reachable: 4.0.0 + serve-handler: 6.1.7 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@4.4.1: + dependencies: + '@shikijs/core': 4.4.1 + '@shikijs/engine-javascript': 4.4.1 + '@shikijs/engine-oniguruma': 4.4.1 + '@shikijs/langs': 4.4.1 + '@shikijs/themes': 4.4.1 + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + signal-exit@3.0.7: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + strip-json-comments@2.0.1: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + styled-jsx@5.1.6(react@19.2.8): + dependencies: + client-only: 0.0.1 + react: 19.2.8 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tailwindcss@4.3.3: {} + + tapable@2.3.3: {} + + tinyexec@1.3.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + tslib@2.8.1: {} + + type-fest@2.19.0: {} + + typescript@6.0.3: {} + + undici-types@8.3.0: {} + + undici@7.29.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + update-check@1.5.4: + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + + use-callback-ref@1.3.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + use-sidecar@1.1.3(@types/react@19.2.18)(react@19.2.8): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.18 + + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 + + vary@1.1.2: {} + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + web-namespaces@2.0.1: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + yaml@2.9.0: {} + + yuku-analyzer@0.8.3: + dependencies: + '@yuku-toolchain/types': 0.8.3 + yuku-ast: 0.8.3 + optionalDependencies: + '@yuku-analyzer/binding-android-arm64': 0.8.3 + '@yuku-analyzer/binding-darwin-arm64': 0.8.3 + '@yuku-analyzer/binding-darwin-x64': 0.8.3 + '@yuku-analyzer/binding-freebsd-x64': 0.8.3 + '@yuku-analyzer/binding-linux-arm-gnu': 0.8.3 + '@yuku-analyzer/binding-linux-arm-musl': 0.8.3 + '@yuku-analyzer/binding-linux-arm64-gnu': 0.8.3 + '@yuku-analyzer/binding-linux-arm64-musl': 0.8.3 + '@yuku-analyzer/binding-linux-x64-gnu': 0.8.3 + '@yuku-analyzer/binding-linux-x64-musl': 0.8.3 + '@yuku-analyzer/binding-win32-arm64': 0.8.3 + '@yuku-analyzer/binding-win32-x64': 0.8.3 + + yuku-ast@0.8.3: + dependencies: + '@yuku-toolchain/types': 0.8.3 + + zbsearch@3.3.4: {} + + zod@4.4.3: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..dbb26c82 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +allowBuilds: + esbuild: true + sharp: true diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 00000000..297374d8 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; + +export default config; diff --git a/guide/.vuepress/public/bot-profile.png b/public/bot-profile.png similarity index 100% rename from guide/.vuepress/public/bot-profile.png rename to public/bot-profile.png diff --git a/guide/.vuepress/public/favicon.ico b/public/favicon.ico similarity index 100% rename from guide/.vuepress/public/favicon.ico rename to public/favicon.ico diff --git a/guide/.vuepress/public/images/guide/creating-cc/0.png b/public/images/guide/creating-cc/0.png similarity index 100% rename from guide/.vuepress/public/images/guide/creating-cc/0.png rename to public/images/guide/creating-cc/0.png diff --git a/guide/.vuepress/public/images/guide/creating-cc/1.png b/public/images/guide/creating-cc/1.png similarity index 100% rename from guide/.vuepress/public/images/guide/creating-cc/1.png rename to public/images/guide/creating-cc/1.png diff --git a/guide/.vuepress/public/images/guide/creating-cc/2.png b/public/images/guide/creating-cc/2.png similarity index 100% rename from guide/.vuepress/public/images/guide/creating-cc/2.png rename to public/images/guide/creating-cc/2.png diff --git a/guide/.vuepress/public/images/guide/get-started/get-started-join-event.png b/public/images/guide/get-started/get-started-join-event.png similarity index 100% rename from guide/.vuepress/public/images/guide/get-started/get-started-join-event.png rename to public/images/guide/get-started/get-started-join-event.png diff --git a/guide/.vuepress/public/images/guide/get-started/get-started-slash-cmd.png b/public/images/guide/get-started/get-started-slash-cmd.png similarity index 100% rename from guide/.vuepress/public/images/guide/get-started/get-started-slash-cmd.png rename to public/images/guide/get-started/get-started-slash-cmd.png diff --git a/guide/.vuepress/public/images/guide/get-started/get-started-word.png b/public/images/guide/get-started/get-started-word.png similarity index 100% rename from guide/.vuepress/public/images/guide/get-started/get-started-word.png rename to public/images/guide/get-started/get-started-word.png diff --git a/guide/.vuepress/public/images/guide/templates/0.png b/public/images/guide/templates/0.png similarity index 100% rename from guide/.vuepress/public/images/guide/templates/0.png rename to public/images/guide/templates/0.png diff --git a/guide/.vuepress/public/images/guide/templates/1.png b/public/images/guide/templates/1.png similarity index 100% rename from guide/.vuepress/public/images/guide/templates/1.png rename to public/images/guide/templates/1.png diff --git a/guide/.vuepress/public/images/guide/templates/2.png b/public/images/guide/templates/2.png similarity index 100% rename from guide/.vuepress/public/images/guide/templates/2.png rename to public/images/guide/templates/2.png diff --git a/guide/Other/images/embedBuilder/1.png b/public/images/other/embedBuilder/1.png similarity index 100% rename from guide/Other/images/embedBuilder/1.png rename to public/images/other/embedBuilder/1.png diff --git a/guide/Other/images/embedBuilder/2.png b/public/images/other/embedBuilder/2.png similarity index 100% rename from guide/Other/images/embedBuilder/2.png rename to public/images/other/embedBuilder/2.png diff --git a/guide/Other/images/embedBuilder/3.png b/public/images/other/embedBuilder/3.png similarity index 100% rename from guide/Other/images/embedBuilder/3.png rename to public/images/other/embedBuilder/3.png diff --git a/guide/Other/images/embedBuilder/4.png b/public/images/other/embedBuilder/4.png similarity index 100% rename from guide/Other/images/embedBuilder/4.png rename to public/images/other/embedBuilder/4.png diff --git a/guide/Other/images/embedBuilder/5.png b/public/images/other/embedBuilder/5.png similarity index 100% rename from guide/Other/images/embedBuilder/5.png rename to public/images/other/embedBuilder/5.png diff --git a/guide/Other/images/embedBuilder/6.png b/public/images/other/embedBuilder/6.png similarity index 100% rename from guide/Other/images/embedBuilder/6.png rename to public/images/other/embedBuilder/6.png diff --git a/guide/Other/images/embedBuilder/embedInfo.png b/public/images/other/embedBuilder/embedInfo.png similarity index 100% rename from guide/Other/images/embedBuilder/embedInfo.png rename to public/images/other/embedBuilder/embedInfo.png diff --git a/guide/Other/images/welcomer/1.png b/public/images/other/welcomer/1.png similarity index 100% rename from guide/Other/images/welcomer/1.png rename to public/images/other/welcomer/1.png diff --git a/guide/Other/images/welcomer/2.png b/public/images/other/welcomer/2.png similarity index 100% rename from guide/Other/images/welcomer/2.png rename to public/images/other/welcomer/2.png diff --git a/guide/Other/images/welcomer/3.png b/public/images/other/welcomer/3.png similarity index 100% rename from guide/Other/images/welcomer/3.png rename to public/images/other/welcomer/3.png diff --git a/guide/Other/images/welcomer/4.png b/public/images/other/welcomer/4.png similarity index 100% rename from guide/Other/images/welcomer/4.png rename to public/images/other/welcomer/4.png diff --git a/guide/Other/images/welcomer/5.png b/public/images/other/welcomer/5.png similarity index 100% rename from guide/Other/images/welcomer/5.png rename to public/images/other/welcomer/5.png diff --git a/guide/Other/images/welcomer/6.png b/public/images/other/welcomer/6.png similarity index 100% rename from guide/Other/images/welcomer/6.png rename to public/images/other/welcomer/6.png diff --git a/guide/.vuepress/public/images/triggers/boost/0.png b/public/images/triggers/boost/0.png similarity index 100% rename from guide/.vuepress/public/images/triggers/boost/0.png rename to public/images/triggers/boost/0.png diff --git a/guide/.vuepress/public/images/triggers/join-leave/0.png b/public/images/triggers/join-leave/0.png similarity index 100% rename from guide/.vuepress/public/images/triggers/join-leave/0.png rename to public/images/triggers/join-leave/0.png diff --git a/scripts/build-docs-pages.mjs b/scripts/build-docs-pages.mjs new file mode 100644 index 00000000..52610a8b --- /dev/null +++ b/scripts/build-docs-pages.mjs @@ -0,0 +1,77 @@ +/** + * Regenerates `docs-pages.json`, which the old VuePress build emitted as a side + * effect of its search plugin (guide/.vuepress/parseTags.js). It is served at + * /docs-pages.json and consumed outside this repo, so the shape is kept as-is: + * { title, path, content, tags }. + * + * Runs after `next build`, reading the exported HTML in `out/`. + */ +import fs from 'node:fs'; +import path from 'node:path'; +import * as cheerio from 'cheerio'; + +const OUT = path.join(process.cwd(), 'out'); +const CONTENT = path.join(process.cwd(), 'content/docs'); + +/** difficulty labels were never treated as tags */ +const NOT_A_TAG = /Easy|Difficult|Read Below|Medium|Bugged/i; + +function walk(dir, test, found = []) { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) walk(full, test, found); + else if (test(entry.name)) found.push(full); + } + return found; +} + +/** route -> source .mdx, so tags can be read off the original Badge props */ +const sources = new Map(); +for (const file of walk(CONTENT, (n) => n.endsWith('.mdx'))) { + const route = + '/' + + path + .relative(CONTENT, file) + .replace(/\.mdx$/, '') + .replace(/^\(functions\)[/\\]/, '') + .split(path.sep) + .join('/'); + sources.set(route === '/index' ? '/' : route, file); +} + +function metaFor(route) { + const file = sources.get(route); + if (!file) return { title: null, tags: [] }; + + const raw = fs.readFileSync(file, 'utf8'); + const title = raw.match(/^title:\s*(.*)$/m)?.[1]?.trim().replace(/^"|"$/g, '') ?? null; + + const tags = []; + for (const [, text] of raw.matchAll(/]*\btext="([^"]*)"/g)) { + if (text.length > 1 && !NOT_A_TAG.test(text)) tags.push(text); + } + // the old plugin also indexed the bare function name + if (title?.startsWith('$')) tags.push(title.slice(1)); + + return { title, tags }; +} + +const pages = []; +for (const file of walk(OUT, (n) => n.endsWith('.html'))) { + if (file.includes(`${path.sep}_next${path.sep}`)) continue; + + const rel = path.relative(OUT, file).replace(/\.html$/, '').split(path.sep).join('/'); + if (rel === '404' || rel === '_not-found') continue; + const route = rel === 'index' ? '/' : '/' + rel; + + const $ = cheerio.load(fs.readFileSync(file, 'utf8')); + const content = $('.prose').first().html(); + if (content === null) continue; + + const { title, tags } = metaFor(route); + pages.push({ title, path: route, content, tags }); +} + +pages.sort((a, b) => a.path.localeCompare(b.path)); +fs.writeFileSync(path.join(OUT, 'docs-pages.json'), JSON.stringify(pages, null, 2)); +console.log(`[docs-pages] wrote ${pages.length} pages to out/docs-pages.json`); diff --git a/source.config.ts b/source.config.ts new file mode 100644 index 00000000..2cacb528 --- /dev/null +++ b/source.config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from 'fumadocs-mdx/config'; +import { rehypeCodeDefaultOptions } from 'fumadocs-core/mdx-plugins'; +import { remarkCooldowns } from './lib/remark/cooldowns'; +import { remarkFunctionLinks } from './lib/remark/function-links'; +import { remarkCachedImages } from './lib/remark/images'; + +export default defineConfig({ + mdxOptions: { + // prepended so the generated cooldown headings are picked up by Fumadocs' + // own table-of-contents plugin, which runs later in the chain + remarkPlugins: (v) => [remarkCooldowns, remarkFunctionLinks, remarkCachedImages, ...v], + + // The docs link to a lot of Discord CDN attachments, many of them long + // dead. Fetching each one at build time to measure it fails the build and + // matches nothing the old VuePress site did — remote images stayed plain + // tags there too. + remarkImageOptions: { + external: false, + onError: 'ignore', + }, + + rehypeCodeOptions: { + ...rehypeCodeDefaultOptions, + themes: { light: 'github-light', dark: 'github-dark' }, + // ```discord blocks show raw command input, not a real language. VuePress' + // Prism silently fell back to plain text; Shiki throws instead. + langAlias: { + discord: 'text', + }, + }, + }, +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..67086f3f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "paths": { + "@/*": ["./*"] + }, + "plugins": [ + { + "name": "next" + } + ] + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": ["node_modules"] +} From ea61d4493309b2381cc086b075d48af2b45bf745 Mon Sep 17 00:00:00 2001 From: raspdevpy <46069198+raspdevpy@users.noreply.github.com> Date: Mon, 3 Aug 2026 11:32:59 +0200 Subject: [PATCH 02/62] Fix dev-only image crash and unstyled sidebar folders next/image requires intrinsic dimensions. remarkImage supplies them for local files by rewriting the path into a static import, but external URLs are only sized by fetching them at build time, which source.config.ts disables because many linked Discord CDN attachments are dead. Those nodes keep a plain string src with no width or height. next/image validates this only outside production, so `next build` rendered the images while `next dev` returned a 500 on all 70 pages holding one -- and production was shipping tags with no dimensions, causing layout shift on all 260 remote images. Render those as a plain , which is what the VuePress site served for them anyway. Separately, `collapsible: false` is unusable in fumadocs 16.14.0: the docs layout passes className as a render-prop function, which the shared SidebarFolderTrigger forwards to a bare
when a folder isn't collapsible. React drops non-string className values, so the Other and Legal folder headers rendered with no styling at all. defaultOpen alone keeps them expanded and correctly styled. Co-Authored-By: Claude Opus 5 --- .gitignore | 3 +++ components/mdx.tsx | 36 ++++++++++++++++++++++++++++++++++++ content/docs/Legal/meta.json | 1 - content/docs/Other/meta.json | 1 - 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2b0ac7f5..84129b5b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ next-env.d.ts # remote images cached locally by lib/remark/images.ts public/images/*.* + +# browser-automation session artifacts (snapshots, console logs) +.playwright-mcp/ diff --git a/components/mdx.tsx b/components/mdx.tsx index f0d50cfe..8483807e 100644 --- a/components/mdx.tsx +++ b/components/mdx.tsx @@ -1,13 +1,49 @@ import defaultMdxComponents from 'fumadocs-ui/mdx'; import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import type { MDXComponents } from 'mdx/types'; +import type { ComponentProps, ComponentType } from 'react'; import { Badge } from '@/components/badge'; import { Arg } from '@/components/arg'; import * as Discord from '@/components/discord'; +// Fumadocs types this against next/image's props, whose `src` is a union that +// no longer overlaps with the plain `` props MDX hands us. The runtime +// component is happy with either. +const NextImage = defaultMdxComponents.img as ComponentType>; + +/** + * Fumadocs renders markdown images with next/image, which needs intrinsic + * dimensions. `remarkImage` supplies them for local files by rewriting the path + * into a static import, but an external URL only gets sized by fetching it at + * build time — which we deliberately don't do, because a lot of the linked + * Discord CDN attachments are long dead (see `source.config.ts`). Those nodes + * are therefore left as a plain string `src` with no width or height. + * + * next/image throws on the missing dimensions only when NODE_ENV isn't + * production, so `next build` renders them while `next dev` returns a 500 for + * every page that holds one — 70 pages here. Emit a plain instead, which + * is what the old VuePress site served for these anyway. + */ +function Image({ src, className, ...props }: ComponentProps<'img'>) { + if (typeof src === 'string' && props.width === undefined) { + return ( + + ); + } + + return ; +} + export function getMDXComponents(components?: MDXComponents) { return { ...defaultMdxComponents, + img: Image, Accordion, Accordions, Badge, diff --git a/content/docs/Legal/meta.json b/content/docs/Legal/meta.json index cf0ac539..69d951bf 100644 --- a/content/docs/Legal/meta.json +++ b/content/docs/Legal/meta.json @@ -3,6 +3,5 @@ "pages": [ "..." ], - "collapsible": false, "defaultOpen": true } diff --git a/content/docs/Other/meta.json b/content/docs/Other/meta.json index d6fee26a..870de569 100644 --- a/content/docs/Other/meta.json +++ b/content/docs/Other/meta.json @@ -4,6 +4,5 @@ "...", "!syntax" ], - "collapsible": false, "defaultOpen": true } From a4cd11cc698404d63cb88ea64e0bf99fe148ce92 Mon Sep 17 00:00:00 2001 From: zerofoil <175196963+zerofoil@users.noreply.github.com> Date: Mon, 3 Aug 2026 12:41:19 +0200 Subject: [PATCH 03/62] u --- source.config.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source.config.ts b/source.config.ts index 2cacb528..f080fc81 100644 --- a/source.config.ts +++ b/source.config.ts @@ -1,9 +1,17 @@ import { defineConfig } from 'fumadocs-mdx/config'; import { rehypeCodeDefaultOptions } from 'fumadocs-core/mdx-plugins'; +import type { ShikiTransformer } from 'shiki'; import { remarkCooldowns } from './lib/remark/cooldowns'; import { remarkFunctionLinks } from './lib/remark/function-links'; import { remarkCachedImages } from './lib/remark/images'; +const transformerLineNumbers: ShikiTransformer = { + name: 'shiki-transformer-line-numbers', + pre(node) { + node.properties['data-line-numbers'] = ''; + }, +}; + export default defineConfig({ mdxOptions: { // prepended so the generated cooldown headings are picked up by Fumadocs' @@ -27,6 +35,10 @@ export default defineConfig({ langAlias: { discord: 'text', }, + transformers: [ + ...(rehypeCodeDefaultOptions.transformers ?? []), + transformerLineNumbers, + ], }, }, -}); +}); \ No newline at end of file From 4233397cedfa565b7ddfebd8bae0bb6cc13c8c0f Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 3 Aug 2026 14:11:19 +0200 Subject: [PATCH 04/62] ignoring cache files --- .gitignore | 5 ++++- lib/layout.shared.tsx | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 84129b5b..2824a73b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,10 @@ next-env.d.ts .vercel # remote images cached locally by lib/remark/images.ts -public/images/*.* +guide/.vuepress/public/images/*.* # browser-automation session artifacts (snapshots, console logs) .playwright-mcp/ + +.pnpm-store +docs-pages.json diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx index 2f7f4a99..b3100109 100644 --- a/lib/layout.shared.tsx +++ b/lib/layout.shared.tsx @@ -19,8 +19,13 @@ export function baseOptions(): BaseLayoutProps { external: true, }, { - text: 'Discord', - url: 'https://discord.gg/ZFQNZA4Ekz', + text: 'Invite the bot to your server', + url: 'https://ccommandbot.com/add', + external: true, + }, + { + text: 'Join The Support Server', + url: 'https://ccommandbot.com/join', external: true, }, ], From 713853e414412c416de7914f14cbbb60ccdccd6a Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 3 Aug 2026 15:23:52 +0200 Subject: [PATCH 05/62] Test change to see the build speed --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 1b0e5234..c1c16f39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,3 +22,4 @@ COPY --from=builder /app/${BUILD_DIR} /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] + From 91c2aff778f63adcb628b12eab586cc4b2e7d19c Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 3 Aug 2026 15:30:00 +0200 Subject: [PATCH 06/62] check one page modify --- content/docs/(functions)/Bot/botCount.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index 44d8139e..c487bde6 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -12,7 +12,7 @@ Here's how you can use the `$botCount` function: !!exec There are $botCount bots in the server! ``` -This command, when executed, will display a message showing the bot count in the server. See the example below: +This command, when executed, will display a message showing the bot count in the server. See the example next: From ff13f94c41d9e11ee31028d297412dd8ce3af5f6 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 3 Aug 2026 16:14:27 +0200 Subject: [PATCH 07/62] add shiki --- package.json | 3 ++- pnpm-lock.yaml | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 24c3c1f2..21b3831b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "next": "16.2.12", "next-themes": "^0.4.6", "react": "^19.2.8", - "react-dom": "^19.2.8" + "react-dom": "^19.2.8", + "shiki": "^4.4.1" }, "devDependencies": { "@tailwindcss/postcss": "^4.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67ed202e..fc755f52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,6 +41,9 @@ importers: react-dom: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) + shiki: + specifier: ^4.4.1 + version: 4.4.1 devDependencies: '@tailwindcss/postcss': specifier: ^4.3.3 From 8393a283244e5a6d0893503cf4392fd0e1d04eed Mon Sep 17 00:00:00 2001 From: Zero <175196963+zerofoil@users.noreply.github.com> Date: Mon, 3 Aug 2026 16:27:57 +0200 Subject: [PATCH 08/62] Some changes --- app/(docs)/[[...slug]]/page.tsx | 127 +++++++++--------- app/(docs)/layout.tsx | 18 +-- app/layout.tsx | 64 ++++----- components/image-zoom.tsx | 49 +++++++ components/mdx.tsx | 107 ++++++++------- content/docs/(functions)/Bot/botOwnerID.mdx | 10 +- content/docs/(functions)/Bot/botVerified.mdx | 2 +- content/docs/(functions)/Bot/botVersion.mdx | 2 +- .../docs/(functions)/Bot/getBotActivity.mdx | 2 +- content/docs/(functions)/Bot/getBotInvite.mdx | 2 +- content/docs/(functions)/Bot/meta.json | 6 +- .../docs/(functions)/Bot/setBotActivity.mdx | 4 +- .../Channel/cacheChannelMessages.mdx | 6 +- .../Channel/channelPermissionsFor.mdx | 2 +- .../docs/(functions)/Channel/channelTopic.mdx | 6 +- .../docs/(functions)/Channel/cloneChannel.mdx | 8 +- .../docs/(functions)/Channel/createForum.mdx | 4 +- .../docs/(functions)/Channel/editForum.mdx | 6 +- .../Channel/eventChannelParent.mdx | 4 +- .../(functions)/Channel/findServerChannel.mdx | 2 +- .../Channel/getChannelMessages.mdx | 2 +- .../(functions)/Channel/latestMessage.mdx | 2 +- .../(functions)/Channel/mentionChannel.mdx | 6 +- content/docs/(functions)/Channel/meta.json | 6 +- .../(functions)/Channel/removeContains.mdx | 4 +- .../(functions)/Channel/serverChannels.mdx | 2 +- .../(functions)/Channel/setChannelTopic.mdx | 4 +- content/docs/(functions)/Channel/slowmode.mdx | 4 +- .../(functions)/Channel/transcriptChannel.mdx | 2 +- content/docs/(functions)/Channel/vcBefore.mdx | 2 +- .../(functions)/Channel/voiceChannelID.mdx | 2 +- .../(functions)/Cooldown/channelCooldown.mdx | 2 +- .../(functions)/Cooldown/clearCoolDown.mdx | 2 +- .../docs/(functions)/Cooldown/cooldown.mdx | 2 +- .../(functions)/Cooldown/getCooldownTime.mdx | 2 +- content/docs/(functions)/Cooldown/meta.json | 6 +- .../(functions)/Cooldown/serverCooldown.mdx | 2 +- content/docs/(functions)/Date/dateToTime.mdx | 2 +- .../(functions)/Date/memberJoinedCode.mdx | 2 +- content/docs/(functions)/Date/meta.json | 6 +- content/docs/(functions)/Date/timeToDate.mdx | 2 +- content/docs/(functions)/Date/upvoteTime.mdx | 2 +- .../docs/(functions)/Events/eventCreate.mdx | 4 +- .../docs/(functions)/Events/eventDelete.mdx | 4 +- content/docs/(functions)/Events/eventEdit.mdx | 4 +- .../docs/(functions)/Events/eventExists.mdx | 2 +- .../docs/(functions)/Events/eventStart.mdx | 4 +- .../docs/(functions)/Events/getEventInfo.mdx | 2 +- .../docs/(functions)/Events/getEventUsers.mdx | 2 +- content/docs/(functions)/Events/meta.json | 6 +- .../docs/(functions)/Image/imageBorderRad.mdx | 4 +- .../docs/(functions)/Image/imageCreate.mdx | 2 +- content/docs/(functions)/Image/imageCrop.mdx | 2 +- content/docs/(functions)/Image/imageDraw.mdx | 2 +- .../docs/(functions)/Image/imageDrawBack.mdx | 2 +- content/docs/(functions)/Image/imageFill.mdx | 2 +- .../(functions)/Image/imageLineHeight.mdx | 4 +- .../docs/(functions)/Image/imageLoadEmoji.mdx | 2 +- .../(functions)/Image/imageLoadFromURL.mdx | 2 +- .../docs/(functions)/Image/imageOutput.mdx | 6 +- .../(functions)/Image/imagePositionBase.mdx | 2 +- .../(functions)/Image/imageSetOpacity.mdx | 6 +- .../docs/(functions)/Image/imageStroke.mdx | 2 +- .../(functions)/Image/imageStrokeWidth.mdx | 2 +- .../docs/(functions)/Image/imageTextColor.mdx | 6 +- .../docs/(functions)/Image/imageTextFill.mdx | 2 +- .../(functions)/Image/imageTextFillColor.mdx | 6 +- .../(functions)/Image/imageTextStroke.mdx | 49 ++++--- .../Image/imageTextStrokeColor.mdx | 6 +- .../(functions)/Image/imageTextWeight.mdx | 4 +- .../docs/(functions)/Image/imageUseFont.mdx | 2 +- content/docs/(functions)/Image/imageWidth.mdx | 6 +- content/docs/(functions)/Image/meta.json | 6 +- .../(functions)/Interaction/commandName.mdx | 4 +- .../(functions)/Interaction/getOption.mdx | 2 +- .../docs/(functions)/Interaction/meta.json | 6 +- .../docs/(functions)/Member/authorAvatar.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/ban.mdx | 2 +- .../docs/(functions)/Member/blackListIDs.mdx | 2 +- .../docs/(functions)/Member/boostingSince.mdx | 2 +- .../(functions)/Member/changeNickname.mdx | 2 +- .../docs/(functions)/Member/discriminator.mdx | 2 +- .../docs/(functions)/Member/displayName.mdx | 2 +- .../(functions)/Member/eventNewNickname.mdx | 4 +- .../(functions)/Member/eventOldNickname.mdx | 4 +- .../docs/(functions)/Member/findMember.mdx | 2 +- .../docs/(functions)/Member/getUserBadges.mdx | 2 +- .../docs/(functions)/Member/globalName.mdx | 2 +- .../docs/(functions)/Member/hasAnyPerm.mdx | 2 +- .../docs/(functions)/Member/hasAnyRole.mdx | 2 +- content/docs/(functions)/Member/hasPerms.mdx | 2 +- content/docs/(functions)/Member/hasRoles.mdx | 2 +- content/docs/(functions)/Member/isBanned.mdx | 2 +- .../(functions)/Member/isUserDMEnabled.mdx | 2 +- content/docs/(functions)/Member/kick.mdx | 2 +- .../docs/(functions)/Member/memberSearch.mdx | 2 +- .../(functions)/Member/membersWithStatus.mdx | 2 +- content/docs/(functions)/Member/mention.mdx | 2 +- content/docs/(functions)/Member/meta.json | 6 +- content/docs/(functions)/Member/moveUser.mdx | 2 +- content/docs/(functions)/Member/muteUser.mdx | 2 +- content/docs/(functions)/Member/nickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Member/unban.mdx | 2 +- .../Member/upvoteReferralUserID.mdx | 2 +- content/docs/(functions)/Member/user.mdx | 2 +- .../docs/(functions)/Member/userAvatar.mdx | 2 +- .../docs/(functions)/Member/userBanner.mdx | 2 +- .../(functions)/Member/userConnectedVC.mdx | 2 +- .../docs/(functions)/Member/userExists.mdx | 2 +- content/docs/(functions)/Member/userID.mdx | 2 +- content/docs/(functions)/Member/userPerms.mdx | 2 +- .../docs/(functions)/Member/userReacted.mdx | 2 +- .../docs/(functions)/Member/userRoleColor.mdx | 2 +- content/docs/(functions)/Member/userTag.mdx | 2 +- content/docs/(functions)/Member/username.mdx | 2 +- .../docs/(functions)/Member/usersBanned.mdx | 2 +- .../(functions)/Member/usersInChannel.mdx | 2 +- .../docs/(functions)/Member/usersTyping.mdx | 2 +- .../docs/(functions)/Member/usersWithRole.mdx | 2 +- .../docs/(functions)/Message/argsCheck.mdx | 10 +- .../docs/(functions)/Message/argsCount.mdx | 2 +- .../docs/(functions)/Message/awaitMessage.mdx | 4 +- .../(functions)/Message/deleteCommand.mdx | 6 +- .../Message/disableChannelMentions.mdx | 4 +- .../Message/disableEveryoneMentions.mdx | 2 +- .../docs/(functions)/Message/editEmbed.mdx | 2 +- content/docs/(functions)/Message/editIn.mdx | 4 +- .../(functions)/Message/emojiToString.mdx | 2 +- .../(functions)/Message/emojisFromMessage.mdx | 4 +- .../Message/enableEveryoneMentions.mdx | 2 +- content/docs/(functions)/Message/getEmbed.mdx | 2 +- .../docs/(functions)/Message/getMessage.mdx | 8 +- .../Message/getMessageReactions.mdx | 10 +- .../(functions)/Message/getReactionCount.mdx | 2 +- .../docs/(functions)/Message/hasEmbeds.mdx | 4 +- content/docs/(functions)/Message/meta.json | 6 +- .../docs/(functions)/Message/pinMessage.mdx | 6 +- content/docs/(functions)/Message/poll.mdx | 2 +- .../Message/referenceChannelID.mdx | 2 +- content/docs/(functions)/Message/reply.mdx | 6 +- .../Message/sendCrosspostingMessage.mdx | 6 +- .../docs/(functions)/Message/sendMessage.mdx | 2 +- .../docs/(functions)/Message/sendWebhook.mdx | 4 +- .../(functions)/Message/sentMessageID.mdx | 4 +- content/docs/(functions)/Random/meta.json | 6 +- content/docs/(functions)/Random/random.mdx | 2 +- .../(functions)/Random/randomChannelID.mdx | 4 +- .../(functions)/Random/randomTextBiased.mdx | 2 +- .../docs/(functions)/Request/httpRequest.mdx | 2 +- .../(functions)/Request/httpRequestHeader.mdx | 2 +- .../(functions)/Request/httpRequestStatus.mdx | 2 +- content/docs/(functions)/Request/meta.json | 6 +- .../(functions)/Role/blackListRoleIDs.mdx | 2 +- content/docs/(functions)/Role/highestRole.mdx | 4 +- content/docs/(functions)/Role/lowestRole.mdx | 4 +- content/docs/(functions)/Role/mentionRole.mdx | 6 +- content/docs/(functions)/Role/meta.json | 6 +- .../docs/(functions)/Role/modifyUserRoles.mdx | 4 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleIcon.mdx | 8 +- content/docs/(functions)/Role/setRoles.mdx | 2 +- .../Server/createAutomodKeyword.mdx | 4 +- .../docs/(functions)/Server/deleteEmojis.mdx | 2 +- .../(functions)/Server/editAutomodKeyword.mdx | 4 +- .../docs/(functions)/Server/emojiCount.mdx | 2 +- .../docs/(functions)/Server/emojiExists.mdx | 4 +- .../docs/(functions)/Server/getInviteInfo.mdx | 4 +- .../(functions)/Server/getServerInvite.mdx | 2 +- content/docs/(functions)/Server/meta.json | 6 +- .../(functions)/Server/resolveEmojiID.mdx | 6 +- .../docs/(functions)/Server/securityPause.mdx | 8 +- .../(functions)/Stickers/createSticker.mdx | 4 +- .../(functions)/Stickers/deleteSticker.mdx | 2 +- .../docs/(functions)/Stickers/editSticker.mdx | 4 +- .../(functions)/Stickers/messageStickers.mdx | 2 +- content/docs/(functions)/Stickers/meta.json | 6 +- .../(functions)/Stickers/serverStickers.mdx | 2 +- content/docs/(functions)/Stickers/sticker.mdx | 2 +- .../(functions)/Text/Array/arrayClear.mdx | 2 +- .../(functions)/Text/Array/arrayConcat.mdx | 2 +- .../(functions)/Text/Array/arrayCount.mdx | 2 +- .../(functions)/Text/Array/arrayCreate.mdx | 2 +- .../Text/Array/arrayElementCount.mdx | 2 +- .../(functions)/Text/Array/arrayFilter.mdx | 2 +- .../docs/(functions)/Text/Array/arrayGet.mdx | 2 +- .../(functions)/Text/Array/arrayInclude.mdx | 2 +- .../docs/(functions)/Text/Array/arrayJoin.mdx | 2 +- .../(functions)/Text/Array/arrayLength.mdx | 2 +- .../docs/(functions)/Text/Array/arrayLoop.mdx | 2 +- .../docs/(functions)/Text/Array/arrayMap.mdx | 2 +- .../docs/(functions)/Text/Array/arrayPop.mdx | 2 +- .../docs/(functions)/Text/Array/arrayPush.mdx | 2 +- .../(functions)/Text/Array/arrayRemove.mdx | 2 +- .../(functions)/Text/Array/arrayReverse.mdx | 2 +- .../(functions)/Text/Array/arraySearch.mdx | 2 +- .../docs/(functions)/Text/Array/arraySet.mdx | 2 +- .../(functions)/Text/Array/arrayShift.mdx | 2 +- .../(functions)/Text/Array/arrayShuffle.mdx | 2 +- .../(functions)/Text/Array/arraySlice.mdx | 2 +- .../docs/(functions)/Text/Array/arraySort.mdx | 2 +- .../(functions)/Text/Array/arrayUnique.mdx | 2 +- .../(functions)/Text/Array/arrayUnshift.mdx | 2 +- .../(functions)/Text/Components/addMenu.mdx | 4 +- .../(functions)/Text/Components/awaitMenu.mdx | 2 +- .../Text/Components/buttonEmoji.mdx | 2 +- .../(functions)/Text/Components/buttonID.mdx | 2 +- .../Text/Components/buttonIsDisabled.mdx | 2 +- .../Text/Components/buttonLabel.mdx | 2 +- .../Text/Components/buttonStyle.mdx | 2 +- .../(functions)/Text/Components/buttonURL.mdx | 2 +- .../Text/Components/disableButtons.mdx | 2 +- .../Text/Components/disableMenu.mdx | 2 +- .../(functions)/Text/Components/editMenu.mdx | 4 +- .../Text/Components/enableButtons.mdx | 2 +- .../Text/Components/enableMenu.mdx | 2 +- .../Text/Components/eventSelected.mdx | 2 +- .../Text/Components/eventTargetID.mdx | 2 +- .../(functions)/Text/Components/menuId.mdx | 2 +- .../Text/Components/removeEmbed.mdx | 4 +- .../Text/Components/removeMenu.mdx | 2 +- .../Text/Condition/checkCondition.mdx | 2 +- .../Text/Condition/conditional.mdx | 2 +- .../docs/(functions)/Text/Condition/else.mdx | 2 +- .../(functions)/Text/Condition/elseif.mdx | 2 +- .../docs/(functions)/Text/Condition/endIf.mdx | 2 +- .../(functions)/Text/Condition/endelseif.mdx | 2 +- .../docs/(functions)/Text/Condition/if.mdx | 2 +- .../(functions)/Text/Embed/attachment.mdx | 2 +- content/docs/(functions)/Text/Math/abs.mdx | 2 +- content/docs/(functions)/Text/Math/ceil.mdx | 2 +- content/docs/(functions)/Text/Math/floor.mdx | 2 +- .../docs/(functions)/Text/Math/mathMax.mdx | 2 +- .../docs/(functions)/Text/Math/mathMin.mdx | 2 +- .../Text/Object/ObjectIncrease.mdx | 2 +- .../Text/Object/ObjectKeyExists.mdx | 2 +- .../(functions)/Text/Object/ObjectKeys.mdx | 2 +- .../(functions)/Text/Object/ObjectLoop.mdx | 2 +- .../(functions)/Text/Object/ObjectMerge.mdx | 2 +- .../(functions)/Text/Object/ObjectRemove.mdx | 2 +- .../Text/Object/ObjectRenameKey.mdx | 2 +- .../(functions)/Text/Object/ObjectValues.mdx | 2 +- .../Text/Object/addObjectProperty.mdx | 2 +- .../(functions)/Text/Object/createObject.mdx | 2 +- .../(functions)/Text/Object/getObjectKeys.mdx | 2 +- .../Text/Object/getObjectProperty.mdx | 2 +- .../(functions)/Text/Regex/regexCheck.mdx | 2 +- .../(functions)/Text/Regex/regexReplace.mdx | 2 +- content/docs/(functions)/Text/buffer.mdx | 4 +- .../docs/(functions)/Text/checkContains.mdx | 2 +- content/docs/(functions)/Text/customEmoji.mdx | 2 +- .../docs/(functions)/Text/filterMessage.mdx | 2 +- .../(functions)/Text/filterMessageWords.mdx | 2 +- content/docs/(functions)/Text/findChars.mdx | 2 +- content/docs/(functions)/Text/findNumbers.mdx | 2 +- .../(functions)/Text/findSpecialChars.mdx | 2 +- content/docs/(functions)/Text/indexOf.mdx | 2 +- .../(functions)/Text/isChannelMention.mdx | 2 +- .../docs/(functions)/Text/isUserMention.mdx | 2 +- .../(functions)/Text/isandhas/isConnected.mdx | 2 +- .../(functions)/Text/isandhas/isStreaming.mdx | 2 +- content/docs/(functions)/Text/mentionType.mdx | 2 +- content/docs/(functions)/Text/mentioned.mdx | 2 +- content/docs/(functions)/Text/meta.json | 28 ++-- content/docs/(functions)/Text/numToWord.mdx | 2 +- .../docs/(functions)/Text/numberSeparator.mdx | 2 +- .../(functions)/Text/only/onlyForChannels.mdx | 2 +- .../Text/only/onlyIfMessageContains.mdx | 2 +- content/docs/(functions)/Text/padLeft.mdx | 2 +- content/docs/(functions)/Text/padRight.mdx | 2 +- .../docs/(functions)/Text/stringEndsWith.mdx | 2 +- .../(functions)/Text/stringStartsWith.mdx | 2 +- content/docs/(functions)/Text/textLength.mdx | 2 +- content/docs/(functions)/Text/textShuffle.mdx | 2 +- content/docs/(functions)/Text/textSlice.mdx | 2 +- .../Text/textSplit/removeSplitTextElement.mdx | 2 +- content/docs/(functions)/Text/textTrim.mdx | 2 +- content/docs/(functions)/Text/uri.mdx | 2 +- content/docs/(functions)/Text/void.mdx | 2 +- .../(functions)/Threads/addUsersToThread.mdx | 6 +- .../(functions)/Threads/archiveThread.mdx | 6 +- .../docs/(functions)/Threads/closePost.mdx | 6 +- .../docs/(functions)/Threads/createPost.mdx | 2 +- .../docs/(functions)/Threads/createThread.mdx | 4 +- .../docs/(functions)/Threads/deletePost.mdx | 4 +- .../docs/(functions)/Threads/deletePosts.mdx | 4 +- content/docs/(functions)/Threads/editPost.mdx | 4 +- content/docs/(functions)/Threads/lockPost.mdx | 6 +- .../docs/(functions)/Threads/lockThread.mdx | 6 +- content/docs/(functions)/Threads/meta.json | 6 +- content/docs/(functions)/Threads/pinPost.mdx | 6 +- .../Threads/removeUsersFromThread.mdx | 6 +- content/docs/(functions)/Timeout/meta.json | 6 +- .../(functions)/Timeout/timeoutAction.mdx | 2 +- .../docs/(functions)/Timeout/timeoutBy.mdx | 2 +- .../(functions)/Timeout/timeoutReason.mdx | 2 +- .../(functions)/Timeout/userGetTimeout.mdx | 2 +- .../(functions)/Timeout/userRemoveTimeout.mdx | 2 +- .../(functions)/Timeout/userSetTimeout.mdx | 2 +- .../docs/(functions)/Useful/callFunction.mdx | 2 +- .../docs/(functions)/Useful/commandCode.mdx | 2 +- .../docs/(functions)/Useful/deleteTrigger.mdx | 2 +- .../docs/(functions)/Useful/editTrigger.mdx | 6 +- .../docs/(functions)/Useful/endForEach.mdx | 2 +- .../docs/(functions)/Useful/endFunction.mdx | 4 +- .../docs/(functions)/Useful/endTimeout.mdx | 2 +- content/docs/(functions)/Useful/forEach.mdx | 4 +- content/docs/(functions)/Useful/function.mdx | 2 +- content/docs/(functions)/Useful/getToken.mdx | 4 +- .../docs/(functions)/Useful/getTrigger.mdx | 4 +- .../docs/(functions)/Useful/ignoreErrors.mdx | 2 +- .../(functions)/Useful/includeLibrary.mdx | 2 +- .../docs/(functions)/Useful/jsonRequest.mdx | 4 +- content/docs/(functions)/Useful/meta.json | 6 +- content/docs/(functions)/Useful/return.mdx | 4 +- content/docs/(functions)/Useful/stop.mdx | 2 +- .../docs/(functions)/Useful/triggerExists.mdx | 2 +- .../Variables/increaseChannelVar.mdx | 4 +- .../Variables/increaseServerVar.mdx | 4 +- .../(functions)/Variables/increaseUserVar.mdx | 4 +- .../docs/(functions)/Variables/initVar.mdx | 10 +- content/docs/(functions)/Variables/meta.json | 6 +- .../(functions)/Variables/userVarRank.mdx | 2 +- .../(functions)/Variables/viewChannelVars.mdx | 2 +- .../(functions)/Variables/viewServerVars.mdx | 2 +- .../(functions)/Variables/viewUserVars.mdx | 2 +- content/docs/(functions)/meta.json | 64 ++++----- content/docs/Changelogs/meta.json | 6 +- content/docs/Changelogs/v1.4.4.mdx | 6 +- .../docs/CodeReferences/ref.expression.mdx | 2 +- content/docs/Contribution_Info/meta.json | 6 +- content/docs/Guide/meta.json | 24 ++-- content/docs/Legal/meta.json | 8 +- content/docs/Other/curl.mdx | 2 +- content/docs/Other/meta.json | 8 +- content/docs/Trigger/1.triggers.mdx | 49 ++++--- content/docs/Trigger/meta.json | 6 +- content/docs/Trigger/word.mdx | 2 +- content/docs/Tutorials/meta.json | 6 +- content/docs/index.mdx | 8 +- content/docs/meta.json | 22 ++- lib/layout.shared.tsx | 62 +++++---- lib/shared.ts | 16 +-- lib/source.ts | 55 ++++---- old | 1 - package.json | 9 +- pnpm-lock.yaml | 20 +++ .../join-event.png} | Bin .../slash-cmd.png} | Bin .../word.png} | Bin scripts/build-docs-pages.mjs | 97 +++++++------ source.config.ts | 66 +++++---- styles/image-zoom.css | 77 +++++++++++ 354 files changed, 1095 insertions(+), 933 deletions(-) create mode 100644 components/image-zoom.tsx delete mode 160000 old rename public/images/guide/{get-started/get-started-join-event.png => getting-started/join-event.png} (100%) rename public/images/guide/{get-started/get-started-slash-cmd.png => getting-started/slash-cmd.png} (100%) rename public/images/guide/{get-started/get-started-word.png => getting-started/word.png} (100%) create mode 100644 styles/image-zoom.css diff --git a/app/(docs)/[[...slug]]/page.tsx b/app/(docs)/[[...slug]]/page.tsx index 329c7f30..573bf96e 100644 --- a/app/(docs)/[[...slug]]/page.tsx +++ b/app/(docs)/[[...slug]]/page.tsx @@ -1,73 +1,78 @@ -import { getPageMarkdownUrl, source } from '@/lib/source'; +import { getPageMarkdownUrl, source } from "@/lib/source"; import { - DocsBody, - DocsDescription, - DocsPage, - DocsTitle, - MarkdownCopyButton, - ViewOptionsPopover, -} from 'fumadocs-ui/layouts/docs/page'; -import { notFound } from 'next/navigation'; -import { getMDXComponents } from '@/components/mdx'; -import type { Metadata } from 'next'; -import { createRelativeLink } from 'fumadocs-ui/mdx'; -import { appName, gitConfig, socialImage } from '@/lib/shared'; + DocsBody, + DocsDescription, + DocsPage, + DocsTitle, + MarkdownCopyButton, + ViewOptionsPopover, +} from "fumadocs-ui/layouts/docs/page"; +import { notFound } from "next/navigation"; +import { getMDXComponents } from "@/components/mdx"; +import type { Metadata } from "next"; +import { createRelativeLink } from "fumadocs-ui/mdx"; +import { appName, gitConfig, socialImage, appDescription } from "@/lib/shared"; -export default async function Page(props: PageProps<'/[[...slug]]'>) { - const params = await props.params; - const page = source.getPage(params.slug); - if (!page) notFound(); +export default async function Page(props: PageProps<"/[[...slug]]">) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); - const MDX = page.data.body; - const markdownUrl = getPageMarkdownUrl(page).url; + const MDX = page.data.body; + const markdownUrl = getPageMarkdownUrl(page).url; - return ( - - {page.data.title} - {page.data.description} -
- - -
- - - -
- ); + return ( + + {page.data.title} + + {page.data.description} + +
+ + +
+ + + +
+ ); } export async function generateStaticParams() { - return source.generateParams(); + return source.generateParams(); } -export async function generateMetadata(props: PageProps<'/[[...slug]]'>): Promise { - const params = await props.params; - const page = source.getPage(params.slug); - if (!page) notFound(); +export async function generateMetadata( + props: PageProps<"/[[...slug]]">, +): Promise { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); - // Mirrors the old VuePress `dynamic-meta-plugin`: " | Custom Command". - const social = page.data.title ? `${page.data.title} | ${appName}` : `${appName} Documentation`; + const social = page.data.title + ? `${page.data.title} | ${appName}` + : `${appName} Documentation`; - return { - title: page.data.title, - description: page.data.description, - openGraph: { - title: social, - description: page.data.description, - images: socialImage, - }, - twitter: { - title: social, - description: page.data.description, - images: socialImage, - }, - }; + return { + title: page.data.title, + description: appDescription, + openGraph: { + title: social, + description: appDescription, + images: socialImage, + }, + twitter: { + card: "summary", + title: social, + description: appDescription, + images: socialImage, + }, + }; } diff --git a/app/(docs)/layout.tsx b/app/(docs)/layout.tsx index 0c2bf056..d2e715bf 100644 --- a/app/(docs)/layout.tsx +++ b/app/(docs)/layout.tsx @@ -1,11 +1,11 @@ -import { source } from '@/lib/source'; -import { DocsLayout } from 'fumadocs-ui/layouts/docs'; -import { baseOptions } from '@/lib/layout.shared'; +import { source } from "@/lib/source"; +import { DocsLayout } from "fumadocs-ui/layouts/docs"; +import { baseOptions } from "@/lib/layout.shared"; -export default function Layout({ children }: LayoutProps<'/'>) { - return ( - - {children} - - ); +export default function Layout({ children }: LayoutProps<"/">) { + return ( + + {children} + + ); } diff --git a/app/layout.tsx b/app/layout.tsx index a2ef9a85..0eec4fa4 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,44 +1,44 @@ -import { Inter } from 'next/font/google'; -import type { Metadata, Viewport } from 'next'; -import { Provider } from '@/components/provider'; -import { appDescription, appName, siteUrl, socialImage } from '@/lib/shared'; -import './global.css'; +import { Inter } from "next/font/google"; +import type { Metadata, Viewport } from "next"; +import { Provider } from "@/components/provider"; +import { appDescription, appName, siteUrl, socialImage } from "@/lib/shared"; +import "./global.css"; const inter = Inter({ - subsets: ['latin'], + subsets: ["latin"], }); export const metadata: Metadata = { - metadataBase: new URL(siteUrl), - title: { - // Matches the old VuePress `dynamic-meta-plugin` output. - template: `%s | ${appName}`, - default: `${appName} Documentation`, - }, - description: appDescription, - icons: { - icon: socialImage, - }, - openGraph: { + metadataBase: new URL(siteUrl), + title: { + template: `%s | ${appName}`, + default: `${appName} Documentation`, + }, description: appDescription, - images: socialImage, - }, - twitter: { - description: appDescription, - images: socialImage, - }, + icons: { + icon: socialImage, + }, + openGraph: { + description: appDescription, + images: socialImage, + }, + twitter: { + card: "summary", + description: appDescription, + images: socialImage, + }, }; export const viewport: Viewport = { - themeColor: '#74b0f7', + themeColor: "#74b0f7", }; -export default function Layout({ children }: LayoutProps<'/'>) { - return ( - - - {children} - - - ); +export default function Layout({ children }: LayoutProps<"/">) { + return ( + + + {children} + + + ); } diff --git a/components/image-zoom.tsx b/components/image-zoom.tsx new file mode 100644 index 00000000..3b2a82f7 --- /dev/null +++ b/components/image-zoom.tsx @@ -0,0 +1,49 @@ +'use client'; + +import { Image, type ImageProps } from 'fumadocs-core/framework'; +import type { ComponentProps } from 'react'; +import Zoom, { type UncontrolledProps } from 'react-medium-image-zoom'; +import '../styles/image-zoom.css'; + +export type ImageZoomProps = ImageProps & { + /** + * Image props when zoom in + */ + zoomInProps?: ComponentProps<'img'>; + + /** + * Props for `react-medium-image-zoom` + */ + rmiz?: UncontrolledProps; +}; + +function getImageSrc(src: ImageProps['src']): string { + if (typeof src === 'string') return src; + + if (typeof src === 'object') { + // Next.js + if ('default' in src) return (src as { default: { src: string } }).default.src; + return src.src; + } + + return ''; +} + +export function ImageZoom({ zoomInProps, children, rmiz, ...props }: ImageZoomProps) { + return ( + + {children ?? ( + + )} + + ); +} diff --git a/components/mdx.tsx b/components/mdx.tsx index 8483807e..71fc1cb1 100644 --- a/components/mdx.tsx +++ b/components/mdx.tsx @@ -1,60 +1,67 @@ -import defaultMdxComponents from 'fumadocs-ui/mdx'; -import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; -import type { MDXComponents } from 'mdx/types'; -import type { ComponentProps, ComponentType } from 'react'; -import { Badge } from '@/components/badge'; -import { Arg } from '@/components/arg'; -import * as Discord from '@/components/discord'; - -// Fumadocs types this against next/image's props, whose `src` is a union that -// no longer overlaps with the plain `` props MDX hands us. The runtime -// component is happy with either. -const NextImage = defaultMdxComponents.img as ComponentType>; - -/** - * Fumadocs renders markdown images with next/image, which needs intrinsic - * dimensions. `remarkImage` supplies them for local files by rewriting the path - * into a static import, but an external URL only gets sized by fetching it at - * build time — which we deliberately don't do, because a lot of the linked - * Discord CDN attachments are long dead (see `source.config.ts`). Those nodes - * are therefore left as a plain string `src` with no width or height. - * - * next/image throws on the missing dimensions only when NODE_ENV isn't - * production, so `next build` renders them while `next dev` returns a 500 for - * every page that holds one — 70 pages here. Emit a plain instead, which - * is what the old VuePress site served for these anyway. - */ -function Image({ src, className, ...props }: ComponentProps<'img'>) { - if (typeof src === 'string' && props.width === undefined) { +import defaultMdxComponents from "fumadocs-ui/mdx"; +import { Accordion, Accordions } from "fumadocs-ui/components/accordion"; +import type { MDXComponents } from "mdx/types"; +import type { ComponentProps, ComponentType } from "react"; +import { Badge } from "@/components/badge"; +import { Arg } from "@/components/arg"; +import * as Discord from "@/components/discord"; +import { ImageZoom } from "fumadocs-ui/components/image-zoom"; + +const NextImage = defaultMdxComponents.img as ComponentType< + ComponentProps<"img"> +>; + +const Image = ({ + className, + src, + width, + height, + ...props +}: ComponentProps<"img">) => { + const classes = ["rounded-lg", className].filter(Boolean).join(" "); + + const resolvedSrc = typeof src === "string" ? src : (src as any)?.src; + const resolvedWidth = width || (src as any)?.width; + const resolvedHeight = height || (src as any)?.height; + + if (resolvedWidth && resolvedHeight) { + return ( + + ); + } + return ( - + ); - } - - return ; -} +}; export function getMDXComponents(components?: MDXComponents) { - return { - ...defaultMdxComponents, - img: Image, - Accordion, - Accordions, - Badge, - Arg, - ...Discord, - ...components, - } satisfies MDXComponents; + return { + ...defaultMdxComponents, + img: Image, + Accordion, + Accordions, + Badge, + Arg, + ...Discord, + ...components, + } satisfies MDXComponents; } export const useMDXComponents = getMDXComponents; declare global { - type MDXProvidedComponents = ReturnType; + type MDXProvidedComponents = ReturnType; } diff --git a/content/docs/(functions)/Bot/botOwnerID.mdx b/content/docs/(functions)/Bot/botOwnerID.mdx index a3f6e50b..6c4a96dc 100644 --- a/content/docs/(functions)/Bot/botOwnerID.mdx +++ b/content/docs/(functions)/Bot/botOwnerID.mdx @@ -8,13 +8,13 @@ This function returns the Discord ID of the user(s) who own or manage the bot. ## Usage -```bash +```php $botOwnerID ``` Returns a single ID if there's only one owner, or a comma-separated list of IDs if there are multiple owners (e.g., a team). -```bash +```php $botOwnerID[separator] ``` @@ -30,7 +30,7 @@ Returns a list of IDs separated by the specified `separator`. If the bot has a single owner, this will return their ID. -```bash +```php $botOwnerID ``` @@ -38,13 +38,13 @@ $botOwnerID If the bot belongs to a team, this will return the IDs of all team members separated by a pipe (|) character. -```bash +```php $botOwnerID[|] ``` **Example 3: Get the bot owner IDs (team) with the default comma separator:** -```bash +```php $botOwnerID ``` diff --git a/content/docs/(functions)/Bot/botVerified.mdx b/content/docs/(functions)/Bot/botVerified.mdx index 97597afa..25661bac 100644 --- a/content/docs/(functions)/Bot/botVerified.mdx +++ b/content/docs/(functions)/Bot/botVerified.mdx @@ -6,7 +6,7 @@ This function checks if a Discord bot is verified. A verified bot has been revie ## Usage -```bash +```php $botVerified[Bot ID] ``` diff --git a/content/docs/(functions)/Bot/botVersion.mdx b/content/docs/(functions)/Bot/botVersion.mdx index a5e388c1..e95926a2 100644 --- a/content/docs/(functions)/Bot/botVersion.mdx +++ b/content/docs/(functions)/Bot/botVersion.mdx @@ -8,7 +8,7 @@ This function returns the version of your bot. The `$botVersion` function doesn't require any arguments. Simply use it in your commands to retrieve the current bot version. -```bash +```php $botVersion ``` diff --git a/content/docs/(functions)/Bot/getBotActivity.mdx b/content/docs/(functions)/Bot/getBotActivity.mdx index 023b63a6..2cd46bcd 100644 --- a/content/docs/(functions)/Bot/getBotActivity.mdx +++ b/content/docs/(functions)/Bot/getBotActivity.mdx @@ -8,7 +8,7 @@ Retrieves the bot's current activity status (e.g., "Playing...", "Listening to.. ## Usage -```bash +```php $getBotActivity[text/type] ``` diff --git a/content/docs/(functions)/Bot/getBotInvite.mdx b/content/docs/(functions)/Bot/getBotInvite.mdx index e084b313..f798707f 100644 --- a/content/docs/(functions)/Bot/getBotInvite.mdx +++ b/content/docs/(functions)/Bot/getBotInvite.mdx @@ -6,7 +6,7 @@ Generate an invite link for your bot. ## Usage -```bash +```php $getBotInvite[permission;permission;permission...] ``` diff --git a/content/docs/(functions)/Bot/meta.json b/content/docs/(functions)/Bot/meta.json index 243ead13..4fcbaf2d 100644 --- a/content/docs/(functions)/Bot/meta.json +++ b/content/docs/(functions)/Bot/meta.json @@ -1,6 +1,4 @@ { - "title": "Bot Functions", - "pages": [ - "..." - ] + "title": "Bot Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Bot/setBotActivity.mdx b/content/docs/(functions)/Bot/setBotActivity.mdx index 334fee7a..58fab048 100644 --- a/content/docs/(functions)/Bot/setBotActivity.mdx +++ b/content/docs/(functions)/Bot/setBotActivity.mdx @@ -8,7 +8,7 @@ Set your bot's activity status (the text displayed under the bot's name). ## Usage -```bash +```php $setBotActivity[activity type;activity text] ``` @@ -21,7 +21,7 @@ $setBotActivity[activity type;activity text] **Example:** Sets the bot's activity to "Listening to The Cosmos". -```bash +```php $setBotActivity[listening;The Cosmos] ``` diff --git a/content/docs/(functions)/Channel/cacheChannelMessages.mdx b/content/docs/(functions)/Channel/cacheChannelMessages.mdx index 7908ef32..0d81969f 100644 --- a/content/docs/(functions)/Channel/cacheChannelMessages.mdx +++ b/content/docs/(functions)/Channel/cacheChannelMessages.mdx @@ -8,7 +8,7 @@ This command forces the bot to cache the latest messages from a channel. Caching ## Usage -```bash +```php $cacheChannelMessages[Channel ID (optional)] ``` @@ -23,13 +23,13 @@ $cacheChannelMessages[Channel ID (optional)] **Cache messages from the current channel:** -```bash +```php $cacheChannelMessages ``` **Cache messages from a specific channel (using its ID):** -```bash +```php $cacheChannelMessages[123456789012345678] ``` diff --git a/content/docs/(functions)/Channel/channelPermissionsFor.mdx b/content/docs/(functions)/Channel/channelPermissionsFor.mdx index 2d456a6d..13984774 100644 --- a/content/docs/(functions)/Channel/channelPermissionsFor.mdx +++ b/content/docs/(functions)/Channel/channelPermissionsFor.mdx @@ -6,7 +6,7 @@ This function retrieves the permissions a specific user or role has within a giv ## Usage -```bash +```php $channelPermissionsFor[userID/roleID] $channelPermissionsFor[channelID;userID/roleID] ``` diff --git a/content/docs/(functions)/Channel/channelTopic.mdx b/content/docs/(functions)/Channel/channelTopic.mdx index eea5115d..535fac22 100644 --- a/content/docs/(functions)/Channel/channelTopic.mdx +++ b/content/docs/(functions)/Channel/channelTopic.mdx @@ -6,7 +6,7 @@ Retrieves the topic (or description) of a channel. ## Syntax -```bash +```php $channelTopic $channelTopic[channelID] ``` @@ -19,12 +19,12 @@ $channelTopic[channelID] **1. Get the topic of the current channel:** -```bash +```php $channelTopic ``` **2. Get the topic of a specific channel:** -```bash +```php $channelTopic[123456789012345678] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/cloneChannel.mdx b/content/docs/(functions)/Channel/cloneChannel.mdx index abfd096f..5263136b 100644 --- a/content/docs/(functions)/Channel/cloneChannel.mdx +++ b/content/docs/(functions)/Channel/cloneChannel.mdx @@ -6,7 +6,7 @@ Clones a channel, duplicating its permissions. ## Usage -```bash +```php $cloneChannel[Channel ID;New Name (optional);Category (optional);Return ID (yes/no, optional)] ``` @@ -23,7 +23,7 @@ $cloneChannel[Channel ID;New Name (optional);Category (optional);Return ID (yes/ This example clones the channel with the ID "General" and names the clone "General-Cloned". -```bash +```php $cloneChannel[General;General-Cloned] ``` @@ -31,7 +31,7 @@ $cloneChannel[General;General-Cloned] This example clones the channel with the ID "General", names the clone "General-Cloned", and places it in the category named "Category1". -```bash +```php $cloneChannel[General;General-Cloned;Category1] ``` @@ -39,6 +39,6 @@ $cloneChannel[General;General-Cloned;Category1] This clones the channel with the ID "General" and returns the ID of the newly created channel. -```bash +```php $cloneChannel[General;;;yes] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/createForum.mdx b/content/docs/(functions)/Channel/createForum.mdx index 6663250a..652385b4 100644 --- a/content/docs/(functions)/Channel/createForum.mdx +++ b/content/docs/(functions)/Channel/createForum.mdx @@ -6,7 +6,7 @@ Create a new forum channel within your Discord server. ## Usage -```bash +```php $createForum[ {name=Forum name} {topic=Forum topic and guidelines (optional)} @@ -59,7 +59,7 @@ Tags can be defined in two formats: ### Example: -```bash +```php $createForum[ {name=Opinions} {topic=Share your thoughts and opinions on various topics.} diff --git a/content/docs/(functions)/Channel/editForum.mdx b/content/docs/(functions)/Channel/editForum.mdx index efb652ea..3cfac2f8 100644 --- a/content/docs/(functions)/Channel/editForum.mdx +++ b/content/docs/(functions)/Channel/editForum.mdx @@ -6,7 +6,7 @@ Edits an existing forum channel. This allows you to modify various aspects of th ## Usage -```bash +```php $editForum[ {id=Forum Channel ID} {name=Forum name (optional)} @@ -90,7 +90,7 @@ You can repeat the `{tag}` or `{moderator_tag}` parameters as many times as need Adding a tag with an emoji: -```bash +```php $editForum[ {id=123456789} {tag=:heart: Love} @@ -101,7 +101,7 @@ $editForum[ Changing the forum name: -```bash +```php $editForum[ {id=123456789} {name=My cute new forum name} diff --git a/content/docs/(functions)/Channel/eventChannelParent.mdx b/content/docs/(functions)/Channel/eventChannelParent.mdx index 780d30a2..89c42e2a 100644 --- a/content/docs/(functions)/Channel/eventChannelParent.mdx +++ b/content/docs/(functions)/Channel/eventChannelParent.mdx @@ -10,7 +10,7 @@ Returns the ID of the category/forum channel under which a channel or thread was Just use `$eventChannelParent` within the code of a channel-based trigger. It will be replaced with the category/forum's ID. -```bash +```php $eventChannelParent ``` @@ -18,7 +18,7 @@ $eventChannelParent Let's say you have a channel trigger that runs when a new channel is created. You can use `$eventChannelParent` to send a message to a specific log channel informing administrators which category the new channel was created under: -```bash +```php $channelSendMessage[LogChannelID;A new channel ($eventChannelName) was created under category ID: $eventChannelParent] ``` diff --git a/content/docs/(functions)/Channel/findServerChannel.mdx b/content/docs/(functions)/Channel/findServerChannel.mdx index 610c2c23..ac8dee14 100644 --- a/content/docs/(functions)/Channel/findServerChannel.mdx +++ b/content/docs/(functions)/Channel/findServerChannel.mdx @@ -8,7 +8,7 @@ The last parameter determines what the function returns: the channel's ID or `un ## Syntax -```bash +```php $findServerChannel[query;returnCurrentChannel (yes/no) (optional)] ``` diff --git a/content/docs/(functions)/Channel/getChannelMessages.mdx b/content/docs/(functions)/Channel/getChannelMessages.mdx index 1119c799..baf76516 100644 --- a/content/docs/(functions)/Channel/getChannelMessages.mdx +++ b/content/docs/(functions)/Channel/getChannelMessages.mdx @@ -6,7 +6,7 @@ Retrieves the most recent messages from a specified channel. ## Usage -```bash +```php $getChannelMessages[Channel ID;userID or everyone (default is everyone);ids/contents;separator;amount (max 50);reverse (yes/no, default is no)] ``` diff --git a/content/docs/(functions)/Channel/latestMessage.mdx b/content/docs/(functions)/Channel/latestMessage.mdx index 210081dc..36120f15 100644 --- a/content/docs/(functions)/Channel/latestMessage.mdx +++ b/content/docs/(functions)/Channel/latestMessage.mdx @@ -6,7 +6,7 @@ Retrieves the most recent message content or ID from a channel, utilizing the ca ## Usage -```bash +```php $latestMessage[Channel ID (defaults to current channel);User ID (defaults to all users);Return Message ID instead (yes/no, defaults to no)] ``` diff --git a/content/docs/(functions)/Channel/mentionChannel.mdx b/content/docs/(functions)/Channel/mentionChannel.mdx index 2c905018..db0c7ac5 100644 --- a/content/docs/(functions)/Channel/mentionChannel.mdx +++ b/content/docs/(functions)/Channel/mentionChannel.mdx @@ -6,17 +6,17 @@ mention a channel, threads by name or id ## Usage -```bash +```php $mentionChannel[Name/ID] ``` ### Example: -```bash +```php $mentionChannel[chat] ``` ### Example: -```bash +```php $mentionChannel[1234567898765431] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/meta.json b/content/docs/(functions)/Channel/meta.json index e0730803..00c4e99c 100644 --- a/content/docs/(functions)/Channel/meta.json +++ b/content/docs/(functions)/Channel/meta.json @@ -1,6 +1,4 @@ { - "title": "Channel Functions", - "pages": [ - "..." - ] + "title": "Channel Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Channel/removeContains.mdx b/content/docs/(functions)/Channel/removeContains.mdx index 34ea55bd..cde01928 100644 --- a/content/docs/(functions)/Channel/removeContains.mdx +++ b/content/docs/(functions)/Channel/removeContains.mdx @@ -6,7 +6,7 @@ This function allows you to delete messages within a specified channel that cont ## Syntax -```bash +```php $removeContains[channelID;limit;word1;word2;...] ``` @@ -20,7 +20,7 @@ $removeContains[channelID;limit;word1;word2;...] Let's say you want to delete messages in channel `123456789012345678` containing either the word "spam" or the word "advertisement", and you want to check the last 100 messages. You would use: -```bash +```php $removeContains[123456789012345678;100;spam;advertisement] ``` diff --git a/content/docs/(functions)/Channel/serverChannels.mdx b/content/docs/(functions)/Channel/serverChannels.mdx index 48ced272..0ae0c06a 100644 --- a/content/docs/(functions)/Channel/serverChannels.mdx +++ b/content/docs/(functions)/Channel/serverChannels.mdx @@ -6,7 +6,7 @@ This function retrieves a list of all channels within the current server (guild) ## Usage -```bash +```php $serverChannels[info (optional, default: name); type (optional, default: all); separator (optional, default: ", ")] ``` diff --git a/content/docs/(functions)/Channel/setChannelTopic.mdx b/content/docs/(functions)/Channel/setChannelTopic.mdx index 6390e666..8498d5d5 100644 --- a/content/docs/(functions)/Channel/setChannelTopic.mdx +++ b/content/docs/(functions)/Channel/setChannelTopic.mdx @@ -6,7 +6,7 @@ This command allows you to change the topic (also known as the channel descripti ## Usage -```bash +```php $setChannelTopic[channelID;topic] ``` @@ -19,7 +19,7 @@ $setChannelTopic[channelID;topic] Let's say you want to set the topic of the current channel to "This channel is for memes only!". You would use the following command: -```bash +```php $setChannelTopic[$channelID;This channel is for memes only!] ``` diff --git a/content/docs/(functions)/Channel/slowmode.mdx b/content/docs/(functions)/Channel/slowmode.mdx index 0abe7fca..f7135950 100644 --- a/content/docs/(functions)/Channel/slowmode.mdx +++ b/content/docs/(functions)/Channel/slowmode.mdx @@ -13,7 +13,7 @@ The `$slowmode` command takes two arguments: ## Usage Example -```bash +```php $slowmode[123456789012345678;10s] ``` @@ -23,7 +23,7 @@ This example sets the slowmode in the channel with ID `123456789012345678` to 10 To remove slowmode from a channel, use `0` as the time argument: -```bash +```php $slowmode[123456789012345678;0] ``` diff --git a/content/docs/(functions)/Channel/transcriptChannel.mdx b/content/docs/(functions)/Channel/transcriptChannel.mdx index 7b6e36e2..f48fe988 100644 --- a/content/docs/(functions)/Channel/transcriptChannel.mdx +++ b/content/docs/(functions)/Channel/transcriptChannel.mdx @@ -8,7 +8,7 @@ This function generates an HTML file containing a transcript of the latest 100 m ## Usage -```bash +```php $transcriptChannel[Channel ID;Send to Channel ID;Message (optional);file name (optional);return message id or undefined.if message could not be send(yes/no default=no)] ``` diff --git a/content/docs/(functions)/Channel/vcBefore.mdx b/content/docs/(functions)/Channel/vcBefore.mdx index 3ab58574..c3d1334c 100644 --- a/content/docs/(functions)/Channel/vcBefore.mdx +++ b/content/docs/(functions)/Channel/vcBefore.mdx @@ -15,7 +15,7 @@ This function retrieves the voice channel ID associated with a "before" state in ## Usage -```bash +```php $vcBefore ``` diff --git a/content/docs/(functions)/Channel/voiceChannelID.mdx b/content/docs/(functions)/Channel/voiceChannelID.mdx index be5a6121..c722bd36 100644 --- a/content/docs/(functions)/Channel/voiceChannelID.mdx +++ b/content/docs/(functions)/Channel/voiceChannelID.mdx @@ -16,7 +16,7 @@ Returns the ID of the voice channel a user joined or left in a voice trigger eve ## Usage -```bash +```php $voiceChannelID ``` diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index dbfd80f8..3cf2e48b 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown for a command in channel. ## Usage -```bash +```php $channelCooldown[time;error message] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx index 2f514ea9..478f79da 100644 --- a/content/docs/(functions)/Cooldown/clearCoolDown.mdx +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -8,7 +8,7 @@ Clears a cooldown set by cooldown function. ## Usage -```bash +```php $clearCooldown[type;id;token] ``` 1. **type** - (Optional) default value: `user`. Can be `user`, `channel` or `server`. The type of cooldown to clear. diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index 14172f2a..558ffde2 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown in a command for user. ## Usage -```bash +```php $cooldown[time;error message;userID] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Cooldown/getCooldownTime.mdx b/content/docs/(functions)/Cooldown/getCooldownTime.mdx index 1fe352c1..b9bd9919 100644 --- a/content/docs/(functions)/Cooldown/getCooldownTime.mdx +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -6,7 +6,7 @@ Returns remaining time of a cooldown in miliseconds. ## Usage -```bash +```php $getCooldownTime[time;type;id;token] ``` 1. **time** - (Optional) default value: (last cooldown set). The time your cooldown was set to. diff --git a/content/docs/(functions)/Cooldown/meta.json b/content/docs/(functions)/Cooldown/meta.json index 11bfeecc..922a2aee 100644 --- a/content/docs/(functions)/Cooldown/meta.json +++ b/content/docs/(functions)/Cooldown/meta.json @@ -1,6 +1,4 @@ { - "title": "Cooldown functions", - "pages": [ - "..." - ] + "title": "Cooldown functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index c6f850a4..866784a8 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown in a command for the whole server. ## Usage -```bash +```php $serverCooldown[time;error message] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Date/dateToTime.mdx b/content/docs/(functions)/Date/dateToTime.mdx index a4cf85e0..51ed172b 100644 --- a/content/docs/(functions)/Date/dateToTime.mdx +++ b/content/docs/(functions)/Date/dateToTime.mdx @@ -6,7 +6,7 @@ Converts a human-readable date string to milliseconds since the Unix epoch (Janu ## Usage -```bash +```php $dateToTime[Date] ``` diff --git a/content/docs/(functions)/Date/memberJoinedCode.mdx b/content/docs/(functions)/Date/memberJoinedCode.mdx index b69ca293..46e3402d 100644 --- a/content/docs/(functions)/Date/memberJoinedCode.mdx +++ b/content/docs/(functions)/Date/memberJoinedCode.mdx @@ -6,7 +6,7 @@ retrieve the invite code, which the user join from ## Usage -```bash +```php $memberJoinedCode[User ID;Info Type (default code)] ``` diff --git a/content/docs/(functions)/Date/meta.json b/content/docs/(functions)/Date/meta.json index 5a89dd04..43b722d6 100644 --- a/content/docs/(functions)/Date/meta.json +++ b/content/docs/(functions)/Date/meta.json @@ -1,6 +1,4 @@ { - "title": "Date Functions", - "pages": [ - "..." - ] + "title": "Date Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Date/timeToDate.mdx b/content/docs/(functions)/Date/timeToDate.mdx index b0f50fd5..64801d3e 100644 --- a/content/docs/(functions)/Date/timeToDate.mdx +++ b/content/docs/(functions)/Date/timeToDate.mdx @@ -6,7 +6,7 @@ Convert a Unix timestamp (milliseconds since January 1, 1970 UTC) into a formatt ## Usage -```bash +```php $timeToDate[Timestamp;Format (optional)] ``` diff --git a/content/docs/(functions)/Date/upvoteTime.mdx b/content/docs/(functions)/Date/upvoteTime.mdx index e21a85f4..06966e45 100644 --- a/content/docs/(functions)/Date/upvoteTime.mdx +++ b/content/docs/(functions)/Date/upvoteTime.mdx @@ -6,7 +6,7 @@ Returns the time when the current upvote was received. ## Usage -```bash +```php $upvoteTime ``` diff --git a/content/docs/(functions)/Events/eventCreate.mdx b/content/docs/(functions)/Events/eventCreate.mdx index 7df5293a..2e3b07c0 100644 --- a/content/docs/(functions)/Events/eventCreate.mdx +++ b/content/docs/(functions)/Events/eventCreate.mdx @@ -8,7 +8,7 @@ Creates a scheduled event on your server. The `$eventCreate` function allows you to schedule events with various types, including voice, stage, and external events. Here's how to use it: -```bash +```php $eventCreate[ {name=Your event name} {type=Your event type i.e. voice, stage, or external} @@ -61,7 +61,7 @@ When creating `external` events, ensure you specify: This example creates a voice channel event called "Anime Watch!" in the channel "AnimeWatchVC", starting in 10 minutes and lasting for 1 day. -```bash +```php $eventCreate[ {name=Anime Watch!} {start=$math[$timestamp+$parseTime[10m]]} diff --git a/content/docs/(functions)/Events/eventDelete.mdx b/content/docs/(functions)/Events/eventDelete.mdx index 305148d4..eed34cfd 100644 --- a/content/docs/(functions)/Events/eventDelete.mdx +++ b/content/docs/(functions)/Events/eventDelete.mdx @@ -6,7 +6,7 @@ Deletes an existing scheduled event. ## Usage -```bash +```php $eventDelete[event ID] ``` @@ -28,6 +28,6 @@ The `$eventDelete` function deletes a scheduled event using its unique event ID. Let's say you have an event with the ID `1234567890`. To delete this event, you would use: -```bash +```php $eventDelete[1234567890] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Events/eventEdit.mdx b/content/docs/(functions)/Events/eventEdit.mdx index 3b7614bf..8b71fcbe 100644 --- a/content/docs/(functions)/Events/eventEdit.mdx +++ b/content/docs/(functions)/Events/eventEdit.mdx @@ -8,7 +8,7 @@ Edit an existing scheduled event using its ID. This function allows you to modify various aspects of a scheduled event, such as its name, type, start and end times, description, and more. -```bash +```php $eventEdit[ {event=Event ID to edit} {name=New event name} @@ -45,7 +45,7 @@ $eventEdit[ This example demonstrates changing the name of an event with the ID `12345` to "My event new name!". -```bash +```php $eventEdit[ {event=12345} {name=My event new name!} diff --git a/content/docs/(functions)/Events/eventExists.mdx b/content/docs/(functions)/Events/eventExists.mdx index cc215ce6..bbd3a6db 100644 --- a/content/docs/(functions)/Events/eventExists.mdx +++ b/content/docs/(functions)/Events/eventExists.mdx @@ -6,7 +6,7 @@ Checks if an event with the specified ID exists. ## Usage -```bash +```php $eventExists[event id] ``` diff --git a/content/docs/(functions)/Events/eventStart.mdx b/content/docs/(functions)/Events/eventStart.mdx index 1f9f9774..44c729f1 100644 --- a/content/docs/(functions)/Events/eventStart.mdx +++ b/content/docs/(functions)/Events/eventStart.mdx @@ -10,7 +10,7 @@ This function allows you to initiate a scheduled event immediately. You'll need ## Usage -```bash +```php $eventStart[Event ID] ``` @@ -22,7 +22,7 @@ $eventStart[Event ID] To start a scheduled event with the ID `my_event_123`, you would use the following: -```bash +```php $eventStart[my_event_123] ``` diff --git a/content/docs/(functions)/Events/getEventInfo.mdx b/content/docs/(functions)/Events/getEventInfo.mdx index fec8fd8f..eb4b06b5 100644 --- a/content/docs/(functions)/Events/getEventInfo.mdx +++ b/content/docs/(functions)/Events/getEventInfo.mdx @@ -6,7 +6,7 @@ Retrieves information about a specific event within a guild (server). ## Usage -```bash +```php $getEventInfo[event id;info type] ``` diff --git a/content/docs/(functions)/Events/getEventUsers.mdx b/content/docs/(functions)/Events/getEventUsers.mdx index 6d28d440..2c684a2e 100644 --- a/content/docs/(functions)/Events/getEventUsers.mdx +++ b/content/docs/(functions)/Events/getEventUsers.mdx @@ -6,7 +6,7 @@ Retrieves a list of users who have expressed interest in a specific event. ## Usage -```bash +```php $getEventUsers[event id;separator (default is ', ')] ``` diff --git a/content/docs/(functions)/Events/meta.json b/content/docs/(functions)/Events/meta.json index 22d35ce3..0a3a545a 100644 --- a/content/docs/(functions)/Events/meta.json +++ b/content/docs/(functions)/Events/meta.json @@ -1,6 +1,4 @@ { - "title": "Event Functions", - "pages": [ - "..." - ] + "title": "Event Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Image/imageBorderRad.mdx b/content/docs/(functions)/Image/imageBorderRad.mdx index 6d2fb2b9..b93bf597 100644 --- a/content/docs/(functions)/Image/imageBorderRad.mdx +++ b/content/docs/(functions)/Image/imageBorderRad.mdx @@ -8,11 +8,11 @@ Control the border radius of a filled box created with $imageFill. This allows y You can specify a single radius value to apply to all corners, or provide individual values for each corner for more precise control. -```bash +```php $imageBorderRad[border radius for all corners] ``` -```bash +```php $imageBorderRad[top-left corner radius; top-right corner radius; bottom-right corner radius; bottom-left corner radius] ``` diff --git a/content/docs/(functions)/Image/imageCreate.mdx b/content/docs/(functions)/Image/imageCreate.mdx index 867bf28d..c74255fd 100644 --- a/content/docs/(functions)/Image/imageCreate.mdx +++ b/content/docs/(functions)/Image/imageCreate.mdx @@ -6,7 +6,7 @@ Creates a new, blank image with specified dimensions. ## Usage -```bash +```php $imageCreate[width;height] ``` diff --git a/content/docs/(functions)/Image/imageCrop.mdx b/content/docs/(functions)/Image/imageCrop.mdx index 3163497d..b556a461 100644 --- a/content/docs/(functions)/Image/imageCrop.mdx +++ b/content/docs/(functions)/Image/imageCrop.mdx @@ -6,7 +6,7 @@ Crop a defined image from image builder ## Usage -```bash +```php $imageCrop[image name;x;y;width;height] ``` diff --git a/content/docs/(functions)/Image/imageDraw.mdx b/content/docs/(functions)/Image/imageDraw.mdx index 5abd829d..ead88c05 100644 --- a/content/docs/(functions)/Image/imageDraw.mdx +++ b/content/docs/(functions)/Image/imageDraw.mdx @@ -6,7 +6,7 @@ Draws a loaded image onto the current image. This allows you to composite images ## Usage -```bash +```php $imageDraw[image name;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageDrawBack.mdx b/content/docs/(functions)/Image/imageDrawBack.mdx index c21c7e57..38bea6d2 100644 --- a/content/docs/(functions)/Image/imageDrawBack.mdx +++ b/content/docs/(functions)/Image/imageDrawBack.mdx @@ -6,7 +6,7 @@ Draws a loaded image behind the current image. This allows you to layer images a ## Usage -```bash +```php $imageDrawBack[image name;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageFill.mdx b/content/docs/(functions)/Image/imageFill.mdx index dc56d269..7721ab55 100644 --- a/content/docs/(functions)/Image/imageFill.mdx +++ b/content/docs/(functions)/Image/imageFill.mdx @@ -6,7 +6,7 @@ Fill a portion of an image with a specified color. ## Usage -```bash +```php $imageFill[color;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageLineHeight.mdx b/content/docs/(functions)/Image/imageLineHeight.mdx index bbea4f8b..7b8297cb 100644 --- a/content/docs/(functions)/Image/imageLineHeight.mdx +++ b/content/docs/(functions)/Image/imageLineHeight.mdx @@ -6,7 +6,7 @@ Adjust the line height used when drawing text within the image builder. The defa ## Usage -```bash +```php $imageLineHeight[New Value (optional)] ``` @@ -23,7 +23,7 @@ $imageLineHeight[New Value (optional)] To set the line height to `1.3`, use the following command: -```bash +```php $imageLineHeight[1.3] ``` diff --git a/content/docs/(functions)/Image/imageLoadEmoji.mdx b/content/docs/(functions)/Image/imageLoadEmoji.mdx index e609826e..c00c5bab 100644 --- a/content/docs/(functions)/Image/imageLoadEmoji.mdx +++ b/content/docs/(functions)/Image/imageLoadEmoji.mdx @@ -6,7 +6,7 @@ Loads an emoji (either a standard Unicode emoji or a custom Discord emoji) for u ## Usage -```bash +```php $imageLoadEmoji[id;Emoji] ``` diff --git a/content/docs/(functions)/Image/imageLoadFromURL.mdx b/content/docs/(functions)/Image/imageLoadFromURL.mdx index bd26d807..ff2ad499 100644 --- a/content/docs/(functions)/Image/imageLoadFromURL.mdx +++ b/content/docs/(functions)/Image/imageLoadFromURL.mdx @@ -6,7 +6,7 @@ Loads an image from a URL and saves it with a reference name for later use in ot ## Usage -```bash +```php $imageLoadFromURL[name;URL] ``` diff --git a/content/docs/(functions)/Image/imageOutput.mdx b/content/docs/(functions)/Image/imageOutput.mdx index 8b369ff8..754cdc59 100644 --- a/content/docs/(functions)/Image/imageOutput.mdx +++ b/content/docs/(functions)/Image/imageOutput.mdx @@ -8,7 +8,7 @@ This function saves the current image being drawn into a file and returns the fi ## Usage -```bash +```php $imageOutput[type] ``` @@ -22,7 +22,7 @@ These examples assume you've already used functions like `$imageCreate` and othe **Example 1: Sending the image directly using `$image`** -```bash +```php $imageCreate[...] // Create the initial image (replace [...] with actual parameters) // ... Building the image using other $image functions ... $image[$imageOutput[png]] // Save as PNG and send the image using $image function @@ -37,7 +37,7 @@ $image[$imageOutput[png]] // Save as PNG and send the image using $image functio **Example 2: Sending the image using `{image:...}` in `$sendMessage`** -```bash +```php $imageCreate[...] // Create the initial image (replace [...] with actual parameters) // ... Building the image using other $image functions ... $sendMessage[{image:$imageOutput[jpg]}] // Save as JPG and send the image using $sendMessage function diff --git a/content/docs/(functions)/Image/imagePositionBase.mdx b/content/docs/(functions)/Image/imagePositionBase.mdx index ad06ee0c..21d10994 100644 --- a/content/docs/(functions)/Image/imagePositionBase.mdx +++ b/content/docs/(functions)/Image/imagePositionBase.mdx @@ -6,7 +6,7 @@ Control the base position for drawing images or objects. By default, the base po ## Usage -```bash +```php $imagePositionBase[Base] ``` diff --git a/content/docs/(functions)/Image/imageSetOpacity.mdx b/content/docs/(functions)/Image/imageSetOpacity.mdx index ce4c4603..b42bd866 100644 --- a/content/docs/(functions)/Image/imageSetOpacity.mdx +++ b/content/docs/(functions)/Image/imageSetOpacity.mdx @@ -6,7 +6,7 @@ Sets the global opacity for all subsequent drawing operations performed by the i ## Usage -```bash +```php $imageSetOpacity[opacity] ``` @@ -22,7 +22,7 @@ $imageSetOpacity[opacity] This example sets the opacity to 50%, making subsequent drawings semi-transparent. -```bash +```php $imageSetOpacity[50] ``` @@ -30,7 +30,7 @@ $imageSetOpacity[50] This example demonstrates how to use `$imageSetOpacity` to draw two avatars with different opacities. It fetches the author's avatar, loads it into the image builder, draws it once at full opacity, then sets the opacity to 50% and draws it again. -```bash +```php !!exec $let[avatar;$replaceText[$authoravatar;.webp;.png]] $imageCreate[300;300] $imageLoadFromURL[avatar;$avatar] diff --git a/content/docs/(functions)/Image/imageStroke.mdx b/content/docs/(functions)/Image/imageStroke.mdx index 1b580b36..8da08594 100644 --- a/content/docs/(functions)/Image/imageStroke.mdx +++ b/content/docs/(functions)/Image/imageStroke.mdx @@ -6,7 +6,7 @@ Draws a rectangle outline (stroke) on the canvas. ## Usage -```bash +```php $imageStroke[color;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageStrokeWidth.mdx b/content/docs/(functions)/Image/imageStrokeWidth.mdx index 6ab5db10..2734f989 100644 --- a/content/docs/(functions)/Image/imageStrokeWidth.mdx +++ b/content/docs/(functions)/Image/imageStrokeWidth.mdx @@ -6,7 +6,7 @@ Controls the thickness of the stroke line used by the `$imageStroke` function. T ## Usage -```bash +```php $imageStrokeWidth[width] ``` diff --git a/content/docs/(functions)/Image/imageTextColor.mdx b/content/docs/(functions)/Image/imageTextColor.mdx index 59b5ce02..ed031eb9 100644 --- a/content/docs/(functions)/Image/imageTextColor.mdx +++ b/content/docs/(functions)/Image/imageTextColor.mdx @@ -8,7 +8,7 @@ Specifies the fill and stroke color of the text in your image. This command allo The `$imageTextColor` command takes a single argument: the color you want to use for the text. -```bash +```php $imageTextColor[Color name] ``` @@ -24,13 +24,13 @@ $imageTextColor[Color name] To set the text color to blue: -```bash +```php $imageTextColor[blue] ``` To set the text color to a specific shade of green using a hexadecimal code: -```bash +```php $imageTextColor[#008000] ``` diff --git a/content/docs/(functions)/Image/imageTextFill.mdx b/content/docs/(functions)/Image/imageTextFill.mdx index 69372a6d..25387107 100644 --- a/content/docs/(functions)/Image/imageTextFill.mdx +++ b/content/docs/(functions)/Image/imageTextFill.mdx @@ -6,7 +6,7 @@ Add filled text to an image. ## Usage -```bash +```php $imageTextFill[Text;position x;position y;color;opacity] ``` diff --git a/content/docs/(functions)/Image/imageTextFillColor.mdx b/content/docs/(functions)/Image/imageTextFillColor.mdx index 273beb48..b059f5cc 100644 --- a/content/docs/(functions)/Image/imageTextFillColor.mdx +++ b/content/docs/(functions)/Image/imageTextFillColor.mdx @@ -8,7 +8,7 @@ This function allows you to control the color of the text you add to images. Yo ## Syntax -```bash +```php $imageTextFillColor[Color name] ``` @@ -23,13 +23,13 @@ $imageTextFillColor[Color name] To set the text fill color to blue: -```bash +```php $imageTextFillColor[blue] ``` To set the text fill color to a specific shade of green using a hex code: -```bash +```php $imageTextFillColor[#008000] ``` diff --git a/content/docs/(functions)/Image/imageTextStroke.mdx b/content/docs/(functions)/Image/imageTextStroke.mdx index 225cff2f..51b30328 100644 --- a/content/docs/(functions)/Image/imageTextStroke.mdx +++ b/content/docs/(functions)/Image/imageTextStroke.mdx @@ -6,17 +6,17 @@ Add a stroke (border) to text on an image. This effect can enhance the visibilit ## Usage -```bash +```php $imageTextStroke[Text;position x;position y;color (optional);opacity (optional)] ``` **Parameters:** -* **`Text`**: The text you want to add a stroke to. -* **`position x`**: The horizontal position of the text. See details below. -* **`position y`**: The vertical position of the text. See details below. -* **`color (optional)`**: The color of the stroke (border). You can use Hex codes (e.g., `#FFFFFF` for white) or named colors (e.g., `red`). If omitted, a default color will be used. -* **`opacity (optional)`**: The opacity of the stroke, ranging from 0 (fully transparent) to 1 (fully opaque). If omitted, the stroke will be fully opaque (1). +- **`Text`**: The text you want to add a stroke to. +- **`position x`**: The horizontal position of the text. See details below. +- **`position y`**: The vertical position of the text. See details below. +- **`color (optional)`**: The color of the stroke (border). You can use Hex codes (e.g., `#FFFFFF` for white) or named colors (e.g., `red`). If omitted, a default color will be used. +- **`opacity (optional)`**: The opacity of the stroke, ranging from 0 (fully transparent) to 1 (fully opaque). If omitted, the stroke will be fully opaque (1). ## Understanding Position (X & Y) @@ -24,13 +24,13 @@ For a deeper understanding of how to specify the X and Y coordinates for text po ## Related: Size (Width & Height) -While not directly used in `$imageTextStroke`, understanding how to set image dimensions can be helpful when working with text. You can learn more about width and height settings [here](/CodeReferences/ref.imgbuild.size). +While not directly used in `$imageTextStroke`, understanding how to set image dimensions can be helpful when working with text. You can learn more about width and height settings [here](/CodeReferences/ref.imgbuild.size). ## Example This example creates an image, sets the text size and alignment, and then adds stroked text to the image. -```discord +```php !!exec $imageCreate[300;300] $imageTextSize[30] $imageTextAlign[center] @@ -41,11 +41,28 @@ $image[$imageOutput] **Result:** - -!!exec $imageCreate[300;300]
$imageTextSize[30]
$imageTextAlign[center]
$imageTextStroke[CC is Awesome;150;150;#4461b3]
$image[$imageOutput]

-
- - - - -
\ No newline at end of file + + !!exec $imageCreate[300;300] +
+ $imageTextSize[30] +
+ $imageTextAlign[center] +
+ $imageTextStroke[CC is Awesome;150;150;#4461b3] +
+ $image[$imageOutput] +
+
+
+ + + +
diff --git a/content/docs/(functions)/Image/imageTextStrokeColor.mdx b/content/docs/(functions)/Image/imageTextStrokeColor.mdx index 5a6f1a73..a8aa09e4 100644 --- a/content/docs/(functions)/Image/imageTextStrokeColor.mdx +++ b/content/docs/(functions)/Image/imageTextStrokeColor.mdx @@ -10,7 +10,7 @@ The `$imageTextStrokeColor` function allows you to define the color of the outli ## Usage -```bash +```php $imageTextStrokeColor[Color name] ``` @@ -22,13 +22,13 @@ $imageTextStrokeColor[Color name] To set the text stroke color to blue, you would use: -```bash +```php $imageTextStrokeColor[blue] ``` To set the text stroke color to a specific shade of green using a hex code, you would use: -```bash +```php $imageTextStrokeColor[#00FF00] ``` diff --git a/content/docs/(functions)/Image/imageTextWeight.mdx b/content/docs/(functions)/Image/imageTextWeight.mdx index 526abb10..91065c69 100644 --- a/content/docs/(functions)/Image/imageTextWeight.mdx +++ b/content/docs/(functions)/Image/imageTextWeight.mdx @@ -6,7 +6,7 @@ Controls the font weight (thickness) and style of text rendered on your images. ## Usage -```bash +```php $imageTextWeight[Weight Type] ``` @@ -28,6 +28,6 @@ Here's a breakdown of the allowed values for `[Weight Type]`: To make your image text appear in bold, you would use: -```bash +```php $imageTextWeight[bold] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageUseFont.mdx b/content/docs/(functions)/Image/imageUseFont.mdx index 9a45393d..eab01474 100644 --- a/content/docs/(functions)/Image/imageUseFont.mdx +++ b/content/docs/(functions)/Image/imageUseFont.mdx @@ -6,7 +6,7 @@ Sets the font type for text rendered on images. ## Usage -```bash +```php $imageUseFont[font name] ``` diff --git a/content/docs/(functions)/Image/imageWidth.mdx b/content/docs/(functions)/Image/imageWidth.mdx index 7b82924e..479290f0 100644 --- a/content/docs/(functions)/Image/imageWidth.mdx +++ b/content/docs/(functions)/Image/imageWidth.mdx @@ -6,7 +6,7 @@ Retrieves the width of an image. This function allows you to dynamically get the ## Usage -```bash +```php $imageWidth[image name] ``` @@ -18,7 +18,7 @@ $imageWidth[image name] This example shows how to get the width of the currently loaded image. -```bash +```php $imageWidth ``` @@ -28,7 +28,7 @@ This will return the width (in pixels) of the image currently being processed. This example shows how to get the width of an image that was loaded and assigned the name "avatar". -```bash +```php $imageWidth[avatar] ``` diff --git a/content/docs/(functions)/Image/meta.json b/content/docs/(functions)/Image/meta.json index 0850c17a..f38cecd9 100644 --- a/content/docs/(functions)/Image/meta.json +++ b/content/docs/(functions)/Image/meta.json @@ -1,6 +1,4 @@ { - "title": "Image Builder functions", - "pages": [ - "..." - ] + "title": "Image Builder functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Interaction/commandName.mdx b/content/docs/(functions)/Interaction/commandName.mdx index 213b146d..d97c07ff 100644 --- a/content/docs/(functions)/Interaction/commandName.mdx +++ b/content/docs/(functions)/Interaction/commandName.mdx @@ -12,7 +12,7 @@ This function only works within the context of a [slash command](/Trigger/slash) ## Usage -```bash +```php $commandName ``` @@ -22,7 +22,7 @@ This example demonstrates how to use `$commandName` to display the name of the c ### Code -```bash +```php $interactionReply[:game_die: $random[1;6]] $interactionReply[Command ran: `$commandName`] ``` diff --git a/content/docs/(functions)/Interaction/getOption.mdx b/content/docs/(functions)/Interaction/getOption.mdx index 82d4b16c..d7388d88 100644 --- a/content/docs/(functions)/Interaction/getOption.mdx +++ b/content/docs/(functions)/Interaction/getOption.mdx @@ -6,7 +6,7 @@ Retrieves the value of a user-provided option from an interaction, such as a sla ## Usage -```bash +```php $getOption[Option name] ``` diff --git a/content/docs/(functions)/Interaction/meta.json b/content/docs/(functions)/Interaction/meta.json index 1ee45c00..e405870f 100644 --- a/content/docs/(functions)/Interaction/meta.json +++ b/content/docs/(functions)/Interaction/meta.json @@ -1,6 +1,4 @@ { - "title": "Interaction Functions", - "pages": [ - "..." - ] + "title": "Interaction Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx index abf396ba..da0e655a 100644 --- a/content/docs/(functions)/Member/authorAvatar.mdx +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -6,7 +6,7 @@ Returns the avatar (profile picture) URL of the user who executed the command. ## Usage -```bash +```php $authorAvatar[serverAvatar] ``` 1. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index a0c5119b..cd8f939d 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -6,7 +6,7 @@ Returns the ID of the user who executed the command. ## Usage -```bash +```php $authorID ``` diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index 136c4da4..aeb742f0 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -6,7 +6,7 @@ Bans a user from the server. ## Usage -```bash +```php $ban[userID;reason;messages to delete] ``` 1. **userID** - The ID of the user to ban. diff --git a/content/docs/(functions)/Member/blackListIDs.mdx b/content/docs/(functions)/Member/blackListIDs.mdx index 2a1bd7e6..0643f89c 100644 --- a/content/docs/(functions)/Member/blackListIDs.mdx +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -8,7 +8,7 @@ Prevent users from using a command by blacklisting their IDs. The `$blackListIDs` function allows you to restrict access to a command for a specified list of users. If a blacklisted user attempts to use the command, the function will return a custom error message. -```bash +```php $blackListIDs[userID;userID;...;error message] ``` 1. **userID** - This makes user not able to run this command. You can add as many userIDs as you want, separated with semicolon (`;`). diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx index 4c511c69..743d0cf4 100644 --- a/content/docs/(functions)/Member/boostingSince.mdx +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -6,7 +6,7 @@ Returns the date a user started boosting the server. ## Usage -```bash +```php $boostingSince[userID;date/ms] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to return boosting date diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 9e4b5003..5cd8bd47 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -6,7 +6,7 @@ Changes the nickname of a specified member in the server. ## Usage: -```bash +```php $changeNickname[userID;nickname] ``` 1. **userID** - The ID of the member whose nickname you want to change. diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx index db1d5643..16660a87 100644 --- a/content/docs/(functions)/Member/discriminator.mdx +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -6,7 +6,7 @@ Returns the discriminator of the user who executed the command, or a specified m ## Usage: -```bash +```php $discriminator[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user you want to return the discriminator from. diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx index 1d5aa8c9..08f6a209 100644 --- a/content/docs/(functions)/Member/displayName.mdx +++ b/content/docs/(functions)/Member/displayName.mdx @@ -6,7 +6,7 @@ Returns the display name of a specified user. This is the name that's shown for ## Usage -```bash +```php $displayName[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return display name from. diff --git a/content/docs/(functions)/Member/eventNewNickname.mdx b/content/docs/(functions)/Member/eventNewNickname.mdx index 31421bdb..07b0d1ac 100644 --- a/content/docs/(functions)/Member/eventNewNickname.mdx +++ b/content/docs/(functions)/Member/eventNewNickname.mdx @@ -6,7 +6,7 @@ Returns the new nickname of a member when their nickname is updated. Works in `O ## Usage -```bash +```php $eventNewNickname ``` @@ -16,7 +16,7 @@ $eventNewNickname Imagine you have a Nickname Change command that logs the new nickname to a channel -```bash +```php $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` diff --git a/content/docs/(functions)/Member/eventOldNickname.mdx b/content/docs/(functions)/Member/eventOldNickname.mdx index b93274c2..4355e9dc 100644 --- a/content/docs/(functions)/Member/eventOldNickname.mdx +++ b/content/docs/(functions)/Member/eventOldNickname.mdx @@ -6,7 +6,7 @@ Returns the old nickname of a member when their nickname is updated. Works in `O ## Usage -```bash +```php $eventOldNickname ``` @@ -16,7 +16,7 @@ $eventOldNickname Imagine you have a Nickname Change command that logs the new nickname to a channel -```bash +```php $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx index 6d5c1d77..0a9ee090 100644 --- a/content/docs/(functions)/Member/findMember.mdx +++ b/content/docs/(functions)/Member/findMember.mdx @@ -6,7 +6,7 @@ Searches for a user in the current server by their nickname, ID, mention, userna ## Usage: -```bash +```php $findMember[query;returnCurrentUser] ``` 1. **query** - Can be userID, nickname, mention, username, username#descriminator. diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx index 895b7180..c1040f95 100644 --- a/content/docs/(functions)/Member/getUserBadges.mdx +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -6,7 +6,7 @@ Returns the Discord badges from specified user. If none found, returns `none`. I ## Usage -```bash +```php $getUserBadges[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. Which user to return badges from. diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx index 25ebf4c7..c0e061c6 100644 --- a/content/docs/(functions)/Member/globalName.mdx +++ b/content/docs/(functions)/Member/globalName.mdx @@ -6,7 +6,7 @@ Returns the global name of the user ## Usage -```bash +```php $globalName[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return global name from. diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx index c5c568a9..e436e5cc 100644 --- a/content/docs/(functions)/Member/hasAnyPerm.mdx +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -6,7 +6,7 @@ Checks if a user has one of the given permissions. Returns `true` or `false`. ## Usage -```bash +```php $hasAnyPerm[userID;permission1;permission2;...] ``` 1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx index 051e69f5..aa871bf4 100644 --- a/content/docs/(functions)/Member/hasAnyRole.mdx +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -6,7 +6,7 @@ Checks if a user has one of the given roles. Returns `true` or `false`. ## Usage -```bash +```php $hasAnyRole[userID;roleID1;roleID2;...] ``` 1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx index 245a9dd8..dc67faa4 100644 --- a/content/docs/(functions)/Member/hasPerms.mdx +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -6,7 +6,7 @@ Checks if user has all of the given permissions. Returns `true` or `false`. ## Usage: -```bash +```php $hasPerms[userID;perm1;perm2;...] ``` 1. **userID** - User you want to check for permissions. diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx index 173e9df3..39c09ad5 100644 --- a/content/docs/(functions)/Member/hasRoles.mdx +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -6,7 +6,7 @@ Checks if user has all of the given roles. Returns `true` or `false`. ## Usage: -```bash +```php $hasRoles[userID;role1;role2;...] ``` 1. **userID** - User you want to check for roles. diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index 821ee814..f57506d2 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -6,7 +6,7 @@ Checks if a user is banned from the guild. Returns `true` or `false`. ## Usage -```bash +```php $isBanned[userID] ``` 1. **userID** - The ID of the user to check if it's banned. diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx index 608522be..d3092d5f 100644 --- a/content/docs/(functions)/Member/isUserDMEnabled.mdx +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -6,7 +6,7 @@ This function checks if a user has direct messages (DMs) enabled. It returns `t ## Usage -```bash +```php $isUserDMEnabled[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of the user you want to check. diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index e1def207..73f90dee 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -6,7 +6,7 @@ Kicks a user from the server. ## Usage -```bash +```php $kick[userID;reason] ``` 1. **userID** - The ID of the user to kick. diff --git a/content/docs/(functions)/Member/memberSearch.mdx b/content/docs/(functions)/Member/memberSearch.mdx index 8e9bbd38..a5ba781c 100644 --- a/content/docs/(functions)/Member/memberSearch.mdx +++ b/content/docs/(functions)/Member/memberSearch.mdx @@ -6,7 +6,7 @@ Search for members with username or nickname in the server and get their informa ## Usage -```bash +```php $memberSearch[username/nickname;amount to return (Default is 1);separator (Default is ,);info to return (Default is id)] ``` diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx index f71d16f7..da4ac0dd 100644 --- a/content/docs/(functions)/Member/membersWithStatus.mdx +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -6,7 +6,7 @@ Returns a list of member IDs who have specified status within the server separat ## Usage -```bash +```php $membersWithStatus[Status1;Status2;...] ``` 1. **Status N** - You can add multiple statuses. Can be `online`, `idle`, `dnd` (Do Not Disturb), `offline` (Includes invisible users), `streaming` (only valid for activities), `mobile` (only valid for platforms), `desktop` (only valid for platforms), `web` (only valid for platforms) diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index 6bc4733b..c642ae2c 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -6,7 +6,7 @@ Returns a mention of a user. ## Usage -```bash +```php $mention[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to get mentioned. diff --git a/content/docs/(functions)/Member/meta.json b/content/docs/(functions)/Member/meta.json index 16ca45bd..7fdfb4f0 100644 --- a/content/docs/(functions)/Member/meta.json +++ b/content/docs/(functions)/Member/meta.json @@ -1,6 +1,4 @@ { - "title": "Member Functions", - "pages": [ - "..." - ] + "title": "Member Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Member/moveUser.mdx b/content/docs/(functions)/Member/moveUser.mdx index 60623b83..c95ffb62 100644 --- a/content/docs/(functions)/Member/moveUser.mdx +++ b/content/docs/(functions)/Member/moveUser.mdx @@ -6,7 +6,7 @@ Moves a user to a different voice channel, or disconnects them from their curren ## Usage -```bash +```php $moveUser[userID;channelID;reason] ``` 1. **userID** - The ID of user to be moved. diff --git a/content/docs/(functions)/Member/muteUser.mdx b/content/docs/(functions)/Member/muteUser.mdx index 4cf6c1ca..2f6a903a 100644 --- a/content/docs/(functions)/Member/muteUser.mdx +++ b/content/docs/(functions)/Member/muteUser.mdx @@ -6,7 +6,7 @@ Mutes or unmutes a user in a voice channel. ## Usage -```bash +```php $muteUser[userID;mute;reason] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to mute diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index ab822f58..781ab232 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -6,7 +6,7 @@ Returns the nickname of the user or the display name if you specified the 2nd in ## Usage -```bash +```php $nickname[User ID;Return Display name if no nickname exists (yes/no, default is no)] ``` 1. **User ID** - (Optional) default value: `$authorID`. The ID of user to return nickname from. diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index b6ad9446..683a3183 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -8,7 +8,7 @@ Returns the status of a user. Can be `online`, `offline`, `idle` or `dnd`. ## Usage -```bash +```php $status[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to return the status from. diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index deeac3d5..223d7fb3 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -6,7 +6,7 @@ Unbans a user from the server. ## Usage -```bash +```php $unban[userID/username;reason] ``` 1. **userID/username** - The ID or username of user to unban. diff --git a/content/docs/(functions)/Member/upvoteReferralUserID.mdx b/content/docs/(functions)/Member/upvoteReferralUserID.mdx index da84275e..f4cce14b 100644 --- a/content/docs/(functions)/Member/upvoteReferralUserID.mdx +++ b/content/docs/(functions)/Member/upvoteReferralUserID.mdx @@ -6,7 +6,7 @@ Returns the ID of the user whose referral link was used for the current upvote. ## Usage -```bash +```php $upvoteReferralUserID ``` diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 9a9451f0..7cd59b4d 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -7,7 +7,7 @@ Retrieve an information about user given his user id, like his username. Multiple options to retrive informations from user. ## Usage -```bash +```php $user[userID;option] ``` diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx index e91fc98c..feec253f 100644 --- a/content/docs/(functions)/Member/userAvatar.mdx +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -5,7 +5,7 @@ title: "$userAvatar" Returns the avatar (profile picture) URL of the user who was specified. ## Usage -```bash +```php $userAvatar[userID;size;dynamic;serverAvatar] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return avatar URL from. diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx index bea520fd..7d5a092d 100644 --- a/content/docs/(functions)/Member/userBanner.mdx +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -6,7 +6,7 @@ Returns the banner URL of a user. ## Usage -```bash +```php $userBanner[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return banner URL from. If no banner is found, returns `undefined`. diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx index d11e2062..b52d9161 100644 --- a/content/docs/(functions)/Member/userConnectedVC.mdx +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -6,7 +6,7 @@ Returns the ID of a voice channel the user is currently connected to. ## Usage -```bash +```php $userConnectedVC[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return voice channel they are connected to. diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index 5973a4cb..fd2eb3bd 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -6,7 +6,7 @@ Checks if a user exists in the server. Returns `true` if the user exists, and `f ## Usage -```bash +```php $userExists[userID] ``` 1. **userID** - The ID of the user to check. If left empty, false will be returned. diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index ba2ae5a8..23bbd416 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -5,7 +5,7 @@ title: "$userID" Returns a user ID based on the given username. ## Usage -```bash +```php $userID[username] ``` 1. **username** - (Optional) if not provided, $authorID will be returned. The username of a user you want to return ID of. diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index 1abcd0a9..d9495f75 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -6,7 +6,7 @@ Returns a list of permissions a user has across the server based on their roles. ## Usage -```bash +```php $userPerms[userID;separator] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return permissions from. diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index 123ac8b4..dd07b4a6 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -6,7 +6,7 @@ Checks if a user has reacted to a message with the given emoji. Returns `true` o ## Usage -```bash +```php $userReacted[channelID;messageID;userID;reaction] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to check reaction in. diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index a70dd9dc..3017930a 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -6,7 +6,7 @@ Returns the hex color code of the users highest role. ## Usage -```bash +```php $userRoleColor[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return top role color from. diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index 11f345c1..441b58eb 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -6,7 +6,7 @@ Returns the username and tag (discriminator) of a user. ## Usage -```bash +```php $userTag[userID] ``` 1. **userID** - (Opional) default value: `$authorID`. The ID of a user you want to return username and tag from. diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index cd1e0b24..9dcd4284 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -6,7 +6,7 @@ Returns the username of the given user. ## Usage -```bash +```php $username[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return nickname from. diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 3e140d90..ee61ae50 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -6,7 +6,7 @@ Returns a list of users banned from the current server. ## Usage -```bash +```php $usersBanned[type;separator] ``` 1. **type** - (Optional) default value: `username`. Can be `id`, `username` or `mention`. What format of returned users do you want. diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index 6b57bec9..e09d13eb 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -6,7 +6,7 @@ Returns a list of users in given text or voice channel. ## Usage -```bash +```php $usersInChannel[channelID;type;separator] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to return list of users from. diff --git a/content/docs/(functions)/Member/usersTyping.mdx b/content/docs/(functions)/Member/usersTyping.mdx index 449ff4ec..11fed9e8 100644 --- a/content/docs/(functions)/Member/usersTyping.mdx +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -6,7 +6,7 @@ Returns a list of users currently typing in a channel. If no users are typing, r ## Usage -```bash +```php $usersTyping[channelID;type;separator] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to check users typing in. diff --git a/content/docs/(functions)/Member/usersWithRole.mdx b/content/docs/(functions)/Member/usersWithRole.mdx index 72064f04..e3571706 100644 --- a/content/docs/(functions)/Member/usersWithRole.mdx +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -6,7 +6,7 @@ Returns a list of users who have the given role. ## Usage -```bash +```php $usersWithRole[roleID;separator;type] ``` 1. **roleID** - (Optional) default value: (users without any roles). The ID of a role you want to retrive users with. diff --git a/content/docs/(functions)/Message/argsCheck.mdx b/content/docs/(functions)/Message/argsCheck.mdx index 469482a1..ceae1c0b 100644 --- a/content/docs/(functions)/Message/argsCheck.mdx +++ b/content/docs/(functions)/Message/argsCheck.mdx @@ -10,7 +10,7 @@ This function checks if the user has provided the correct number of arguments. I ## Syntax -```bash +```php $argsCheck[(>//1;You need to provide at least two arguments!] ``` @@ -43,7 +43,7 @@ This ensures the user provides more than one argument (e.g., 2, 3, 4, etc.). If **3. Checking for Less Than 3 Arguments:** -```bash +```php $argsCheck[<3;Please provide fewer than three arguments.] ``` @@ -51,7 +51,7 @@ This checks if the user provides less than three arguments (e.g., 0, 1, or 2 arg **4. Checking for Exactly 1 Argument with No Error Message:** -```bash +```php $argsCheck[1;] ``` diff --git a/content/docs/(functions)/Message/argsCount.mdx b/content/docs/(functions)/Message/argsCount.mdx index c15cd004..295cb5e8 100644 --- a/content/docs/(functions)/Message/argsCount.mdx +++ b/content/docs/(functions)/Message/argsCount.mdx @@ -6,6 +6,6 @@ This function returns the number of arguments a user has provided to your bot's ## Usage -```bash +```php $argsCount ``` diff --git a/content/docs/(functions)/Message/awaitMessage.mdx b/content/docs/(functions)/Message/awaitMessage.mdx index 518e1e2e..820dff39 100644 --- a/content/docs/(functions)/Message/awaitMessage.mdx +++ b/content/docs/(functions)/Message/awaitMessage.mdx @@ -6,7 +6,7 @@ The `$awaitMessage` function allows your bot to wait for a specific user's messa ## Usage -```bash +```php $awaitMessage[message;userid / everyone;timeout;return message ID instead of content] ``` @@ -35,7 +35,7 @@ The `timeout` parameter specifies how long the bot will wait for a user's messag This example sends the message "Are you tall?" and waits for the user who executed the command to respond. It then displays the user's answer. -```discord +```php !!exec Your answer is: $awaitMessage[Are you tall?;$authorID] ``` diff --git a/content/docs/(functions)/Message/deleteCommand.mdx b/content/docs/(functions)/Message/deleteCommand.mdx index 0ba69223..a865c413 100644 --- a/content/docs/(functions)/Message/deleteCommand.mdx +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -6,19 +6,19 @@ deletes the user's message that triggered the command ## Usage -```bash +```php $deleteCommand[Time Delete After (optional, i.e 30s)] ``` ### Example (Delete User Message Immediately): -```bash +```php $deleteCommand ``` ### Example (Delete Message After Certain Time): -```bash +```php $deleteCommand[1m] ``` diff --git a/content/docs/(functions)/Message/disableChannelMentions.mdx b/content/docs/(functions)/Message/disableChannelMentions.mdx index d5dc29b1..aa0767f4 100644 --- a/content/docs/(functions)/Message/disableChannelMentions.mdx +++ b/content/docs/(functions)/Message/disableChannelMentions.mdx @@ -8,7 +8,7 @@ This function prevents the bot from mentioning any channels within a message. Th Simply include `$disableChannelMentions` in your code. It doesn't require any arguments. -```bash +```php $disableChannelMentions ``` @@ -16,7 +16,7 @@ $disableChannelMentions Let's say you have a command that echoes back a user's input. If the user includes a channel mention (`#general`), normally the bot would ping that channel. By using `$disableChannelMentions`, the bot will send the message, but the channel mention will be rendered as plain text and *won't* send a notification. -```bash +```php $disableChannelMentions $message ``` diff --git a/content/docs/(functions)/Message/disableEveryoneMentions.mdx b/content/docs/(functions)/Message/disableEveryoneMentions.mdx index 054cc24a..96c92b3b 100644 --- a/content/docs/(functions)/Message/disableEveryoneMentions.mdx +++ b/content/docs/(functions)/Message/disableEveryoneMentions.mdx @@ -8,7 +8,7 @@ This command disables the ability for users to mention everyone in the channel u Simply use the command: -```bash +```php $disableEveryoneMentions ``` diff --git a/content/docs/(functions)/Message/editEmbed.mdx b/content/docs/(functions)/Message/editEmbed.mdx index 0834da85..0c6e1332 100644 --- a/content/docs/(functions)/Message/editEmbed.mdx +++ b/content/docs/(functions)/Message/editEmbed.mdx @@ -6,7 +6,7 @@ Edit an existing embed within a specified message. ## Usage -```bash +```php $editEmbed[channel id (optional);message id (optional);New data (curl);Embed Number (optional, default 1)] ``` diff --git a/content/docs/(functions)/Message/editIn.mdx b/content/docs/(functions)/Message/editIn.mdx index fb7855f1..2fb398fe 100644 --- a/content/docs/(functions)/Message/editIn.mdx +++ b/content/docs/(functions)/Message/editIn.mdx @@ -6,7 +6,7 @@ Edits a bot's message after a specified delay. This function allows you to updat ## Usage -```bash +```php $editIn[time;new message] ``` @@ -17,7 +17,7 @@ $editIn[time;new message] ## Example: -```bash +```php Rolling the dice... $editIn[3s;You got $random[1;6]] ``` diff --git a/content/docs/(functions)/Message/emojiToString.mdx b/content/docs/(functions)/Message/emojiToString.mdx index 22fd544b..dae8db9f 100644 --- a/content/docs/(functions)/Message/emojiToString.mdx +++ b/content/docs/(functions)/Message/emojiToString.mdx @@ -10,7 +10,7 @@ This function returns the actual emoji that a user reacted with in a reaction ad ## Usage -```bash +```php $emojiToString ``` diff --git a/content/docs/(functions)/Message/emojisFromMessage.mdx b/content/docs/(functions)/Message/emojisFromMessage.mdx index 9113df8f..6c6a6d6b 100644 --- a/content/docs/(functions)/Message/emojisFromMessage.mdx +++ b/content/docs/(functions)/Message/emojisFromMessage.mdx @@ -10,7 +10,7 @@ You can use `$emojisFromMessage` in two ways: **1. From User Message (Default):** -```bash +```php $emojisFromMessage ``` @@ -18,7 +18,7 @@ This will extract emojis from the message that triggered the command. **2. From Custom Text:** -```bash +```php $emojisFromMessage[text;separator (optional)] ``` diff --git a/content/docs/(functions)/Message/enableEveryoneMentions.mdx b/content/docs/(functions)/Message/enableEveryoneMentions.mdx index 0fdcb792..cebf69e1 100644 --- a/content/docs/(functions)/Message/enableEveryoneMentions.mdx +++ b/content/docs/(functions)/Message/enableEveryoneMentions.mdx @@ -8,7 +8,7 @@ This command allows you to enable the use of `@everyone` mentions in your Discor Simply run the `$enableEveryoneMentions` command. -```bash +```php $enableEveryoneMentions ``` diff --git a/content/docs/(functions)/Message/getEmbed.mdx b/content/docs/(functions)/Message/getEmbed.mdx index e35d9883..4c8cce2c 100644 --- a/content/docs/(functions)/Message/getEmbed.mdx +++ b/content/docs/(functions)/Message/getEmbed.mdx @@ -6,7 +6,7 @@ Retrieves information from an embed within a specific message. This function all ## Usage -```bash +```php $getEmbed[Channel ID (optional);Message ID (optional);Info (optional, default is description);Embed Number (optional, default is 1)] ``` diff --git a/content/docs/(functions)/Message/getMessage.mdx b/content/docs/(functions)/Message/getMessage.mdx index 64451f8b..ec28ef5c 100644 --- a/content/docs/(functions)/Message/getMessage.mdx +++ b/content/docs/(functions)/Message/getMessage.mdx @@ -6,7 +6,7 @@ Retrieves information about a specific message using its ID. This function allow ## Syntax -```bash +```php $getMessage[channelID;messageID;attribute] ``` @@ -26,7 +26,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 1. **Getting the message content:** - ```bash + ```php $getMessage[987654321098765432;123456789012345678;content] ``` @@ -34,7 +34,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 2. **Getting the user ID of the message sender:** - ```bash + ```php $getMessage[987654321098765432;123456789012345678;userID] ``` @@ -42,7 +42,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 3. **Getting the embed description (if the message contains an embed):** - ```bash + ```php $getMessage[987654321098765432;123456789012345678;desc] ``` diff --git a/content/docs/(functions)/Message/getMessageReactions.mdx b/content/docs/(functions)/Message/getMessageReactions.mdx index c70b14b4..3e6e47e6 100644 --- a/content/docs/(functions)/Message/getMessageReactions.mdx +++ b/content/docs/(functions)/Message/getMessageReactions.mdx @@ -10,7 +10,7 @@ The `$getMessageReactions` command allows you to list the reactions (emojis) tha ## Usage -```bash +```php $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (optional)] ``` @@ -24,7 +24,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from the current message in the current channel (most common use):** - ```bash + ```php $getMessageReactions ``` @@ -32,7 +32,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in the current channel:** - ```bash + ```php $getMessageReactions[$messageID] ``` @@ -40,7 +40,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in a specific channel:** - ```bash + ```php $getMessageReactions[123456789012345678;987654321098765432] ``` @@ -48,7 +48,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in a specific channel, using a custom separator:** - ```bash + ```php $getMessageReactions[123456789012345678;987654321098765432; | ] ``` diff --git a/content/docs/(functions)/Message/getReactionCount.mdx b/content/docs/(functions)/Message/getReactionCount.mdx index 8c1d4d49..2920cb74 100644 --- a/content/docs/(functions)/Message/getReactionCount.mdx +++ b/content/docs/(functions)/Message/getReactionCount.mdx @@ -6,7 +6,7 @@ Get the number of reactions for a specific emoji on a message. ## Usage -```bash +```php $getReactionCount[channelID;messageID;reaction] ``` diff --git a/content/docs/(functions)/Message/hasEmbeds.mdx b/content/docs/(functions)/Message/hasEmbeds.mdx index 955694a7..a1b848a1 100644 --- a/content/docs/(functions)/Message/hasEmbeds.mdx +++ b/content/docs/(functions)/Message/hasEmbeds.mdx @@ -10,7 +10,7 @@ It returns `true` if the message contains at least one embed, and `false` otherw ## Syntax -```bash +```php $hasEmbeds[channelID;messageID] ``` @@ -23,7 +23,7 @@ $hasEmbeds[channelID;messageID] Let's say you want to check if a message with ID `1234567890` in channel `9876543210` has any embeds. You would use the following: -```bash +```php $hasEmbeds[9876543210;1234567890] ``` diff --git a/content/docs/(functions)/Message/meta.json b/content/docs/(functions)/Message/meta.json index 72adffee..bba1e677 100644 --- a/content/docs/(functions)/Message/meta.json +++ b/content/docs/(functions)/Message/meta.json @@ -1,6 +1,4 @@ { - "title": "Message Functions", - "pages": [ - "..." - ] + "title": "Message Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Message/pinMessage.mdx b/content/docs/(functions)/Message/pinMessage.mdx index da0afb95..abee60d0 100644 --- a/content/docs/(functions)/Message/pinMessage.mdx +++ b/content/docs/(functions)/Message/pinMessage.mdx @@ -14,7 +14,7 @@ There are two ways to use `$pinMessage`: **1. Pin the Command Message:** - ```bash + ```php $pinMessage ``` @@ -22,7 +22,7 @@ There are two ways to use `$pinMessage`: **2. Pin a Specific Message:** - ```bash + ```php $pinMessage[channelID;messageID] ``` @@ -33,7 +33,7 @@ There are two ways to use `$pinMessage`: To pin a message with the ID `123456789012345678` in the channel with the ID `987654321098765432`, you would use: - ```bash + ```php $pinMessage[987654321098765432;123456789012345678] ``` diff --git a/content/docs/(functions)/Message/poll.mdx b/content/docs/(functions)/Message/poll.mdx index 378270f5..8cf42622 100644 --- a/content/docs/(functions)/Message/poll.mdx +++ b/content/docs/(functions)/Message/poll.mdx @@ -6,7 +6,7 @@ retrieve information about a poll in a message ## Usage -```bash +```php $poll[Channel ID (default $channelID);Message ID (default $messageID);data] ``` diff --git a/content/docs/(functions)/Message/referenceChannelID.mdx b/content/docs/(functions)/Message/referenceChannelID.mdx index b290a1ba..033ea9b3 100644 --- a/content/docs/(functions)/Message/referenceChannelID.mdx +++ b/content/docs/(functions)/Message/referenceChannelID.mdx @@ -8,7 +8,7 @@ This variable is useful when you need to know the channel where the original mes ## Syntax -```bash +```php $referenceChannelID ``` diff --git a/content/docs/(functions)/Message/reply.mdx b/content/docs/(functions)/Message/reply.mdx index bad37f2d..a436e10d 100644 --- a/content/docs/(functions)/Message/reply.mdx +++ b/content/docs/(functions)/Message/reply.mdx @@ -6,7 +6,7 @@ This command allows your bot to reply to a specific message within a channel. I ## Usage -```bash +```php $reply[messageID (optional); mention on reply (yes/no, default is no)] ``` @@ -24,7 +24,7 @@ $reply[messageID (optional); mention on reply (yes/no, default is no)] This example demonstrates how to reply to the user's message and ping them in the reply. -```bash +```php Hello $username! $reply[$messageID;yes] ``` @@ -42,7 +42,7 @@ $reply[$messageID;yes] This example shows how to reply to the user's message without mentioning them. -```bash +```php Hello $username! $reply[$messageID;no] ``` diff --git a/content/docs/(functions)/Message/sendCrosspostingMessage.mdx b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx index 830a8d72..afffb1c5 100644 --- a/content/docs/(functions)/Message/sendCrosspostingMessage.mdx +++ b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx @@ -6,7 +6,7 @@ Send a message to multiple channels simultaneously. This function is useful for ## Syntax -```bash +```php $sendCrosspostingMessage[message;channel1;channel2;...] ``` @@ -22,7 +22,7 @@ $sendCrosspostingMessage[message;channel1;channel2;...] This example demonstrates sending the message "Hello World!" to the channels named `#general` and `#off-topics`. -```bash +```php $sendCrosspostingMessage[Hello World!;general;off-topics] ``` @@ -30,7 +30,7 @@ $sendCrosspostingMessage[Hello World!;general;off-topics] To use Channel IDs instead of names, you'll need to enable Developer Mode in Discord. Go to User Settings -> Advanced, and toggle Developer Mode on. Then, right-click on the channel you want to use and select "Copy ID." You can then paste this ID into the `$sendCrosspostingMessage` function. For example: -```bash +```php $sendCrosspostingMessage[Hello World!;123456789012345678;987654321098765432] ``` diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 7d5f8220..be68ef5d 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -15,7 +15,7 @@ Sends a message to the channel where the command was executed. **Example:** -```discord +```php !!exec $sendMessage[This is a fantastic message!;no] ``` diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index f266a163..af464a69 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -15,11 +15,11 @@ Sends a message via a Discord webhook using its ID and token. #### Example: -```discord +```php !!exec $sendWebhook[98723xxxx...;K9oJxxxx...;Hello world!] ``` -```discord +```php Webhook: Hello world! ``` diff --git a/content/docs/(functions)/Message/sentMessageID.mdx b/content/docs/(functions)/Message/sentMessageID.mdx index b5e4fea0..ad85db71 100644 --- a/content/docs/(functions)/Message/sentMessageID.mdx +++ b/content/docs/(functions)/Message/sentMessageID.mdx @@ -10,7 +10,7 @@ This function allows you to retrieve the message ID of the most recently sent me Simply use `$sentMessageID` in your commands to reference the last message's ID. -```bash +```php $sentMessageID ``` @@ -18,7 +18,7 @@ $sentMessageID This example demonstrates how to send a message, wait for 3 seconds, and then delete the message using its ID obtained with `$sentMessageID`. -```bash +```php $sendMessage[Hello World] $wait[3s] $deleteMessage[$sentMessageID] diff --git a/content/docs/(functions)/Random/meta.json b/content/docs/(functions)/Random/meta.json index 4d8780e0..24e1d9b4 100644 --- a/content/docs/(functions)/Random/meta.json +++ b/content/docs/(functions)/Random/meta.json @@ -1,6 +1,4 @@ { - "title": "Random Functions", - "pages": [ - "..." - ] + "title": "Random Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index 115cb71c..d454155c 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -22,7 +22,7 @@ This function returns a random number within a specified range. **Example:** -```discord +```php !!exec $random[1;6] ``` diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index d027696f..36ff4c19 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -12,13 +12,13 @@ Simply use `$randomChannelID` in your command or custom function. **Example:** -```discord +```php !!exec $randomChannelID ``` **Result:** -```discord +```php 37907890789087988 ``` diff --git a/content/docs/(functions)/Random/randomTextBiased.mdx b/content/docs/(functions)/Random/randomTextBiased.mdx index 935a0a25..0f3776e2 100644 --- a/content/docs/(functions)/Random/randomTextBiased.mdx +++ b/content/docs/(functions)/Random/randomTextBiased.mdx @@ -6,7 +6,7 @@ Similar to `$randomText`, but with weighted randomness! This allows you to influ ## Usage -```bash +```php $randomTextBiased[Text1,Weight1;Text2,Weight2;Text3,Weight3] ``` diff --git a/content/docs/(functions)/Request/httpRequest.mdx b/content/docs/(functions)/Request/httpRequest.mdx index 54544e99..6ede0fe4 100644 --- a/content/docs/(functions)/Request/httpRequest.mdx +++ b/content/docs/(functions)/Request/httpRequest.mdx @@ -6,7 +6,7 @@ Performs an HTTP request with the specified content and headers, then returns th ## Usage -```bash +```php $httpRequest[URL;Method;Content;Header 1;Header 2;...] ``` diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx index 84fee0c0..1d202cd7 100644 --- a/content/docs/(functions)/Request/httpRequestHeader.mdx +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -6,7 +6,7 @@ Returns the value of a given header from the last request. ## Usage -```bash +```php $httpRequestHeader[header name] ``` 1. **header name** - The header name to return value from. (case-insensitive) diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx index 7c8556a9..2e5aad04 100644 --- a/content/docs/(functions)/Request/httpRequestStatus.mdx +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -6,7 +6,7 @@ Returns the $httpRequest status code of the last request. ## Usage -```bash +```php $httpRequestStatus ``` diff --git a/content/docs/(functions)/Request/meta.json b/content/docs/(functions)/Request/meta.json index 4e272440..5df44260 100644 --- a/content/docs/(functions)/Request/meta.json +++ b/content/docs/(functions)/Request/meta.json @@ -1,6 +1,4 @@ { - "title": "Http Requests functions", - "pages": [ - "..." - ] + "title": "Http Requests functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index 7f13aa0f..d4a4e730 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -15,7 +15,7 @@ This function prevents users with specific roles from using a command. You speci Let's say you have a command `!ban` and you want to prevent users with a specific role from using it. -```bash +```php $blackListRoleIds[9872xx..;You are not authorized to use this command!] $ban[$mentioned[1]] Successfully banned user. diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx index 35703da9..bad9c201 100644 --- a/content/docs/(functions)/Role/highestRole.mdx +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -16,7 +16,7 @@ Retrieves the highest role (in terms of hierarchy) a user has in the current gui This example shows how to use `$highestRole` with `$roleName` to output the role's name. -```discord +```php !!exec $roleName[$highestRole] ``` @@ -24,7 +24,7 @@ This example shows how to use `$highestRole` with `$roleName` to output the role (Assuming the user's highest role is "Admin") -```discord +```php Admin ``` diff --git a/content/docs/(functions)/Role/lowestRole.mdx b/content/docs/(functions)/Role/lowestRole.mdx index 8eeed915..5b0d915f 100644 --- a/content/docs/(functions)/Role/lowestRole.mdx +++ b/content/docs/(functions)/Role/lowestRole.mdx @@ -15,7 +15,7 @@ Returns the user's lowest role in the current guild. You can specify a user ID, This example retrieves the role ID of the user's lowest role and displays it. -```discord +```php !!exec $roleName[$lowestRole] ``` @@ -27,7 +27,7 @@ This example retrieves the role ID of the user's lowest role and displays it. **Discord Output:** -```discord +```php Member ``` diff --git a/content/docs/(functions)/Role/mentionRole.mdx b/content/docs/(functions)/Role/mentionRole.mdx index b01e4ced..cb3c9d95 100644 --- a/content/docs/(functions)/Role/mentionRole.mdx +++ b/content/docs/(functions)/Role/mentionRole.mdx @@ -6,18 +6,18 @@ mention a role by name or id ## Usage -```bash +```php $mentionRole[Name/ID] ``` ### Example: -```bash +```php $mentionRole[Member] ``` ### Example: -```bash +```php $mentionRole[1234567898765431] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Role/meta.json b/content/docs/(functions)/Role/meta.json index a6324a71..2e3cc6e0 100644 --- a/content/docs/(functions)/Role/meta.json +++ b/content/docs/(functions)/Role/meta.json @@ -1,6 +1,4 @@ { - "title": "Role Functions", - "pages": [ - "..." - ] + "title": "Role Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Role/modifyUserRoles.mdx b/content/docs/(functions)/Role/modifyUserRoles.mdx index 80144fcf..e8bde9c7 100644 --- a/content/docs/(functions)/Role/modifyUserRoles.mdx +++ b/content/docs/(functions)/Role/modifyUserRoles.mdx @@ -12,7 +12,7 @@ This function allows you to modify a user's roles by adding, removing, or toggli ## Usage -```bash +```php $modifyUserRoles[User ID;[op]Role 1;[op]Role 2;...] ``` @@ -25,7 +25,7 @@ $modifyUserRoles[User ID;[op]Role 1;[op]Role 2;...] Let's say you want to add the "VIP" role and remove the "Newbie" role from a user. Here's how you would do it: -```bash +```php $modifyUserRoles[$authorID;+VIP;-Newbie] ``` diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index dd4adfe9..7efb25c8 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -16,7 +16,7 @@ Checks if a role exists within the server and returns a boolean value (true or f **Example:** -```discord +```php !!exec $roleExists[$roleID[muted]] diff --git a/content/docs/(functions)/Role/roleIcon.mdx b/content/docs/(functions)/Role/roleIcon.mdx index c7823759..f63dd5d0 100644 --- a/content/docs/(functions)/Role/roleIcon.mdx +++ b/content/docs/(functions)/Role/roleIcon.mdx @@ -6,7 +6,7 @@ This function allows you to either retrieve or set the icon of a role within a g ## Usage -```bash +```php $roleIcon[role; icon (optional)] ``` @@ -21,7 +21,7 @@ $roleIcon[role; icon (optional)] This example demonstrates how to retrieve the icon of a role named "Support". -```bash +```php $roleIcon[Support] ``` @@ -33,7 +33,7 @@ $roleIcon[Support] This example sets the icon of a role named "Member" using an image URL. -```bash +```php $roleIcon[Member;https://cdn-icons-png.flaticon.com/512/6080/6080057.png] ``` @@ -43,7 +43,7 @@ $roleIcon[Member;https://cdn-icons-png.flaticon.com/512/6080/6080057.png] This example sets the icon of a role named "Member" using a custom emoji. -```bash +```php $roleIcon[Member;<:happy:862641528890851328>] ``` diff --git a/content/docs/(functions)/Role/setRoles.mdx b/content/docs/(functions)/Role/setRoles.mdx index 76678908..12439623 100644 --- a/content/docs/(functions)/Role/setRoles.mdx +++ b/content/docs/(functions)/Role/setRoles.mdx @@ -19,7 +19,7 @@ $setRoles[userID;roleID 1;roleID 2;roleID 3;...] Sets the command executor's roles to only the "Muted" role. -```discord +```php !!exec $setRoles[$authorID;$roleID[Muted]] ``` diff --git a/content/docs/(functions)/Server/createAutomodKeyword.mdx b/content/docs/(functions)/Server/createAutomodKeyword.mdx index 184394f0..376c43b2 100644 --- a/content/docs/(functions)/Server/createAutomodKeyword.mdx +++ b/content/docs/(functions)/Server/createAutomodKeyword.mdx @@ -6,7 +6,7 @@ Creates a new auto-moderation rule based on keywords within the server. This all ## Usage -```bash +```php $createAutomodKeyword[ {name=Rule name} {keyword=Keyword to trigger on} @@ -63,7 +63,7 @@ $createAutomodKeyword[ ### Example: -```bash +```php $createAutomodKeyword[ {name=Block Fatty Words} {keyword=fat} diff --git a/content/docs/(functions)/Server/deleteEmojis.mdx b/content/docs/(functions)/Server/deleteEmojis.mdx index 3c0abc24..f9300fb4 100644 --- a/content/docs/(functions)/Server/deleteEmojis.mdx +++ b/content/docs/(functions)/Server/deleteEmojis.mdx @@ -6,7 +6,7 @@ Delete a custom emoji(s) from the server. ## Usage -```bash +```php $deleteEmojis[emoji1;emoji2;...] ``` diff --git a/content/docs/(functions)/Server/editAutomodKeyword.mdx b/content/docs/(functions)/Server/editAutomodKeyword.mdx index c7de2b4a..47b728d5 100644 --- a/content/docs/(functions)/Server/editAutomodKeyword.mdx +++ b/content/docs/(functions)/Server/editAutomodKeyword.mdx @@ -6,7 +6,7 @@ Modify an AutoMod rule of type "keywords" in the server. This function allows yo ## Usage -```bash +```php $editAutomodKeyword[ {id=Rule ID} {name=Rule name} @@ -79,7 +79,7 @@ $editAutomodKeyword[ ### Example: -```bash +```php $editAutomodKeyword[ {id=1234567} {name=Block Fatty Words Improved} diff --git a/content/docs/(functions)/Server/emojiCount.mdx b/content/docs/(functions)/Server/emojiCount.mdx index d9efd8fb..e324168d 100644 --- a/content/docs/(functions)/Server/emojiCount.mdx +++ b/content/docs/(functions)/Server/emojiCount.mdx @@ -6,7 +6,7 @@ Returns the amount of emojis in this server ## Usage -```bash +```php $emojiCount ``` diff --git a/content/docs/(functions)/Server/emojiExists.mdx b/content/docs/(functions)/Server/emojiExists.mdx index 35705984..549fda42 100644 --- a/content/docs/(functions)/Server/emojiExists.mdx +++ b/content/docs/(functions)/Server/emojiExists.mdx @@ -6,7 +6,7 @@ Checks if a given emoji ID is available to the bot. ## Usage -```bash +```php $emojiExists[emojiID] ``` @@ -16,7 +16,7 @@ $emojiExists[emojiID] ## Example -```bash +```php $emojiExists[123456789012345678] ``` diff --git a/content/docs/(functions)/Server/getInviteInfo.mdx b/content/docs/(functions)/Server/getInviteInfo.mdx index 40a8332e..c65744e4 100644 --- a/content/docs/(functions)/Server/getInviteInfo.mdx +++ b/content/docs/(functions)/Server/getInviteInfo.mdx @@ -6,7 +6,7 @@ Gets invite info from a given invite code. ## Usage -```bash +```php $getInviteInfo[code/url;Property] ``` @@ -47,7 +47,7 @@ If you leave the `Property` parameter empty (e.g., `$getInviteInfo[ZFQNZA4Ekz]`) ### Example -```discord +```php !!exec $getInviteInfo[ZFQNZA4Ekz;servername] ``` diff --git a/content/docs/(functions)/Server/getServerInvite.mdx b/content/docs/(functions)/Server/getServerInvite.mdx index 52f7d4df..cfb8554f 100644 --- a/content/docs/(functions)/Server/getServerInvite.mdx +++ b/content/docs/(functions)/Server/getServerInvite.mdx @@ -6,7 +6,7 @@ Creates an invite link to the current server. ## Usage -```bash +```php $getServerInvite ``` diff --git a/content/docs/(functions)/Server/meta.json b/content/docs/(functions)/Server/meta.json index 24b15fd1..4dd29917 100644 --- a/content/docs/(functions)/Server/meta.json +++ b/content/docs/(functions)/Server/meta.json @@ -1,6 +1,4 @@ { - "title": "Server Functions", - "pages": [ - "..." - ] + "title": "Server Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Server/resolveEmojiID.mdx b/content/docs/(functions)/Server/resolveEmojiID.mdx index 9b912d57..57543d30 100644 --- a/content/docs/(functions)/Server/resolveEmojiID.mdx +++ b/content/docs/(functions)/Server/resolveEmojiID.mdx @@ -6,7 +6,7 @@ Resolves a full emoji, emoji name, or emoji ID into its ID. This function is use ## Usage -```bash +```php $resolveEmojiID[emoji string/name/id] ``` @@ -18,12 +18,12 @@ $resolveEmojiID[emoji string/name/id] Let's say you have a custom emoji named `cool_emoji` in your server. -```bash +```php $resolveEmojiID[cool_emoji] ``` This would return the unique ID associated with the `cool_emoji` emoji. -```bash +```php $resolveEmojiID[<:cool_emoji:123456789012345678>] ``` diff --git a/content/docs/(functions)/Server/securityPause.mdx b/content/docs/(functions)/Server/securityPause.mdx index a31ca006..d88a0dee 100644 --- a/content/docs/(functions)/Server/securityPause.mdx +++ b/content/docs/(functions)/Server/securityPause.mdx @@ -6,7 +6,7 @@ a beta feature, where discord allow you to pause invites and DMs for a period of ## Usage -```bash +```php $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No)] ``` @@ -14,16 +14,16 @@ $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No The value determines how much time a pause should be applied, maximum allowed duration is `24h` ### Example (Pause invites for 24 hours): -```bash +```php $securityPause[24h;yes;no] ``` ### Example (Pause DMs for 12 hours): -```bash +```php $securityPause[12h;no;yes] ``` ### Example (Pause invites and DMs for 24 hours): -```bash +```php $securityPause[24h;yes;yes] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Stickers/createSticker.mdx b/content/docs/(functions)/Stickers/createSticker.mdx index a57fbffc..6c53579a 100644 --- a/content/docs/(functions)/Stickers/createSticker.mdx +++ b/content/docs/(functions)/Stickers/createSticker.mdx @@ -6,12 +6,12 @@ create a new sticker in the server ## Usage -```bash +```php $createSticker[name;image url;emoji;description (optional);return sticker id (yes/no)] ``` ### Example: -```bash +```php $createSticker[Happy Earth;https://media.discordapp.net/attachments/951590503370063872/1028690645222690867/happy_earth.png;😄;I'm happy when earth is happy] ``` diff --git a/content/docs/(functions)/Stickers/deleteSticker.mdx b/content/docs/(functions)/Stickers/deleteSticker.mdx index 4efc1f0e..af9aae4c 100644 --- a/content/docs/(functions)/Stickers/deleteSticker.mdx +++ b/content/docs/(functions)/Stickers/deleteSticker.mdx @@ -6,7 +6,7 @@ To delete a sticker inside the server ## Usage -```bash +```php $deleteSticker[Sticker ID] ``` diff --git a/content/docs/(functions)/Stickers/editSticker.mdx b/content/docs/(functions)/Stickers/editSticker.mdx index ff9e6009..53da2c5e 100644 --- a/content/docs/(functions)/Stickers/editSticker.mdx +++ b/content/docs/(functions)/Stickers/editSticker.mdx @@ -7,11 +7,11 @@ To edit a sticker inside the server\ ## Usage -```bash +```php $editSticker[Sticker ID;Info;New Value] ``` ### Example: -```bash +```php $editSticker[992974663099629588;name;MyNewSmily] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Stickers/messageStickers.mdx b/content/docs/(functions)/Stickers/messageStickers.mdx index 591dfb81..15f3d5b7 100644 --- a/content/docs/(functions)/Stickers/messageStickers.mdx +++ b/content/docs/(functions)/Stickers/messageStickers.mdx @@ -7,7 +7,7 @@ To return the user message stickers (id)\ ## Usage -```bash +```php $messageStickers[Index] ``` diff --git a/content/docs/(functions)/Stickers/meta.json b/content/docs/(functions)/Stickers/meta.json index 7178dbf5..73da383a 100644 --- a/content/docs/(functions)/Stickers/meta.json +++ b/content/docs/(functions)/Stickers/meta.json @@ -1,6 +1,4 @@ { - "title": "Sticker Functions", - "pages": [ - "..." - ] + "title": "Sticker Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Stickers/serverStickers.mdx b/content/docs/(functions)/Stickers/serverStickers.mdx index be48d8e9..1de551fe 100644 --- a/content/docs/(functions)/Stickers/serverStickers.mdx +++ b/content/docs/(functions)/Stickers/serverStickers.mdx @@ -6,7 +6,7 @@ To return all server stickers's id ## Usage -```bash +```php $serverStickers[Separator] Example: $serverStickers[, ] diff --git a/content/docs/(functions)/Stickers/sticker.mdx b/content/docs/(functions)/Stickers/sticker.mdx index b0d4d737..33084c21 100644 --- a/content/docs/(functions)/Stickers/sticker.mdx +++ b/content/docs/(functions)/Stickers/sticker.mdx @@ -7,7 +7,7 @@ To return an information about a sticker using ID\ ## Usage -```bash +```php $sticker[Sticker ID;name;Info] ``` diff --git a/content/docs/(functions)/Text/Array/arrayClear.mdx b/content/docs/(functions)/Text/Array/arrayClear.mdx index 52506d1a..6c00ff32 100644 --- a/content/docs/(functions)/Text/Array/arrayClear.mdx +++ b/content/docs/(functions)/Text/Array/arrayClear.mdx @@ -6,7 +6,7 @@ Deletes an array. ## Usage -```bash +```php $arrayClear[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayConcat.mdx b/content/docs/(functions)/Text/Array/arrayConcat.mdx index da1a8751..a8bfebe6 100644 --- a/content/docs/(functions)/Text/Array/arrayConcat.mdx +++ b/content/docs/(functions)/Text/Array/arrayConcat.mdx @@ -6,7 +6,7 @@ Merge new array with the current array ## Usage -```bash +```php $arrayConcat[List;separator;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayCount.mdx b/content/docs/(functions)/Text/Array/arrayCount.mdx index 1318478e..071ed9f1 100644 --- a/content/docs/(functions)/Text/Array/arrayCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayCount.mdx @@ -6,7 +6,7 @@ An alias for `$arrayLength`. ## Usage -```bash +```php $arrayCount[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayCreate.mdx b/content/docs/(functions)/Text/Array/arrayCreate.mdx index c8ec2886..750c6ed9 100644 --- a/content/docs/(functions)/Text/Array/arrayCreate.mdx +++ b/content/docs/(functions)/Text/Array/arrayCreate.mdx @@ -6,7 +6,7 @@ Creates an array from a list. ## Usage -```bash +```php $arrayCreate[List;separator;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayElementCount.mdx b/content/docs/(functions)/Text/Array/arrayElementCount.mdx index eca0daee..b19bf300 100644 --- a/content/docs/(functions)/Text/Array/arrayElementCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayElementCount.mdx @@ -7,7 +7,7 @@ This function is used to count the number of times a specific element appears in ## Usage -```bash +```php $arrayElementCount[Element To Count;Trim before compare (yes/no);array name] ``` diff --git a/content/docs/(functions)/Text/Array/arrayFilter.mdx b/content/docs/(functions)/Text/Array/arrayFilter.mdx index 7f6c48cb..915f4f4f 100644 --- a/content/docs/(functions)/Text/Array/arrayFilter.mdx +++ b/content/docs/(functions)/Text/Array/arrayFilter.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```bash +```php $arrayFilter[Element Value;Element Index;array name]{ CODE... } diff --git a/content/docs/(functions)/Text/Array/arrayGet.mdx b/content/docs/(functions)/Text/Array/arrayGet.mdx index 2e99e3c6..6d63a4b3 100644 --- a/content/docs/(functions)/Text/Array/arrayGet.mdx +++ b/content/docs/(functions)/Text/Array/arrayGet.mdx @@ -6,7 +6,7 @@ Returns the value of an element at the specified index in an array. ## Usage -```bash +```php $arrayGet[index;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayInclude.mdx b/content/docs/(functions)/Text/Array/arrayInclude.mdx index de258ecd..754acb93 100644 --- a/content/docs/(functions)/Text/Array/arrayInclude.mdx +++ b/content/docs/(functions)/Text/Array/arrayInclude.mdx @@ -6,7 +6,7 @@ To check if a value exists in the array. Returns `true` if the value exists, oth ## Usage -```bash +```php $arrayInclude[Value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayJoin.mdx b/content/docs/(functions)/Text/Array/arrayJoin.mdx index 18598312..1708f07f 100644 --- a/content/docs/(functions)/Text/Array/arrayJoin.mdx +++ b/content/docs/(functions)/Text/Array/arrayJoin.mdx @@ -6,7 +6,7 @@ Joins an array created using `$textSplit` with a specific separator. ## Usage -```bash +```php $arrayJoin[Separator (optional);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayLength.mdx b/content/docs/(functions)/Text/Array/arrayLength.mdx index ddb9ebf8..3718f537 100644 --- a/content/docs/(functions)/Text/Array/arrayLength.mdx +++ b/content/docs/(functions)/Text/Array/arrayLength.mdx @@ -6,7 +6,7 @@ Returns the number of elements in an array. ## Usage -```bash +```php $arrayLength[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayLoop.mdx b/content/docs/(functions)/Text/Array/arrayLoop.mdx index 09392f79..60f17993 100644 --- a/content/docs/(functions)/Text/Array/arrayLoop.mdx +++ b/content/docs/(functions)/Text/Array/arrayLoop.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```bash +```php $arrayLoop[varName;index;array name (optional)]{ CODE... } diff --git a/content/docs/(functions)/Text/Array/arrayMap.mdx b/content/docs/(functions)/Text/Array/arrayMap.mdx index 8549d355..161d4d21 100644 --- a/content/docs/(functions)/Text/Array/arrayMap.mdx +++ b/content/docs/(functions)/Text/Array/arrayMap.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```bash +```php $arrayMap[Element Value;Element Index;array name (optional)]{ CODE } diff --git a/content/docs/(functions)/Text/Array/arrayPop.mdx b/content/docs/(functions)/Text/Array/arrayPop.mdx index 53c54746..ce5f265f 100644 --- a/content/docs/(functions)/Text/Array/arrayPop.mdx +++ b/content/docs/(functions)/Text/Array/arrayPop.mdx @@ -6,7 +6,7 @@ Removes, and returns the last element in an array. ## Usage -```bash +```php $arrayPop[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayPush.mdx b/content/docs/(functions)/Text/Array/arrayPush.mdx index af4024e5..cfe2e80b 100644 --- a/content/docs/(functions)/Text/Array/arrayPush.mdx +++ b/content/docs/(functions)/Text/Array/arrayPush.mdx @@ -6,7 +6,7 @@ Adds an element to the end of an array. ## Usage -```bash +```php $arrayPush[Value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayRemove.mdx b/content/docs/(functions)/Text/Array/arrayRemove.mdx index 01eb49ca..74bd7a54 100644 --- a/content/docs/(functions)/Text/Array/arrayRemove.mdx +++ b/content/docs/(functions)/Text/Array/arrayRemove.mdx @@ -6,7 +6,7 @@ Removes something from an array, using the index, and returns nothing. ## Usage -```bash +```php $arrayRemove[Index;Index... (optional);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayReverse.mdx b/content/docs/(functions)/Text/Array/arrayReverse.mdx index ec4ae267..3c6d256d 100644 --- a/content/docs/(functions)/Text/Array/arrayReverse.mdx +++ b/content/docs/(functions)/Text/Array/arrayReverse.mdx @@ -6,7 +6,7 @@ Reverses an array. ## Usage -```bash +```php $arrayReverse[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySearch.mdx b/content/docs/(functions)/Text/Array/arraySearch.mdx index 66865d2d..dbc8617a 100644 --- a/content/docs/(functions)/Text/Array/arraySearch.mdx +++ b/content/docs/(functions)/Text/Array/arraySearch.mdx @@ -6,7 +6,7 @@ To search for a value in an array. If it exists, it will return the position of ## Usage -```bash +```php $arraySearch[Value to search;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySet.mdx b/content/docs/(functions)/Text/Array/arraySet.mdx index 2e5658f1..da6621f1 100644 --- a/content/docs/(functions)/Text/Array/arraySet.mdx +++ b/content/docs/(functions)/Text/Array/arraySet.mdx @@ -6,7 +6,7 @@ Sets the value of an index in an array. ## Usage -```bash +```php $arraySet[index;value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayShift.mdx b/content/docs/(functions)/Text/Array/arrayShift.mdx index 805541da..d3bd9eb9 100644 --- a/content/docs/(functions)/Text/Array/arrayShift.mdx +++ b/content/docs/(functions)/Text/Array/arrayShift.mdx @@ -6,7 +6,7 @@ Removes and returns the first element in an array. ## Usage -```bash +```php $arrayShift[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayShuffle.mdx b/content/docs/(functions)/Text/Array/arrayShuffle.mdx index 905a0f74..a84f15ff 100644 --- a/content/docs/(functions)/Text/Array/arrayShuffle.mdx +++ b/content/docs/(functions)/Text/Array/arrayShuffle.mdx @@ -6,7 +6,7 @@ To shuffle an existing array. ## Usage -```bash +```php $arrayShuffle[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySlice.mdx b/content/docs/(functions)/Text/Array/arraySlice.mdx index 7e851e02..09d57c53 100644 --- a/content/docs/(functions)/Text/Array/arraySlice.mdx +++ b/content/docs/(functions)/Text/Array/arraySlice.mdx @@ -6,7 +6,7 @@ To keep only a part of the array, *slicing* it. ## Usage -```bash +```php $arraySlice[from;to;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySort.mdx b/content/docs/(functions)/Text/Array/arraySort.mdx index cca1846f..e0260c31 100644 --- a/content/docs/(functions)/Text/Array/arraySort.mdx +++ b/content/docs/(functions)/Text/Array/arraySort.mdx @@ -7,7 +7,7 @@ Can be sorted numerically or alphabetically, or depending on occurrences. ## Usage -```bash +```php $arraySort[Ascending (yes/no, default is no);Sort Type;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayUnique.mdx b/content/docs/(functions)/Text/Array/arrayUnique.mdx index 9af194a9..3791d88e 100644 --- a/content/docs/(functions)/Text/Array/arrayUnique.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnique.mdx @@ -6,7 +6,7 @@ Return the unique elements in the array, glued with the separator. ## Usage -```bash +```php $arrayUnique[Separator (default ', ');Trim Element before check? (default is yes);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayUnshift.mdx b/content/docs/(functions)/Text/Array/arrayUnshift.mdx index 421cbe0d..162eab4f 100644 --- a/content/docs/(functions)/Text/Array/arrayUnshift.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnshift.mdx @@ -6,7 +6,7 @@ Adds an element to the start of the array. ## Usage -```bash +```php $arrayUnshift[value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Components/addMenu.mdx b/content/docs/(functions)/Text/Components/addMenu.mdx index f99e2cbe..b3f0f13e 100644 --- a/content/docs/(functions)/Text/Components/addMenu.mdx +++ b/content/docs/(functions)/Text/Components/addMenu.mdx @@ -5,7 +5,7 @@ title: "$addMenu" Add a menu to existing message ## Usage -```bash +```php $addMenu[ {channel=channel id} {message=message id} @@ -26,7 +26,7 @@ $addMenu[ ``` ### Example: -```bash +```php $addMenu[ {chid=$channelID} {mid=1151607052007907449} diff --git a/content/docs/(functions)/Text/Components/awaitMenu.mdx b/content/docs/(functions)/Text/Components/awaitMenu.mdx index fc66208e..1f73129b 100644 --- a/content/docs/(functions)/Text/Components/awaitMenu.mdx +++ b/content/docs/(functions)/Text/Components/awaitMenu.mdx @@ -8,7 +8,7 @@ If multiple values are selected, all of them will be returned, separated with `, ## Usage -```bash +```php $awaitMenu[Message (optional);user id (optional, default:author);timeout (optional, default:15s);menu id1 (optional);menu id2...] ``` ### Timeout diff --git a/content/docs/(functions)/Text/Components/buttonEmoji.mdx b/content/docs/(functions)/Text/Components/buttonEmoji.mdx index 8778a9a8..02da6e05 100644 --- a/content/docs/(functions)/Text/Components/buttonEmoji.mdx +++ b/content/docs/(functions)/Text/Components/buttonEmoji.mdx @@ -6,7 +6,7 @@ Return the clicked button's emoji in the [Button trigger](/Trigger/button.html). ## Usage -```bash +```php $buttonEmoji ``` diff --git a/content/docs/(functions)/Text/Components/buttonID.mdx b/content/docs/(functions)/Text/Components/buttonID.mdx index e17bbb39..0595aedd 100644 --- a/content/docs/(functions)/Text/Components/buttonID.mdx +++ b/content/docs/(functions)/Text/Components/buttonID.mdx @@ -6,7 +6,7 @@ Returns the Button ID that triggered the command. Returns `undefined` if the tri ## Usage -```bash +```php $buttonID ``` diff --git a/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx index 7960da50..4c7d6b41 100644 --- a/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx +++ b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx @@ -7,7 +7,7 @@ Returns true if the button is disabled, otherwise returns `false`. ## Usage -```bash +```php $buttonIsDisabled ``` diff --git a/content/docs/(functions)/Text/Components/buttonLabel.mdx b/content/docs/(functions)/Text/Components/buttonLabel.mdx index f699db3f..2a69f137 100644 --- a/content/docs/(functions)/Text/Components/buttonLabel.mdx +++ b/content/docs/(functions)/Text/Components/buttonLabel.mdx @@ -6,7 +6,7 @@ Return the clicked button's label in the Button trigger. If the button doesn't h ## Usage -```bash +```php $buttonLabel ``` diff --git a/content/docs/(functions)/Text/Components/buttonStyle.mdx b/content/docs/(functions)/Text/Components/buttonStyle.mdx index 8aad90a7..46a737b6 100644 --- a/content/docs/(functions)/Text/Components/buttonStyle.mdx +++ b/content/docs/(functions)/Text/Components/buttonStyle.mdx @@ -6,7 +6,7 @@ Return the clicked button's style, e.g. `blurple`/`red`/`url` in the Button trig ## Usage -```bash +```php $buttonStyle ``` diff --git a/content/docs/(functions)/Text/Components/buttonURL.mdx b/content/docs/(functions)/Text/Components/buttonURL.mdx index 7973e1c7..469ecf72 100644 --- a/content/docs/(functions)/Text/Components/buttonURL.mdx +++ b/content/docs/(functions)/Text/Components/buttonURL.mdx @@ -6,7 +6,7 @@ Return the clicked button's URL in Button trigger if it exists. Else, returns `u ## Usage -```bash +```php $buttonURL ``` diff --git a/content/docs/(functions)/Text/Components/disableButtons.mdx b/content/docs/(functions)/Text/Components/disableButtons.mdx index cbbca713..7d9a5ad9 100644 --- a/content/docs/(functions)/Text/Components/disableButtons.mdx +++ b/content/docs/(functions)/Text/Components/disableButtons.mdx @@ -6,7 +6,7 @@ Disable buttons in a message, not providing a Button ID will disable every butto ## Usage -```bash +```php $disableButtons[Message ID;Button ID 1;Button ID 2;....] ``` diff --git a/content/docs/(functions)/Text/Components/disableMenu.mdx b/content/docs/(functions)/Text/Components/disableMenu.mdx index 9350132a..8816c8a7 100644 --- a/content/docs/(functions)/Text/Components/disableMenu.mdx +++ b/content/docs/(functions)/Text/Components/disableMenu.mdx @@ -6,7 +6,7 @@ Disable menus in the given message, not providing a Menu ID will disable every m ## Usage -```bash +```php $disableMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Components/editMenu.mdx b/content/docs/(functions)/Text/Components/editMenu.mdx index ac10f85f..8a378b9e 100644 --- a/content/docs/(functions)/Text/Components/editMenu.mdx +++ b/content/docs/(functions)/Text/Components/editMenu.mdx @@ -7,11 +7,11 @@ Edits a menu in given message.\ ## Usage -```bash +```php $editMenu[message id;menu id;type;new value] ``` ### Example: -```bash +```php $editMenu[$messageID;menu_id;placeholder;A new placeholder] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Components/enableButtons.mdx b/content/docs/(functions)/Text/Components/enableButtons.mdx index debf1a83..798a18a6 100644 --- a/content/docs/(functions)/Text/Components/enableButtons.mdx +++ b/content/docs/(functions)/Text/Components/enableButtons.mdx @@ -6,7 +6,7 @@ Enable buttons in a message, not providing a Button ID will enable every button ## Usage -```bash +```php $enableButtons[Message ID;Button ID 1;Button ID 2;....] ``` diff --git a/content/docs/(functions)/Text/Components/enableMenu.mdx b/content/docs/(functions)/Text/Components/enableMenu.mdx index 2e71bbcf..3c4fc148 100644 --- a/content/docs/(functions)/Text/Components/enableMenu.mdx +++ b/content/docs/(functions)/Text/Components/enableMenu.mdx @@ -6,7 +6,7 @@ Enables menus in a given message, not providing a Menu ID will enable every menu ## Usage -```bash +```php $enableMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Components/eventSelected.mdx b/content/docs/(functions)/Text/Components/eventSelected.mdx index e65d9e0a..8fad25d6 100644 --- a/content/docs/(functions)/Text/Components/eventSelected.mdx +++ b/content/docs/(functions)/Text/Components/eventSelected.mdx @@ -6,7 +6,7 @@ Returns values that were selected by the user using `$selectMenu`. ## Usage -```bash +```php $eventSelected or $eventSelected[position;seperator] ``` diff --git a/content/docs/(functions)/Text/Components/eventTargetID.mdx b/content/docs/(functions)/Text/Components/eventTargetID.mdx index 8ddb03db..f77f40f9 100644 --- a/content/docs/(functions)/Text/Components/eventTargetID.mdx +++ b/content/docs/(functions)/Text/Components/eventTargetID.mdx @@ -6,7 +6,7 @@ Returns the ID of the target selected by the user when using a **context menu co ## Usage -```bash +```php $eventTargetID ``` diff --git a/content/docs/(functions)/Text/Components/menuId.mdx b/content/docs/(functions)/Text/Components/menuId.mdx index 86aabb5f..c46877c7 100644 --- a/content/docs/(functions)/Text/Components/menuId.mdx +++ b/content/docs/(functions)/Text/Components/menuId.mdx @@ -6,7 +6,7 @@ Return the Menu ID of the menu triggered with the [Select Menu Trigger](/Trigger ## Usage -```bash +```php $menuID ``` diff --git a/content/docs/(functions)/Text/Components/removeEmbed.mdx b/content/docs/(functions)/Text/Components/removeEmbed.mdx index ab6862c8..9ed8ebb1 100644 --- a/content/docs/(functions)/Text/Components/removeEmbed.mdx +++ b/content/docs/(functions)/Text/Components/removeEmbed.mdx @@ -6,7 +6,7 @@ remove an embed or all embeds from a message ## Usage -```bash +```php $removeEmbed[Channel ID (default is $channelID);Message ID (default is $messageID);Embed Number (default is 1)] ``` @@ -14,6 +14,6 @@ $removeEmbed[Channel ID (default is $channelID);Message ID (default is $messageI You can remove all embeds by setting embed number to `all` ### Example: -```bash +```php $removeEmbed[$channelID;$messageID;1] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Components/removeMenu.mdx b/content/docs/(functions)/Text/Components/removeMenu.mdx index 5e843823..dca1a113 100644 --- a/content/docs/(functions)/Text/Components/removeMenu.mdx +++ b/content/docs/(functions)/Text/Components/removeMenu.mdx @@ -6,7 +6,7 @@ Removes menus in a given message, not providing a Menu ID will remove every menu ## Usage -```bash +```php $removeMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Condition/checkCondition.mdx b/content/docs/(functions)/Text/Condition/checkCondition.mdx index 7e9d2f32..a5f15d3c 100644 --- a/content/docs/(functions)/Text/Condition/checkCondition.mdx +++ b/content/docs/(functions)/Text/Condition/checkCondition.mdx @@ -6,7 +6,7 @@ Checks if given expression is true or false. ## Usage -```bash +```php $checkCondition[Expression] ``` diff --git a/content/docs/(functions)/Text/Condition/conditional.mdx b/content/docs/(functions)/Text/Condition/conditional.mdx index 2b18128e..00ebe389 100644 --- a/content/docs/(functions)/Text/Condition/conditional.mdx +++ b/content/docs/(functions)/Text/Condition/conditional.mdx @@ -6,7 +6,7 @@ return A if condition is true, B if condition is false ## Usage -```bash +```php $conditional[condition;A;B] ``` diff --git a/content/docs/(functions)/Text/Condition/else.mdx b/content/docs/(functions)/Text/Condition/else.mdx index 83b6a0af..ebcdd00b 100644 --- a/content/docs/(functions)/Text/Condition/else.mdx +++ b/content/docs/(functions)/Text/Condition/else.mdx @@ -6,7 +6,7 @@ is used in case $if and $elseIf is not true ## Usage -```bash +```php $if[1==2] CODE BLOCk $elseIf[3==4] diff --git a/content/docs/(functions)/Text/Condition/elseif.mdx b/content/docs/(functions)/Text/Condition/elseif.mdx index ecf6a43a..10e17dd0 100644 --- a/content/docs/(functions)/Text/Condition/elseif.mdx +++ b/content/docs/(functions)/Text/Condition/elseif.mdx @@ -6,7 +6,7 @@ will be checked if $if was false, should be ended with $endelseif ## Usage -```bash +```php $elseIf[EXPRESSION] CODE BLOCK $endelseif diff --git a/content/docs/(functions)/Text/Condition/endIf.mdx b/content/docs/(functions)/Text/Condition/endIf.mdx index f355f64d..a4d0c92a 100644 --- a/content/docs/(functions)/Text/Condition/endIf.mdx +++ b/content/docs/(functions)/Text/Condition/endIf.mdx @@ -6,7 +6,7 @@ is used to end the whole $if block ## Usage -```bash +```php $if[EXPRESSION] CODE BLOCK $endIf diff --git a/content/docs/(functions)/Text/Condition/endelseif.mdx b/content/docs/(functions)/Text/Condition/endelseif.mdx index 366b1987..f94a9a17 100644 --- a/content/docs/(functions)/Text/Condition/endelseif.mdx +++ b/content/docs/(functions)/Text/Condition/endelseif.mdx @@ -6,7 +6,7 @@ is used to close $elseIf ## Usage -```bash +```php $elseIf[EXPR] CODE BLOCK $endelseif diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index d4e47906..6c7c2f7d 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -5,7 +5,7 @@ title: "$if" Checks An expression and executes code Only if that expression is true ## Shortest Syntax -```bash +```php $if[EXPRESSION] CODE $endIf diff --git a/content/docs/(functions)/Text/Embed/attachment.mdx b/content/docs/(functions)/Text/Embed/attachment.mdx index f7d40244..8bd86ac9 100644 --- a/content/docs/(functions)/Text/Embed/attachment.mdx +++ b/content/docs/(functions)/Text/Embed/attachment.mdx @@ -8,7 +8,7 @@ If the name field is given, you must specify the extension for the attachment (p ## Usage -```bash +```php $attachment[data;name (optional);type (url or buffer) (optional);spoiler (yes/no, default is no) (optional)] ``` diff --git a/content/docs/(functions)/Text/Math/abs.mdx b/content/docs/(functions)/Text/Math/abs.mdx index 29ccf001..9aea35bd 100644 --- a/content/docs/(functions)/Text/Math/abs.mdx +++ b/content/docs/(functions)/Text/Math/abs.mdx @@ -6,7 +6,7 @@ Return the absolute value of a number. Basically forces a number to be positive ## Usage -```bash +```php $abs[Number] ``` diff --git a/content/docs/(functions)/Text/Math/ceil.mdx b/content/docs/(functions)/Text/Math/ceil.mdx index 36780656..30e5fcb8 100644 --- a/content/docs/(functions)/Text/Math/ceil.mdx +++ b/content/docs/(functions)/Text/Math/ceil.mdx @@ -6,7 +6,7 @@ rounds a number up to the next largest integer ## Usage -```bash +```php $ceil[Number] ``` diff --git a/content/docs/(functions)/Text/Math/floor.mdx b/content/docs/(functions)/Text/Math/floor.mdx index 6e000e78..15b423fd 100644 --- a/content/docs/(functions)/Text/Math/floor.mdx +++ b/content/docs/(functions)/Text/Math/floor.mdx @@ -6,7 +6,7 @@ return the largest integer less than or equal to a given number ## Usage -```bash +```php $floor[Number] ``` diff --git a/content/docs/(functions)/Text/Math/mathMax.mdx b/content/docs/(functions)/Text/Math/mathMax.mdx index ecae7b1e..12cc51bf 100644 --- a/content/docs/(functions)/Text/Math/mathMax.mdx +++ b/content/docs/(functions)/Text/Math/mathMax.mdx @@ -6,7 +6,7 @@ Return the largest number from a list of numbers ## Usage -```bash +```php $MathMax[Number 1;Number 2;Number 3;...] ``` diff --git a/content/docs/(functions)/Text/Math/mathMin.mdx b/content/docs/(functions)/Text/Math/mathMin.mdx index 25b37ae6..30d52da2 100644 --- a/content/docs/(functions)/Text/Math/mathMin.mdx +++ b/content/docs/(functions)/Text/Math/mathMin.mdx @@ -6,7 +6,7 @@ Return the smallest number from a list of numbers ## Usage -```bash +```php $mathMin[Number 1;Number 2;Number 3;...] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx index aa50d485..f4de11e6 100644 --- a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx +++ b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx @@ -6,7 +6,7 @@ To increase a key value, if the key doesn't exist, it will create one and set to ## Usage -```bash +```php $ObjectIncrease[Key;Amount] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index 8d3f3284..54fde0e6 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -6,7 +6,7 @@ Checks if given key is present in the object. Returns `true` or `false`. ## Usage -```bash +```php $ObjectKeyExists[Key;...] ``` 1. **Key(s)** - Key to check it's existence. You can put as many nested keys as needed. diff --git a/content/docs/(functions)/Text/Object/ObjectKeys.mdx b/content/docs/(functions)/Text/Object/ObjectKeys.mdx index 14dbe9ec..02970a51 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeys.mdx @@ -6,7 +6,7 @@ Return the Object Keys with the seperator between each key ## Usage -```bash +```php $ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectLoop.mdx b/content/docs/(functions)/Text/Object/ObjectLoop.mdx index 760b33de..b9191386 100644 --- a/content/docs/(functions)/Text/Object/ObjectLoop.mdx +++ b/content/docs/(functions)/Text/Object/ObjectLoop.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```bash +```php $ObjectLoop[key name;value name;index name;Nested Prroperty 1;Nested Property 2;...]{ CODE... } diff --git a/content/docs/(functions)/Text/Object/ObjectMerge.mdx b/content/docs/(functions)/Text/Object/ObjectMerge.mdx index 202ad911..28f7eb7e 100644 --- a/content/docs/(functions)/Text/Object/ObjectMerge.mdx +++ b/content/docs/(functions)/Text/Object/ObjectMerge.mdx @@ -6,7 +6,7 @@ Merge the current object with another object, it overwrites the conflicted keys ## Usage -```bash +```php $ObjectMerge[object] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectRemove.mdx b/content/docs/(functions)/Text/Object/ObjectRemove.mdx index 1faea756..44c0eef5 100644 --- a/content/docs/(functions)/Text/Object/ObjectRemove.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRemove.mdx @@ -6,7 +6,7 @@ To remove a key from the object ## Usage -```bash +```php $ObjectRemove[Key;Key...(Optional)] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx index 1b580c89..bd9035eb 100644 --- a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx @@ -6,7 +6,7 @@ allows you to rename a key in your object ## Usage -```bash +```php $objectRenameKey[old key;new key name] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectValues.mdx b/content/docs/(functions)/Text/Object/ObjectValues.mdx index 4bae8fd4..336b9c89 100644 --- a/content/docs/(functions)/Text/Object/ObjectValues.mdx +++ b/content/docs/(functions)/Text/Object/ObjectValues.mdx @@ -6,7 +6,7 @@ Return the Object values with seperator between each value ## Usage -```bash +```php $ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] ``` diff --git a/content/docs/(functions)/Text/Object/addObjectProperty.mdx b/content/docs/(functions)/Text/Object/addObjectProperty.mdx index 86fd5e00..6c79bad0 100644 --- a/content/docs/(functions)/Text/Object/addObjectProperty.mdx +++ b/content/docs/(functions)/Text/Object/addObjectProperty.mdx @@ -6,7 +6,7 @@ Adds a key with a value to the existing object. ## Usage -```bash +```php $addObjectProperty[key;value] ``` diff --git a/content/docs/(functions)/Text/Object/createObject.mdx b/content/docs/(functions)/Text/Object/createObject.mdx index b1735405..9e81e0cf 100644 --- a/content/docs/(functions)/Text/Object/createObject.mdx +++ b/content/docs/(functions)/Text/Object/createObject.mdx @@ -6,7 +6,7 @@ Creates an object that can be used later. ## Usage -```bash +```php $createObject[object string] ``` diff --git a/content/docs/(functions)/Text/Object/getObjectKeys.mdx b/content/docs/(functions)/Text/Object/getObjectKeys.mdx index 2a11140b..10ce504d 100644 --- a/content/docs/(functions)/Text/Object/getObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/getObjectKeys.mdx @@ -6,7 +6,7 @@ Return the object keys with seperator (default is space if not provided) ## Usage -```bash +```php $getObjectKeys or $getObjectKeys[Seperator (optional)] ``` diff --git a/content/docs/(functions)/Text/Object/getObjectProperty.mdx b/content/docs/(functions)/Text/Object/getObjectProperty.mdx index 29922750..8c5ad7f9 100644 --- a/content/docs/(functions)/Text/Object/getObjectProperty.mdx +++ b/content/docs/(functions)/Text/Object/getObjectProperty.mdx @@ -6,7 +6,7 @@ Gets a property value from given key. ## Usage -```bash +```php $getObjectProperty[key] ``` diff --git a/content/docs/(functions)/Text/Regex/regexCheck.mdx b/content/docs/(functions)/Text/Regex/regexCheck.mdx index 201dc703..5e0050d4 100644 --- a/content/docs/(functions)/Text/Regex/regexCheck.mdx +++ b/content/docs/(functions)/Text/Regex/regexCheck.mdx @@ -6,7 +6,7 @@ To check if a text matches a regex or not, returns true or false ## Usage -```bash +```php $regexCheck[Text;Regex;Flags] ``` diff --git a/content/docs/(functions)/Text/Regex/regexReplace.mdx b/content/docs/(functions)/Text/Regex/regexReplace.mdx index 7b2e4e08..5e00cf6d 100644 --- a/content/docs/(functions)/Text/Regex/regexReplace.mdx +++ b/content/docs/(functions)/Text/Regex/regexReplace.mdx @@ -6,7 +6,7 @@ Uses a regular expression to replace matching queries ## Usage -```bash +```php $regexReplace[text;regex;flags;new text] ``` diff --git a/content/docs/(functions)/Text/buffer.mdx b/content/docs/(functions)/Text/buffer.mdx index e25c2a3f..027ea5b7 100644 --- a/content/docs/(functions)/Text/buffer.mdx +++ b/content/docs/(functions)/Text/buffer.mdx @@ -6,12 +6,12 @@ It return the input (useful for some rare cases) ## Usage -```bash +```php $buffer[input] ``` ### Example: -```bash +```php $sendMessage[{footer:$buffer[Some :Breaking :Message]} ``` diff --git a/content/docs/(functions)/Text/checkContains.mdx b/content/docs/(functions)/Text/checkContains.mdx index d46f0423..1b021890 100644 --- a/content/docs/(functions)/Text/checkContains.mdx +++ b/content/docs/(functions)/Text/checkContains.mdx @@ -6,7 +6,7 @@ checks if given message contains any of the texts ## Usage -```bash +```php $checkContains[message;text1;text2;...] ``` diff --git a/content/docs/(functions)/Text/customEmoji.mdx b/content/docs/(functions)/Text/customEmoji.mdx index d6e28b1c..63e4b96c 100644 --- a/content/docs/(functions)/Text/customEmoji.mdx +++ b/content/docs/(functions)/Text/customEmoji.mdx @@ -6,7 +6,7 @@ Returns a custom emoji ## Usage -```bash +```php $customEmoji[name or id] ``` diff --git a/content/docs/(functions)/Text/filterMessage.mdx b/content/docs/(functions)/Text/filterMessage.mdx index 3d39414e..bce47342 100644 --- a/content/docs/(functions)/Text/filterMessage.mdx +++ b/content/docs/(functions)/Text/filterMessage.mdx @@ -6,7 +6,7 @@ Removes letters or numbers from given text ## Usage -```bash +```php $filterMessage[message;letterOrSymbols] ``` diff --git a/content/docs/(functions)/Text/filterMessageWords.mdx b/content/docs/(functions)/Text/filterMessageWords.mdx index 308878d0..9cfec3dd 100644 --- a/content/docs/(functions)/Text/filterMessageWords.mdx +++ b/content/docs/(functions)/Text/filterMessageWords.mdx @@ -6,7 +6,7 @@ Removed words from the message. ## Usage -```bash +```php $filterMessageWords[text;caseSensitive (yes/no);...words] ``` diff --git a/content/docs/(functions)/Text/findChars.mdx b/content/docs/(functions)/Text/findChars.mdx index 4d4ff303..97ff2ad0 100644 --- a/content/docs/(functions)/Text/findChars.mdx +++ b/content/docs/(functions)/Text/findChars.mdx @@ -6,7 +6,7 @@ Takes all the letters from given string and returns them alone. ## Usage -```bash +```php $findChars[string] ``` diff --git a/content/docs/(functions)/Text/findNumbers.mdx b/content/docs/(functions)/Text/findNumbers.mdx index a7b68b66..65ca6a82 100644 --- a/content/docs/(functions)/Text/findNumbers.mdx +++ b/content/docs/(functions)/Text/findNumbers.mdx @@ -6,7 +6,7 @@ Find numbers from inside a text. ## Usage -```bash +```php $findNumbers[text;separator] ``` diff --git a/content/docs/(functions)/Text/findSpecialChars.mdx b/content/docs/(functions)/Text/findSpecialChars.mdx index 1ffe744c..da6b1f38 100644 --- a/content/docs/(functions)/Text/findSpecialChars.mdx +++ b/content/docs/(functions)/Text/findSpecialChars.mdx @@ -6,7 +6,7 @@ Takes all the non number/letter from given string and returns the alone ## Usage -```bash +```php $findSpecialChars[string] ``` diff --git a/content/docs/(functions)/Text/indexOf.mdx b/content/docs/(functions)/Text/indexOf.mdx index cb4c9649..298c1b6a 100644 --- a/content/docs/(functions)/Text/indexOf.mdx +++ b/content/docs/(functions)/Text/indexOf.mdx @@ -7,7 +7,7 @@ Returns the position of \ in \.\ ## Usage -```bash +```php $indexOf[text;char] ``` diff --git a/content/docs/(functions)/Text/isChannelMention.mdx b/content/docs/(functions)/Text/isChannelMention.mdx index 31fbcb77..13f0b5bc 100644 --- a/content/docs/(functions)/Text/isChannelMention.mdx +++ b/content/docs/(functions)/Text/isChannelMention.mdx @@ -6,7 +6,7 @@ To check if text provided satisfy discord channel mention format or not ## Usage -```bash +```php $isChannelMention[Text] ``` diff --git a/content/docs/(functions)/Text/isUserMention.mdx b/content/docs/(functions)/Text/isUserMention.mdx index 80524166..0abdae3f 100644 --- a/content/docs/(functions)/Text/isUserMention.mdx +++ b/content/docs/(functions)/Text/isUserMention.mdx @@ -6,7 +6,7 @@ To check if text provided satisfy discord user mention format or not ## Usage -```bash +```php $isUserMention[Text] ``` diff --git a/content/docs/(functions)/Text/isandhas/isConnected.mdx b/content/docs/(functions)/Text/isandhas/isConnected.mdx index 92ec0181..b0a7a482 100644 --- a/content/docs/(functions)/Text/isandhas/isConnected.mdx +++ b/content/docs/(functions)/Text/isandhas/isConnected.mdx @@ -6,7 +6,7 @@ To check whether user is connected to voice channel or not (only cached users) ## Usage -```bash +```php $isConnected[User ID] ``` diff --git a/content/docs/(functions)/Text/isandhas/isStreaming.mdx b/content/docs/(functions)/Text/isandhas/isStreaming.mdx index eec32700..f36f3053 100644 --- a/content/docs/(functions)/Text/isandhas/isStreaming.mdx +++ b/content/docs/(functions)/Text/isandhas/isStreaming.mdx @@ -6,7 +6,7 @@ To check whether user is streaming in a voice channel or not (only cached users) ## Usage -```bash +```php $isStreaming[User ID] ``` diff --git a/content/docs/(functions)/Text/mentionType.mdx b/content/docs/(functions)/Text/mentionType.mdx index 4b9460e3..4afe1382 100644 --- a/content/docs/(functions)/Text/mentionType.mdx +++ b/content/docs/(functions)/Text/mentionType.mdx @@ -6,7 +6,7 @@ Uses an argument to determine the type of the mention (role, user, channel or no ## Usage -```bash +```php $mentionType[mention argument] ``` diff --git a/content/docs/(functions)/Text/mentioned.mdx b/content/docs/(functions)/Text/mentioned.mdx index 7000f5b8..a0a56f53 100644 --- a/content/docs/(functions)/Text/mentioned.mdx +++ b/content/docs/(functions)/Text/mentioned.mdx @@ -6,7 +6,7 @@ Returns the ID of the mentioned user ## Usage -```bash +```php $mentioned[mention number or all;return author ID (yes/no)(optional)] ``` diff --git a/content/docs/(functions)/Text/meta.json b/content/docs/(functions)/Text/meta.json index a4619fa3..bb5d9b8d 100644 --- a/content/docs/(functions)/Text/meta.json +++ b/content/docs/(functions)/Text/meta.json @@ -1,16 +1,16 @@ { - "title": "Text Functions", - "pages": [ - "...", - "!Condition", - "!Embed", - "!Components", - "!Math", - "!textSplit", - "!Array", - "!Object", - "!isandhas", - "!only", - "!Regex" - ] + "title": "Text Functions", + "pages": [ + "...", + "!Condition", + "!Embed", + "!Components", + "!Math", + "!textSplit", + "!Array", + "!Object", + "!isandhas", + "!only", + "!Regex" + ] } diff --git a/content/docs/(functions)/Text/numToWord.mdx b/content/docs/(functions)/Text/numToWord.mdx index 3a3741ab..95841592 100644 --- a/content/docs/(functions)/Text/numToWord.mdx +++ b/content/docs/(functions)/Text/numToWord.mdx @@ -7,7 +7,7 @@ e 5 \> five, maximum number would be "nine hundred ninety-nine nonillion" ## Usage -```bash +```php $numToWord[Number] ``` diff --git a/content/docs/(functions)/Text/numberSeparator.mdx b/content/docs/(functions)/Text/numberSeparator.mdx index 37e7f3e0..6f628a86 100644 --- a/content/docs/(functions)/Text/numberSeparator.mdx +++ b/content/docs/(functions)/Text/numberSeparator.mdx @@ -6,7 +6,7 @@ Separates a number in thousands ## Usage -```bash +```php $numberSeparator[number;separator (optional)] ``` diff --git a/content/docs/(functions)/Text/only/onlyForChannels.mdx b/content/docs/(functions)/Text/only/onlyForChannels.mdx index c24e785e..961063e7 100644 --- a/content/docs/(functions)/Text/only/onlyForChannels.mdx +++ b/content/docs/(functions)/Text/only/onlyForChannels.mdx @@ -6,7 +6,7 @@ The command will only be executable in the provided channel IDs. ## Usage -```bash +```php $onlyForChannels[channelID;channelID2;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx index 4b1fbe62..dc62fe39 100644 --- a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx +++ b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx @@ -6,7 +6,7 @@ Continues the execution only if 'text' contains all provided words, returns the ## Usage -```bash +```php $onlyIfMessageContains[text;word1;word2;...;error message] ``` diff --git a/content/docs/(functions)/Text/padLeft.mdx b/content/docs/(functions)/Text/padLeft.mdx index 5b573679..a5757131 100644 --- a/content/docs/(functions)/Text/padLeft.mdx +++ b/content/docs/(functions)/Text/padLeft.mdx @@ -6,7 +6,7 @@ Adds a filling text at the start of text, depend on the maximum length ## Usage -```bash +```php $padLeft[Text;Max Length;Filling Text] ``` diff --git a/content/docs/(functions)/Text/padRight.mdx b/content/docs/(functions)/Text/padRight.mdx index bbb9c83a..422815fe 100644 --- a/content/docs/(functions)/Text/padRight.mdx +++ b/content/docs/(functions)/Text/padRight.mdx @@ -6,7 +6,7 @@ Adds a filling text at the end of text, depend on the maximum length ## Usage -```bash +```php $padRight[Text;Max Length;Filling Text] ``` diff --git a/content/docs/(functions)/Text/stringEndsWith.mdx b/content/docs/(functions)/Text/stringEndsWith.mdx index 42309751..f555a90d 100644 --- a/content/docs/(functions)/Text/stringEndsWith.mdx +++ b/content/docs/(functions)/Text/stringEndsWith.mdx @@ -6,7 +6,7 @@ Checks if given message ends with given text ## Usage -```bash +```php $stringEndsWith[message;text] ``` diff --git a/content/docs/(functions)/Text/stringStartsWith.mdx b/content/docs/(functions)/Text/stringStartsWith.mdx index 7aef3e83..71b5166d 100644 --- a/content/docs/(functions)/Text/stringStartsWith.mdx +++ b/content/docs/(functions)/Text/stringStartsWith.mdx @@ -6,7 +6,7 @@ Determines whether given message starts by another message or not ## Usage -```bash +```php $stringStartsWith[message;text] ``` diff --git a/content/docs/(functions)/Text/textLength.mdx b/content/docs/(functions)/Text/textLength.mdx index 5e1cb8f0..45bba6f7 100644 --- a/content/docs/(functions)/Text/textLength.mdx +++ b/content/docs/(functions)/Text/textLength.mdx @@ -6,7 +6,7 @@ Counts character of a text, or the user's message. ## Usage -```bash +```php $textLength or $textLength[text] ``` diff --git a/content/docs/(functions)/Text/textShuffle.mdx b/content/docs/(functions)/Text/textShuffle.mdx index 34e87c48..be765180 100644 --- a/content/docs/(functions)/Text/textShuffle.mdx +++ b/content/docs/(functions)/Text/textShuffle.mdx @@ -7,7 +7,7 @@ Shuffle a text\ ## Usage -```bash +```php $textShuffle[Text;Separator (optional)] ``` diff --git a/content/docs/(functions)/Text/textSlice.mdx b/content/docs/(functions)/Text/textSlice.mdx index abfd3fb7..688f003f 100644 --- a/content/docs/(functions)/Text/textSlice.mdx +++ b/content/docs/(functions)/Text/textSlice.mdx @@ -6,7 +6,7 @@ Returns \ after given position or text in between X and Y ## Usage -```bash +```php $textSlice[text;x;y (optional)] ``` diff --git a/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx index 71da6366..7afa3e03 100644 --- a/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx @@ -6,7 +6,7 @@ Removes an element or elements from $textSplit by using their indexes. ## Usage -```bash +```php $removeSplitTextElement[index;index2;...] ``` diff --git a/content/docs/(functions)/Text/textTrim.mdx b/content/docs/(functions)/Text/textTrim.mdx index bcc15456..5dd0efee 100644 --- a/content/docs/(functions)/Text/textTrim.mdx +++ b/content/docs/(functions)/Text/textTrim.mdx @@ -6,7 +6,7 @@ Removes useless spaces from given text. ## Usage -```bash +```php $textTrim[text] ``` diff --git a/content/docs/(functions)/Text/uri.mdx b/content/docs/(functions)/Text/uri.mdx index dff2e6ff..6e81ce8f 100644 --- a/content/docs/(functions)/Text/uri.mdx +++ b/content/docs/(functions)/Text/uri.mdx @@ -6,7 +6,7 @@ Decodes or Encodes a url Example when you encode a url 'hello world' = 'hello%20 ## Usage -```bash +```php $uri[decode/encode;text] ``` diff --git a/content/docs/(functions)/Text/void.mdx b/content/docs/(functions)/Text/void.mdx index 6d601ab9..d9f7345a 100644 --- a/content/docs/(functions)/Text/void.mdx +++ b/content/docs/(functions)/Text/void.mdx @@ -6,7 +6,7 @@ A function that eats input but return nothing! ## Usage -```bash +```php $void[ANYTHING] ``` diff --git a/content/docs/(functions)/Threads/addUsersToThread.mdx b/content/docs/(functions)/Threads/addUsersToThread.mdx index d33b996b..7c743313 100644 --- a/content/docs/(functions)/Threads/addUsersToThread.mdx +++ b/content/docs/(functions)/Threads/addUsersToThread.mdx @@ -6,18 +6,18 @@ Add users to a thread ## Usage -```bash +```php $addUsersToThread[Thread ID;User 1 ID;User 2 ID;User 3 ID....] ``` ### Example (Add the triggerer to a thread): -```bash +```php $addUsersToThread[1024373454578917426;$authorID] ``` ### Example (add multiple users): -```bash +```php $addUsersToThread[1024373454578917426;$authorID;788361834360864808] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/archiveThread.mdx b/content/docs/(functions)/Threads/archiveThread.mdx index 55b94d6a..47c2f8e6 100644 --- a/content/docs/(functions)/Threads/archiveThread.mdx +++ b/content/docs/(functions)/Threads/archiveThread.mdx @@ -6,18 +6,18 @@ archive/unarchive a thread ## Usage -```bash +```php $archiveThread[Thread ID;Archive? (yes/no)] ``` ### Example (Archiving a thread): -```bash +```php $archiveThread[1024373454578917426] ``` ### Example (Unarchiving a thread): -```bash +```php $archiveThread[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/closePost.mdx b/content/docs/(functions)/Threads/closePost.mdx index ded539db..ccd2608f 100644 --- a/content/docs/(functions)/Threads/closePost.mdx +++ b/content/docs/(functions)/Threads/closePost.mdx @@ -6,18 +6,18 @@ Close/Open a post ## Usage -```bash +```php $closePost[Post ID;Close (yes/no)] ``` ### Example (Closing a post): -```bash +```php $closePost[1024373454578917426] ``` ### Example (Opening a post): -```bash +```php $closePost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/createPost.mdx b/content/docs/(functions)/Threads/createPost.mdx index eebf4f6c..8949e14d 100644 --- a/content/docs/(functions)/Threads/createPost.mdx +++ b/content/docs/(functions)/Threads/createPost.mdx @@ -6,7 +6,7 @@ add a new post in forum channel ## Usage -```bash +```php $createPost[ {forum=Forum Name/ID} {title=Post title} diff --git a/content/docs/(functions)/Threads/createThread.mdx b/content/docs/(functions)/Threads/createThread.mdx index 43cde070..942e1b88 100644 --- a/content/docs/(functions)/Threads/createThread.mdx +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -9,7 +9,7 @@ Create a thread, corresponding to the messageID specified in the function `$createThread[Channel ID;Message ID;Thread Name;Reason;Duration (1h/1d/3d/7d)(optional);Return ID (yes/no)(optional);Private Thread? (yes/no)]` #### Example (Create Thread on user message): -```bash +```php $createThread[ {channel=$channelID} {message=$messageID} @@ -18,7 +18,7 @@ $createThread[ ``` #### Example (Create A private thread): -```bash +```php $createThread[ {channel=$channelID} {message=$messageID} diff --git a/content/docs/(functions)/Threads/deletePost.mdx b/content/docs/(functions)/Threads/deletePost.mdx index 46ac279d..1c54a093 100644 --- a/content/docs/(functions)/Threads/deletePost.mdx +++ b/content/docs/(functions)/Threads/deletePost.mdx @@ -6,11 +6,11 @@ delete a post ## Usage -```bash +```php $deletePost[Post ID] ``` ### Example: -```bash +```php $deletePost[1024373454578917426] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/deletePosts.mdx b/content/docs/(functions)/Threads/deletePosts.mdx index 8350eba4..e356e7a5 100644 --- a/content/docs/(functions)/Threads/deletePosts.mdx +++ b/content/docs/(functions)/Threads/deletePosts.mdx @@ -6,11 +6,11 @@ delete posts up to 10 post ## Usage -```bash +```php $deletePost[Post 1;Post 2;...] ``` ### Example: -```bash +```php $deletePosts[1024373454578917426;1024373433578915132;1222373424378915555] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/editPost.mdx b/content/docs/(functions)/Threads/editPost.mdx index 04e1e242..50293365 100644 --- a/content/docs/(functions)/Threads/editPost.mdx +++ b/content/docs/(functions)/Threads/editPost.mdx @@ -6,7 +6,7 @@ edit an existing post in forum channel ## Usage -```bash +```php $editPost[ {post_id=Post ID} {title=New Post title} @@ -43,7 +43,7 @@ It accept embed and curl format like\ ``` ### Example (Lock , Add Tag Inactive, Remove Tag Active): -```bash +```php $editPost[ {id=1234} {locked=yes} diff --git a/content/docs/(functions)/Threads/lockPost.mdx b/content/docs/(functions)/Threads/lockPost.mdx index fbe30473..f230a5aa 100644 --- a/content/docs/(functions)/Threads/lockPost.mdx +++ b/content/docs/(functions)/Threads/lockPost.mdx @@ -6,18 +6,18 @@ lock/unlock a post ## Usage -```bash +```php $lockPost[Post ID;Lock? (yes/no)] ``` ### Example (Locking a post): -```bash +```php $lockPost[1024373454578917426] ``` ### Example (Unlocking a post): -```bash +```php $lockPost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/lockThread.mdx b/content/docs/(functions)/Threads/lockThread.mdx index ec4a3c23..0d0b33de 100644 --- a/content/docs/(functions)/Threads/lockThread.mdx +++ b/content/docs/(functions)/Threads/lockThread.mdx @@ -6,18 +6,18 @@ lock/unlock a thread ## Usage -```bash +```php $lockThread[Thread ID;Lock? (yes/no)] ``` ### Example (Locking a thread): -```bash +```php $lockThread[1024373454578917426] ``` ### Example (Unlocking a thread): -```bash +```php $lockThread[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/meta.json b/content/docs/(functions)/Threads/meta.json index 20057db8..40235148 100644 --- a/content/docs/(functions)/Threads/meta.json +++ b/content/docs/(functions)/Threads/meta.json @@ -1,6 +1,4 @@ { - "title": "Threads Functions", - "pages": [ - "..." - ] + "title": "Threads Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Threads/pinPost.mdx b/content/docs/(functions)/Threads/pinPost.mdx index ea0eecf3..159c893a 100644 --- a/content/docs/(functions)/Threads/pinPost.mdx +++ b/content/docs/(functions)/Threads/pinPost.mdx @@ -6,18 +6,18 @@ pin/unpin a post ## Usage -```bash +```php $pinPost[Post ID;pin? (yes/no)] ``` ### Example (pining a post): -```bash +```php $pinPost[1024373454578917426] ``` ### Example (Unpining a post): -```bash +```php $pinPost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/removeUsersFromThread.mdx b/content/docs/(functions)/Threads/removeUsersFromThread.mdx index b50b36ea..d8de79bd 100644 --- a/content/docs/(functions)/Threads/removeUsersFromThread.mdx +++ b/content/docs/(functions)/Threads/removeUsersFromThread.mdx @@ -6,18 +6,18 @@ remove users from a thread ## Usage -```bash +```php $removeUsersFromThread[Thread ID;User 1 ID;User 2 ID;User 3 ID....] ``` ### Example (remove the triggerer from a thread): -```bash +```php $removeUsersFromThread[1024373454578917426;$authorID] ``` ### Example (remove multiple users): -```bash +```php $removeUsersFromThread[1024373454578917426;$authorID;788361834360864808] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Timeout/meta.json b/content/docs/(functions)/Timeout/meta.json index bec6ed69..b2067ae1 100644 --- a/content/docs/(functions)/Timeout/meta.json +++ b/content/docs/(functions)/Timeout/meta.json @@ -1,6 +1,4 @@ { - "title": "User Timeout Functions", - "pages": [ - "..." - ] + "title": "User Timeout Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Timeout/timeoutAction.mdx b/content/docs/(functions)/Timeout/timeoutAction.mdx index ae3df14c..df00cd57 100644 --- a/content/docs/(functions)/Timeout/timeoutAction.mdx +++ b/content/docs/(functions)/Timeout/timeoutAction.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```bash +```php $timeoutAction ``` diff --git a/content/docs/(functions)/Timeout/timeoutBy.mdx b/content/docs/(functions)/Timeout/timeoutBy.mdx index 4c6a4051..dd8aac29 100644 --- a/content/docs/(functions)/Timeout/timeoutBy.mdx +++ b/content/docs/(functions)/Timeout/timeoutBy.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```bash +```php $timeoutBy ``` diff --git a/content/docs/(functions)/Timeout/timeoutReason.mdx b/content/docs/(functions)/Timeout/timeoutReason.mdx index 6824ff24..c6621e80 100644 --- a/content/docs/(functions)/Timeout/timeoutReason.mdx +++ b/content/docs/(functions)/Timeout/timeoutReason.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```bash +```php $timeoutReason ``` diff --git a/content/docs/(functions)/Timeout/userGetTimeout.mdx b/content/docs/(functions)/Timeout/userGetTimeout.mdx index 58f263a5..8fa87ab6 100644 --- a/content/docs/(functions)/Timeout/userGetTimeout.mdx +++ b/content/docs/(functions)/Timeout/userGetTimeout.mdx @@ -7,7 +7,7 @@ If user is not timed out, it will return 0. ## Usage -```bash +```php $userGetTimeout[user id] ``` diff --git a/content/docs/(functions)/Timeout/userRemoveTimeout.mdx b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx index 2a399e7b..ac344269 100644 --- a/content/docs/(functions)/Timeout/userRemoveTimeout.mdx +++ b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx @@ -6,7 +6,7 @@ Removes a timeout from a user. ## Usage -```bash +```php $userRemoveTimeout[user id;reason (optional)] ``` diff --git a/content/docs/(functions)/Timeout/userSetTimeout.mdx b/content/docs/(functions)/Timeout/userSetTimeout.mdx index 21c74730..a98a4e9e 100644 --- a/content/docs/(functions)/Timeout/userSetTimeout.mdx +++ b/content/docs/(functions)/Timeout/userSetTimeout.mdx @@ -6,7 +6,7 @@ Sets a user timeout, so the user cannot talk/interact in the server. ## Usage -```bash +```php $userSetTimeout[user id;time (optional, default:'10m');reason (optional)] ``` diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index 77926c51..240943d5 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -9,7 +9,7 @@ To call a user-defined function created with `$function` `$callFunction[Function Name;Argument 1 (optional);Argument 2....(optional)]` #### Example: -```bash +```php $callFunction[printHello;Mika] ``` diff --git a/content/docs/(functions)/Useful/commandCode.mdx b/content/docs/(functions)/Useful/commandCode.mdx index 9ff431fa..31271e26 100644 --- a/content/docs/(functions)/Useful/commandCode.mdx +++ b/content/docs/(functions)/Useful/commandCode.mdx @@ -6,7 +6,7 @@ Returns the code of the current command. ## Usage -```bash +```php $commandCode ``` diff --git a/content/docs/(functions)/Useful/deleteTrigger.mdx b/content/docs/(functions)/Useful/deleteTrigger.mdx index ce8d6ed0..94271117 100644 --- a/content/docs/(functions)/Useful/deleteTrigger.mdx +++ b/content/docs/(functions)/Useful/deleteTrigger.mdx @@ -6,7 +6,7 @@ Delete a command using its token, **empty token = delete current command** ## Usage -```bash +```php $deleteTrigger[Token;Delete Current Trigger If Empty (yes/no, default yes)] ``` diff --git a/content/docs/(functions)/Useful/editTrigger.mdx b/content/docs/(functions)/Useful/editTrigger.mdx index 4b991dce..952a540b 100644 --- a/content/docs/(functions)/Useful/editTrigger.mdx +++ b/content/docs/(functions)/Useful/editTrigger.mdx @@ -8,12 +8,12 @@ Editable types: name, runonlyin, ignorerole, type, trigger, channelused, minper ## Usage -```bash +```php $editTrigger[InfoType;New value;Token (optional)] ``` ### Example: -```bash +```php $editTrigger[name;Edited Name] ``` @@ -21,6 +21,6 @@ $editTrigger[name;Edited Name] you change the trigger time, with `time` as type, and value to be the timestamp (in ms) of the next trigger time, make sure it's a time in future Example (Set the time to trigger after 10s) -```bash +```php $editTrigger[time;$math[$timestamp+10000];$token] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/endForEach.mdx b/content/docs/(functions)/Useful/endForEach.mdx index 23e83892..0a962a8d 100644 --- a/content/docs/(functions)/Useful/endForEach.mdx +++ b/content/docs/(functions)/Useful/endForEach.mdx @@ -6,7 +6,7 @@ To close $foreach ## Usage -```bash +```php Example: $forEach[...] CODE diff --git a/content/docs/(functions)/Useful/endFunction.mdx b/content/docs/(functions)/Useful/endFunction.mdx index f7b7e153..24b22786 100644 --- a/content/docs/(functions)/Useful/endFunction.mdx +++ b/content/docs/(functions)/Useful/endFunction.mdx @@ -6,12 +6,12 @@ To close $function ## Usage -```bash +```php $endFunction ``` ### Example: -```bash +```php $function[Function Name;Paramaters..] CODE $endFunction diff --git a/content/docs/(functions)/Useful/endTimeout.mdx b/content/docs/(functions)/Useful/endTimeout.mdx index e95222f3..d5120d2b 100644 --- a/content/docs/(functions)/Useful/endTimeout.mdx +++ b/content/docs/(functions)/Useful/endTimeout.mdx @@ -6,7 +6,7 @@ To close $setTimeout ## Usage -```bash +```php $endTimeout ``` diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 57581641..9fb6b85b 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -5,7 +5,7 @@ title: "$forEach" Will loop over a list and every loop it will take an item and assign it inside varname accessible by $get[varname] or $varname ## Usage: -```bash +```php $forEach[varname;LIST (ex: mido rake azz);Separator (Optional, default is space)] ``` ## Loop Limits @@ -18,7 +18,7 @@ Loops in this function are limited to a certain number of cycles. These limits v | 5 (Ultra) | 60 | ## Example: -```bash +```php $forEach[member;Rake, Mido, Mika, Azz, Felix, Flinkz, Wiki, Ddk;, ] $get[member], is one of our Staff Members! $endForEach diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index cc5903fa..e77ec854 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -9,7 +9,7 @@ Create a user-defined function that can be called by $callFunction or $functionN `$function[Function name;Param 1 (optional);Param 2...(optional)]` #### Example: -```bash +```php $function[printHello;name] Hello $name $endFunction diff --git a/content/docs/(functions)/Useful/getToken.mdx b/content/docs/(functions)/Useful/getToken.mdx index a4aa6a43..355a07f0 100644 --- a/content/docs/(functions)/Useful/getToken.mdx +++ b/content/docs/(functions)/Useful/getToken.mdx @@ -7,12 +7,12 @@ search for command name, and return the first matching command token.\ ## Usage -```bash +```php $getToken[Name] ``` ### Example: -```bash +```php $getToken[Welcomer] Output:dZK1x ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/getTrigger.mdx b/content/docs/(functions)/Useful/getTrigger.mdx index 6c067a43..cb1e5553 100644 --- a/content/docs/(functions)/Useful/getTrigger.mdx +++ b/content/docs/(functions)/Useful/getTrigger.mdx @@ -8,11 +8,11 @@ Valid InfoType: name, token, guild, code, runonlyin, ignorerole, type, typename, ## Usage -```bash +```php $getTrigger[InfoType;Token (optional)] ``` ### Example: -```bash +```php $getTrigger[name] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/ignoreErrors.mdx b/content/docs/(functions)/Useful/ignoreErrors.mdx index 6aa1f64e..65ab92b7 100644 --- a/content/docs/(functions)/Useful/ignoreErrors.mdx +++ b/content/docs/(functions)/Useful/ignoreErrors.mdx @@ -6,7 +6,7 @@ It will tell the interpreter to ignore the errors and in case of error, the func ## Usage -```bash +```php $ignoreErrors[yes/no;placeholder (default: error)] ``` diff --git a/content/docs/(functions)/Useful/includeLibrary.mdx b/content/docs/(functions)/Useful/includeLibrary.mdx index 8ece6926..c22f2122 100644 --- a/content/docs/(functions)/Useful/includeLibrary.mdx +++ b/content/docs/(functions)/Useful/includeLibrary.mdx @@ -6,7 +6,7 @@ To include code created in Library trigger ## Usage -```bash +```php $includeLibrary[Library name] ``` diff --git a/content/docs/(functions)/Useful/jsonRequest.mdx b/content/docs/(functions)/Useful/jsonRequest.mdx index 39d1b647..3ff7eb95 100644 --- a/content/docs/(functions)/Useful/jsonRequest.mdx +++ b/content/docs/(functions)/Useful/jsonRequest.mdx @@ -11,7 +11,7 @@ The URL must be whitelisted, you can check in our support server. ## Usage -```bash +```php $jsonRequest[url;property;error message;headerName:headerValue;headerName:headerValue;...] ``` @@ -28,6 +28,6 @@ Assume `my api url` return json reply like: ``` Code: -```bash +```php Your money is $jsonRequest[my api;money;failed to get the money] ``` diff --git a/content/docs/(functions)/Useful/meta.json b/content/docs/(functions)/Useful/meta.json index 828326dc..11fdb0d5 100644 --- a/content/docs/(functions)/Useful/meta.json +++ b/content/docs/(functions)/Useful/meta.json @@ -1,6 +1,4 @@ { - "title": "Useful Functions", - "pages": [ - "..." - ] + "title": "Useful Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Useful/return.mdx b/content/docs/(functions)/Useful/return.mdx index 00861524..1e5338b9 100644 --- a/content/docs/(functions)/Useful/return.mdx +++ b/content/docs/(functions)/Useful/return.mdx @@ -9,12 +9,12 @@ It has no effect outside the user-defined function ## Usage -```bash +```php $return[Return Value(optional)] ``` ### Example: -```bash +```php $function[add;num1;num2] $return[$math[$num1+$num2]] $endFunction diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx index 52d2bddc..d11b6398 100644 --- a/content/docs/(functions)/Useful/stop.mdx +++ b/content/docs/(functions)/Useful/stop.mdx @@ -38,7 +38,7 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ Using plain text in your code, like below will **NOT** work!! This code doesn't work: -```bash +```php This is plain text before the stop function $stop This is plain text after the stop function diff --git a/content/docs/(functions)/Useful/triggerExists.mdx b/content/docs/(functions)/Useful/triggerExists.mdx index aacb9986..b823c87e 100644 --- a/content/docs/(functions)/Useful/triggerExists.mdx +++ b/content/docs/(functions)/Useful/triggerExists.mdx @@ -6,7 +6,7 @@ Check if a trigger with the specified token exists ## Usage -```bash +```php $triggerExists[Token] ``` diff --git a/content/docs/(functions)/Variables/increaseChannelVar.mdx b/content/docs/(functions)/Variables/increaseChannelVar.mdx index 94de2b79..361d58a0 100644 --- a/content/docs/(functions)/Variables/increaseChannelVar.mdx +++ b/content/docs/(functions)/Variables/increaseChannelVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```bash +```php $increaseChannelVar[variable name;amount/expression;channel id;default amount (default is 0)] ``` ### Example (increase channel messages by 1): -```bash +```php $increaseChannelVar[messages;1] diff --git a/content/docs/(functions)/Variables/increaseServerVar.mdx b/content/docs/(functions)/Variables/increaseServerVar.mdx index 8a5860bf..2d822ce9 100644 --- a/content/docs/(functions)/Variables/increaseServerVar.mdx +++ b/content/docs/(functions)/Variables/increaseServerVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```bash +```php $increaseServerVar[variable name;amount/expression;default amount (default is 0)] ``` ### Example (increase ticket numbers by 1): -```bash +```php $increaseServerVar[ticket numbers;1] diff --git a/content/docs/(functions)/Variables/increaseUserVar.mdx b/content/docs/(functions)/Variables/increaseUserVar.mdx index 71907b44..0c95253c 100644 --- a/content/docs/(functions)/Variables/increaseUserVar.mdx +++ b/content/docs/(functions)/Variables/increaseUserVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```bash +```php $increaseUserVar[variable name;amount/expression;user id;default amount (default is 0)] ``` ### Example (increase user money by 1000): -```bash +```php $increaseUserVar[money;1000] diff --git a/content/docs/(functions)/Variables/initVar.mdx b/content/docs/(functions)/Variables/initVar.mdx index 2cdc14ce..e79bf12a 100644 --- a/content/docs/(functions)/Variables/initVar.mdx +++ b/content/docs/(functions)/Variables/initVar.mdx @@ -6,7 +6,7 @@ Initializes a variable with a default value if the var is undefined or does not ## Usage -```bash +```php $initVar[type;varname;Default Value;Custom ID (optional)] ``` @@ -19,21 +19,21 @@ server, message, channel, user * For type 'user', it will be the user id. ### Example (Server Var): -```bash +```php $initVar[server;totalPolls;0] ``` ### Example (Channel Var): -```bash +```php $initVar[channel;ticket-owner;$authorID;$channelID] ``` ### Example (User Var): -```bash +```php $initVar[user;money;0;$userID] ``` ### Example (Message Var): -```bash +```php $initVar[message;reactions;0;$messageID] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Variables/meta.json b/content/docs/(functions)/Variables/meta.json index aced8042..4d707058 100644 --- a/content/docs/(functions)/Variables/meta.json +++ b/content/docs/(functions)/Variables/meta.json @@ -1,6 +1,4 @@ { - "title": "Variables Functions", - "pages": [ - "..." - ] + "title": "Variables Functions", + "pages": ["..."] } diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx index 9657dadc..c340a38b 100644 --- a/content/docs/(functions)/Variables/userVarRank.mdx +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -6,7 +6,7 @@ Return user var rank returned by $userleaderboard for a single user ## Usage -```bash +```php $uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);User ID (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewChannelVars.mdx b/content/docs/(functions)/Variables/viewChannelVars.mdx index cd13c814..73532228 100644 --- a/content/docs/(functions)/Variables/viewChannelVars.mdx +++ b/content/docs/(functions)/Variables/viewChannelVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for a specific channel, and se ## Usage -```bash +```php $viewChannelVars[Channel ID (default: $channelID);Separator;Query Regex (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewServerVars.mdx b/content/docs/(functions)/Variables/viewServerVars.mdx index f5e5a0a9..04d3f1d5 100644 --- a/content/docs/(functions)/Variables/viewServerVars.mdx +++ b/content/docs/(functions)/Variables/viewServerVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for the server, and search for ## Usage -```bash +```php $viewServerVars[Separator;Query Regex (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewUserVars.mdx b/content/docs/(functions)/Variables/viewUserVars.mdx index 7492fafa..c60d9beb 100644 --- a/content/docs/(functions)/Variables/viewUserVars.mdx +++ b/content/docs/(functions)/Variables/viewUserVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for a specific user ## Usage -```bash +```php $viewUserVars[User ID;Separator] ``` diff --git a/content/docs/(functions)/meta.json b/content/docs/(functions)/meta.json index b996eb36..119eccfe 100644 --- a/content/docs/(functions)/meta.json +++ b/content/docs/(functions)/meta.json @@ -1,34 +1,34 @@ { - "title": "Functions", - "pages": [ - "Member", - "Channel", - "Message", - "Interaction", - "Threads", - "Role", - "Server", - "Random", - "Text", - "./Text/Condition", - "Stickers", - "Events", - "Timeout", - "./Text/Embed", - "./Text/Components", - "./Text/Math", - "./Text/textSplit", - "./Text/Array", - "./Text/Object", - "./Text/isandhas", - "./Text/only", - "./Text/Regex", - "Date", - "Variables", - "Bot", - "Useful", - "Cooldown", - "Request", - "Image" - ] + "title": "Functions", + "pages": [ + "Member", + "Channel", + "Message", + "Interaction", + "Threads", + "Role", + "Server", + "Random", + "Text", + "./Text/Condition", + "Stickers", + "Events", + "Timeout", + "./Text/Embed", + "./Text/Components", + "./Text/Math", + "./Text/textSplit", + "./Text/Array", + "./Text/Object", + "./Text/isandhas", + "./Text/only", + "./Text/Regex", + "Date", + "Variables", + "Bot", + "Useful", + "Cooldown", + "Request", + "Image" + ] } diff --git a/content/docs/Changelogs/meta.json b/content/docs/Changelogs/meta.json index 7b80bb78..8f1fcfa9 100644 --- a/content/docs/Changelogs/meta.json +++ b/content/docs/Changelogs/meta.json @@ -1,6 +1,4 @@ { - "title": "Changelogs", - "pages": [ - "..." - ] + "title": "Changelogs", + "pages": ["..."] } diff --git a/content/docs/Changelogs/v1.4.4.mdx b/content/docs/Changelogs/v1.4.4.mdx index 8b756eda..f1d8a32e 100644 --- a/content/docs/Changelogs/v1.4.4.mdx +++ b/content/docs/Changelogs/v1.4.4.mdx @@ -274,17 +274,17 @@ $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No ``` ##### Example (Pause invites for 24 hours) -```bash +```php $securityPause[24h;yes;no] ``` ##### Example (Pause DMs for 12 hours) -```bash +```php $securityPause[12h;no;yes] ``` ##### Example (Pause invites and DMs for 24 hours) -```bash +```php $securityPause[24h;yes;yes] ``` diff --git a/content/docs/CodeReferences/ref.expression.mdx b/content/docs/CodeReferences/ref.expression.mdx index 350da2b3..58126825 100644 --- a/content/docs/CodeReferences/ref.expression.mdx +++ b/content/docs/CodeReferences/ref.expression.mdx @@ -31,7 +31,7 @@ Here's a breakdown of the available operators: **Example:** -```bash +```php $username==Mido ``` diff --git a/content/docs/Contribution_Info/meta.json b/content/docs/Contribution_Info/meta.json index 34e210e6..a379f633 100644 --- a/content/docs/Contribution_Info/meta.json +++ b/content/docs/Contribution_Info/meta.json @@ -1,6 +1,4 @@ { - "title": "Contribute", - "pages": [ - "..." - ] + "title": "Contribute", + "pages": ["..."] } diff --git a/content/docs/Guide/meta.json b/content/docs/Guide/meta.json index e75116e1..9c8455f2 100644 --- a/content/docs/Guide/meta.json +++ b/content/docs/Guide/meta.json @@ -1,13 +1,15 @@ { - "pages": [ - "1.create", - "syntax", - "5.comment", - "6.variables", - "7.array", - "4.template", - "2.faq", - "...", - "!3.policy" - ] + "pages": [ + "../index", + "1.create", + "syntax", + "5.comment", + "6.variables", + "7.array", + "4.template", + "2.faq", + "...", + "!3.policy" + ], + "defaultOpen": true } diff --git a/content/docs/Legal/meta.json b/content/docs/Legal/meta.json index 69d951bf..66c1b4fd 100644 --- a/content/docs/Legal/meta.json +++ b/content/docs/Legal/meta.json @@ -1,7 +1,5 @@ { - "title": "Legal", - "pages": [ - "..." - ], - "defaultOpen": true + "title": "Legal", + "pages": ["..."], + "defaultOpen": true } diff --git a/content/docs/Other/curl.mdx b/content/docs/Other/curl.mdx index 57507807..6ea6a828 100644 --- a/content/docs/Other/curl.mdx +++ b/content/docs/Other/curl.mdx @@ -16,7 +16,7 @@ Instead of using parameter arrays like `$randomText[one;two;three]`, curl argume Let's say you want to create a text channel. Using traditional parameters, you might need to include several empty values for optional settings. With curl arguments, it's much simpler: -```bash +```php $createChannel[ {name=channelName} {type=text} diff --git a/content/docs/Other/meta.json b/content/docs/Other/meta.json index 870de569..c8b72694 100644 --- a/content/docs/Other/meta.json +++ b/content/docs/Other/meta.json @@ -1,8 +1,4 @@ { - "title": "Other Information", - "pages": [ - "...", - "!syntax" - ], - "defaultOpen": true + "title": "Other Information", + "pages": ["...", "!syntax"] } diff --git a/content/docs/Trigger/1.triggers.mdx b/content/docs/Trigger/1.triggers.mdx index ba27a9cb..48a55965 100644 --- a/content/docs/Trigger/1.triggers.mdx +++ b/content/docs/Trigger/1.triggers.mdx @@ -5,68 +5,85 @@ title: "Triggers showcase" Here's a quick preview of all available triggers: ## Word + [Triggers on specific words/patterns](/Trigger/word) -> ![Word](https://i.imgur.com/zQtDgDM.png) +![Word](https://i.imgur.com/zQtDgDM.png) ## Reaction + [Fires once someone reacts to a message](/Trigger/reaction) -> ![](https://i.imgur.com/h1pe28J.gif) +![](https://i.imgur.com/h1pe28J.gif) ## Button + [Detects users clicking buttons sent by the bot](/Trigger/button) -> ![](https://i.imgur.com/QrxFg8d.png) +![](https://i.imgur.com/QrxFg8d.png) ## Menu + [Activates when someone confirms their choice in menu](/Trigger/menu) -> ![](https://i.imgur.com/7wZLMIq.gif) +![](https://i.imgur.com/7wZLMIq.gif) ## Slash command + [Responds to a discord slash command created with the bot](/Trigger/slash) -> ![](https://i.imgur.com/Hspy46H.gif) +![](https://i.imgur.com/Hspy46H.gif) ## Modal + [Triggers on submittion of a modal (form) if that modal was sent by the bot](/Trigger/modal) -> ![](https://i.imgur.com/ON9e1D4.png) +![](https://i.imgur.com/ON9e1D4.png) ## Channel + [Detects channels being added or removed](/Trigger/channel) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105138748414492772/channel-trigger.gif) +![](https://cdn.discordapp.com/attachments/957286111250624552/1105138748414492772/channel-trigger.gif) ## Role + [Triggers on role assignment](/Trigger/roleaddremove) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) +![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) ## Timed event + [Executes the code at a set time](/Trigger/time) -> ![](https://cdn.discordapp.com/attachments/1105135517055594508/1105141376083038240/image.png) +![](https://cdn.discordapp.com/attachments/1105135517055594508/1105141376083038240/image.png) ## Interval + [Repeatedly executes the code once in a specific time (e.g every hour)](/Trigger/time) -> ![](https://cdn.discordapp.com/attachments/1100128432395927765/1116042286812385370/image.png) +![](https://cdn.discordapp.com/attachments/1100128432395927765/1116042286812385370/image.png) ## Voice + [Fires of when user leaves or joins a voice channel](/Trigger/voicecondecon) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) +![](https://cdn.discordapp.com/attachments/957286111250624552/1105149730553614486/voice-trigger.gif) ## Server boost + [Detects people boosting the server](/Trigger/serverboost) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105142982270783587/image.png) +![](https://cdn.discordapp.com/attachments/957286111250624552/1105142982270783587/image.png) ## Join or Leave + [Triggers when someone joins or leaves the server](/Trigger/joinorleave) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105143572510027806/image.png) +![](https://cdn.discordapp.com/attachments/957286111250624552/1105143572510027806/image.png) ## On Upvote + [Triggers when someone upvote in Top.gg.](/Trigger/upvote) ## User Command + [Triggers when user command is selected from the user's context menu.](/Trigger/app_cmd_user) ## Message Command + [Triggers when user command is selected from the message's context menu.](/Trigger/app_cmd_message) ## Library + [A code which can be imported in any other code](/Trigger/library) -> ![](https://cdn.discordapp.com/attachments/957286111250624552/1105145858581872750/image.png) -> -> In this example $includeLibrary has been used to import a library called `tools` which contained a custom $embedMsg function. +![](https://cdn.discordapp.com/attachments/957286111250624552/1105145858581872750/image.png) + +In this example $includeLibrary has been used to import a library called `tools` which contained a custom $embedMsg function. diff --git a/content/docs/Trigger/meta.json b/content/docs/Trigger/meta.json index 40ebb413..9a774247 100644 --- a/content/docs/Trigger/meta.json +++ b/content/docs/Trigger/meta.json @@ -1,6 +1,4 @@ { - "title": "Trigger Types", - "pages": [ - "..." - ] + "title": "Trigger Types", + "pages": ["..."] } diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index be59cde3..6eeb04a5 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -93,7 +93,7 @@ Let's say we want our [Hug command](#using-parameters) to trigger on: ?hug, ?abr #### How can we do that? We can do that with the following trigger: -```bash +```php ?hug|?abrazo|?étreinte ``` diff --git a/content/docs/Tutorials/meta.json b/content/docs/Tutorials/meta.json index f998652e..1e185dd6 100644 --- a/content/docs/Tutorials/meta.json +++ b/content/docs/Tutorials/meta.json @@ -1,6 +1,4 @@ { - "title": "Tutorials & Examples", - "pages": [ - "..." - ] + "title": "Tutorials & Examples", + "pages": ["..."] } diff --git a/content/docs/index.mdx b/content/docs/index.mdx index 3b88facf..abab6cdd 100644 --- a/content/docs/index.mdx +++ b/content/docs/index.mdx @@ -10,14 +10,14 @@ It is highly recommended not to skip this guide, or to read only parts of it. ## What is Custom Command Bot? -Same as it sounds - Custom Command (CC) is a bot that allows you to create fully customizable commands. +Custom Command (CC) is a bot that allows you to create fully customizable commands. It is a perfect tool for both experienced developers and complete beginners looking for a quick and easy command system. ## Examples -![Word Trigger](/images/guide/get-started/get-started-word.png) -![Slash Command](/images/guide/get-started/get-started-slash-cmd.png) -![Join Event Trigger](/images/guide/get-started/get-started-join-event.png) +![Word Trigger](/images/guide/getting-started/word.png) +![Slash Command](/images/guide/getting-started/slash-cmd.png) +![Join Event Trigger](/images/guide/getting-started/join-event.png) ## Do I have to know coding? diff --git a/content/docs/meta.json b/content/docs/meta.json index 8c01c85a..e91bb504 100644 --- a/content/docs/meta.json +++ b/content/docs/meta.json @@ -1,14 +1,12 @@ { - "pages": [ - "---Guide---", - "index", - "...Guide", - "Trigger", - "Tutorials", - "Other", - "Changelogs", - "(functions)", - "Contribution_Info", - "Legal" - ] + "pages": [ + "Guide", + "Trigger", + "Tutorials", + "Other", + "Changelogs", + "(functions)", + "Contribution_Info", + "Legal" + ] } diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx index 2f7f4a99..f730c24c 100644 --- a/lib/layout.shared.tsx +++ b/lib/layout.shared.tsx @@ -1,29 +1,39 @@ -import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; -import { appName, gitConfig } from './shared'; +import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared"; +import { appName, gitConfig } from "./shared"; export function baseOptions(): BaseLayoutProps { - return { - nav: { - title: ( - <> - - {appName} - - ), - }, - // Carried over from the old VuePress navbar. - links: [ - { - text: 'Dashboard', - url: 'https://ccommandbot.com/dashboard', - external: true, - }, - { - text: 'Discord', - url: 'https://discord.gg/ZFQNZA4Ekz', - external: true, - }, - ], - githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, - }; + return { + nav: { + title: ( + <> + + {appName} + + ), + }, + links: [ + { + text: "Dashboard", + url: "https://ccommandbot.com/dashboard", + external: true, + }, + { + text: "Invite The Bot", + url: "https://ccommandbot.com/add", + external: true, + }, + { + text: "Join Support Server", + url: "https://ccommandbot.com/join", + external: true, + }, + ], + githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, + }; } diff --git a/lib/shared.ts b/lib/shared.ts index b24ee42d..c69bc5e8 100644 --- a/lib/shared.ts +++ b/lib/shared.ts @@ -1,15 +1,13 @@ -export const appName = 'Custom Command'; +export const appName = "Custom Command"; export const appDescription = "Custom Command Bot's Documentation"; -export const siteUrl = 'https://doc.ccommandbot.com'; +export const siteUrl = "https://doc.ccommandbot.com"; export const socialImage = `${siteUrl}/bot-profile.png`; -// Docs are mounted at the site root so URLs match the previous VuePress site -// (e.g. /Member/setNickname), keeping every existing inbound link alive. -export const docsRoute = '/'; -export const docsContentRoute = '/llms.mdx'; +export const docsRoute = "/"; +export const docsContentRoute = "/llms.mdx"; export const gitConfig = { - user: 'raspdevpy', - repo: 'ccdoc', - branch: 'main', + user: "raspdevpy", + repo: "ccdoc", + branch: "main", }; diff --git a/lib/source.ts b/lib/source.ts index 3097a378..166ec8b1 100644 --- a/lib/source.ts +++ b/lib/source.ts @@ -1,41 +1,44 @@ -import { loader } from 'fumadocs-core/source'; -import { docsContentRoute, docsRoute } from './shared'; -import { defineDocs } from 'fumadocs-mdx/macro'; -import { metaSchema, pageSchema } from 'fumadocs-core/source/schema'; +import { loader } from "fumadocs-core/source"; +import { docsContentRoute, docsRoute } from "./shared"; +import { defineDocs } from "fumadocs-mdx/macro"; +import { metaSchema, pageSchema } from "fumadocs-core/source/schema"; const docs = defineDocs({ - dir: 'content/docs', - docs: { - schema: pageSchema, - postprocess: { - includeProcessedMarkdown: true, + dir: "content/docs", + docs: { + schema: pageSchema, + postprocess: { + includeProcessedMarkdown: true, + }, + }, + meta: { + schema: metaSchema, }, - }, - meta: { - schema: metaSchema, - }, }); -// See https://fumadocs.dev/docs/headless/source-api for more info export const source = loader({ - baseUrl: docsRoute, - source: docs.toFumadocsSource(), - plugins: [], + baseUrl: docsRoute, + source: docs.toFumadocsSource(), + plugins: [], }); -export function getPageMarkdownUrl(page: (typeof source)['$inferPage']) { - const segments = [...page.slugs, 'content.md']; +export function getPageMarkdownUrl(page: (typeof source)["$inferPage"]) { + const segments = [...page.slugs, "content.md"]; - return { - segments, - url: '/' + [page.locale, ...docsContentRoute.split('/'), ...segments].filter(Boolean).join('/'), - }; + return { + segments, + url: + "/" + + [page.locale, ...docsContentRoute.split("/"), ...segments] + .filter(Boolean) + .join("/"), + }; } -export async function getLLMText(page: (typeof source)['$inferPage']) { - const processed = await page.data.getText('processed'); +export async function getLLMText(page: (typeof source)["$inferPage"]) { + const processed = await page.data.getText("processed"); - return `# ${page.data.title} (${page.url}) + return `# ${page.data.title} (${page.url}) ${processed}`; } diff --git a/old b/old deleted file mode 160000 index c77a347f..00000000 --- a/old +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c77a347f975674b5599726c57d5e4ae07d2fd17b diff --git a/package.json b/package.json index 24c3c1f2..3f9a9b2c 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,12 @@ "dev": "next dev -p 8080", "build": "next build && node scripts/build-docs-pages.mjs", "start": "serve out -l 8080", - "types:check": "next typegen && tsc --noEmit" + "types:check": "next typegen && tsc --noEmit", + "wpack:dev": "next dev -p 8080 --webpack", + "wpack:build": "next build --webpack && node scripts/build-docs-pages.mjs" }, "dependencies": { + "@fumadocs/base-ui": "^16.14.0", "@skyra/discord-components-core": "^4.0.2", "@skyra/discord-components-react": "^4.0.2", "cnfast": "^0.1.0", @@ -20,7 +23,8 @@ "next": "16.2.12", "next-themes": "^0.4.6", "react": "^19.2.8", - "react-dom": "^19.2.8" + "react-dom": "^19.2.8", + "shiki": "^4.4.1" }, "devDependencies": { "@tailwindcss/postcss": "^4.3.3", @@ -31,6 +35,7 @@ "@types/react-dom": "^19.2.3", "cheerio": "^1.2.0", "postcss": "^8.5.24", + "react-medium-image-zoom": "^5.4.8", "serve": "^14.2.6", "tailwindcss": "^4.3.3", "typescript": "^6.0.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67ed202e..73e1ef9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@fumadocs/base-ui': + specifier: ^16.14.0 + version: 16.14.0(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) '@skyra/discord-components-core': specifier: ^4.0.2 version: 4.0.2 @@ -41,6 +44,9 @@ importers: react-dom: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) + shiki: + specifier: ^4.4.1 + version: 4.4.1 devDependencies: '@tailwindcss/postcss': specifier: ^4.3.3 @@ -66,6 +72,9 @@ importers: postcss: specifier: ^8.5.24 version: 8.5.25 + react-medium-image-zoom: + specifier: ^5.4.8 + version: 5.4.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8) serve: specifier: ^14.2.6 version: 14.2.6(supports-color@7.2.0) @@ -1789,6 +1798,12 @@ packages: peerDependencies: react: ^19.2.8 + react-medium-image-zoom@5.4.8: + resolution: {integrity: sha512-72CIldEUaPejjcaDOYIeDsGlWzNKpmxyKgiPi1LBCkWCIGHDLlA2KTeo2uNtmN/m72Y3k/2uWDfon9SDiPbHaA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -3968,6 +3983,11 @@ snapshots: react: 19.2.8 scheduler: 0.27.0 + react-medium-image-zoom@5.4.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll-bar@2.3.8(@types/react@19.2.18)(react@19.2.8): dependencies: react: 19.2.8 diff --git a/public/images/guide/get-started/get-started-join-event.png b/public/images/guide/getting-started/join-event.png similarity index 100% rename from public/images/guide/get-started/get-started-join-event.png rename to public/images/guide/getting-started/join-event.png diff --git a/public/images/guide/get-started/get-started-slash-cmd.png b/public/images/guide/getting-started/slash-cmd.png similarity index 100% rename from public/images/guide/get-started/get-started-slash-cmd.png rename to public/images/guide/getting-started/slash-cmd.png diff --git a/public/images/guide/get-started/get-started-word.png b/public/images/guide/getting-started/word.png similarity index 100% rename from public/images/guide/get-started/get-started-word.png rename to public/images/guide/getting-started/word.png diff --git a/scripts/build-docs-pages.mjs b/scripts/build-docs-pages.mjs index 52610a8b..a97442a2 100644 --- a/scripts/build-docs-pages.mjs +++ b/scripts/build-docs-pages.mjs @@ -6,72 +6,83 @@ * * Runs after `next build`, reading the exported HTML in `out/`. */ -import fs from 'node:fs'; -import path from 'node:path'; -import * as cheerio from 'cheerio'; +import fs from "node:fs"; +import path from "node:path"; +import * as cheerio from "cheerio"; -const OUT = path.join(process.cwd(), 'out'); -const CONTENT = path.join(process.cwd(), 'content/docs'); +const OUT = path.join(process.cwd(), "out"); +const CONTENT = path.join(process.cwd(), "content/docs"); /** difficulty labels were never treated as tags */ const NOT_A_TAG = /Easy|Difficult|Read Below|Medium|Bugged/i; function walk(dir, test, found = []) { - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) walk(full, test, found); - else if (test(entry.name)) found.push(full); - } - return found; + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) walk(full, test, found); + else if (test(entry.name)) found.push(full); + } + return found; } /** route -> source .mdx, so tags can be read off the original Badge props */ const sources = new Map(); -for (const file of walk(CONTENT, (n) => n.endsWith('.mdx'))) { - const route = - '/' + - path - .relative(CONTENT, file) - .replace(/\.mdx$/, '') - .replace(/^\(functions\)[/\\]/, '') - .split(path.sep) - .join('/'); - sources.set(route === '/index' ? '/' : route, file); +for (const file of walk(CONTENT, (n) => n.endsWith(".mdx"))) { + const route = + "/" + + path + .relative(CONTENT, file) + .replace(/\.mdx$/, "") + .replace(/^\(functions\)[/\\]/, "") + .split(path.sep) + .join("/"); + sources.set(route === "/index" ? "/" : route, file); } function metaFor(route) { - const file = sources.get(route); - if (!file) return { title: null, tags: [] }; + const file = sources.get(route); + if (!file) return { title: null, tags: [] }; - const raw = fs.readFileSync(file, 'utf8'); - const title = raw.match(/^title:\s*(.*)$/m)?.[1]?.trim().replace(/^"|"$/g, '') ?? null; + const raw = fs.readFileSync(file, "utf8"); + const title = + raw + .match(/^title:\s*(.*)$/m)?.[1] + ?.trim() + .replace(/^"|"$/g, "") ?? null; - const tags = []; - for (const [, text] of raw.matchAll(/]*\btext="([^"]*)"/g)) { - if (text.length > 1 && !NOT_A_TAG.test(text)) tags.push(text); - } - // the old plugin also indexed the bare function name - if (title?.startsWith('$')) tags.push(title.slice(1)); + const tags = []; + for (const [, text] of raw.matchAll(/]*\btext="([^"]*)"/g)) { + if (text.length > 1 && !NOT_A_TAG.test(text)) tags.push(text); + } + // the old plugin also indexed the bare function name + if (title?.startsWith("$")) tags.push(title.slice(1)); - return { title, tags }; + return { title, tags }; } const pages = []; -for (const file of walk(OUT, (n) => n.endsWith('.html'))) { - if (file.includes(`${path.sep}_next${path.sep}`)) continue; +for (const file of walk(OUT, (n) => n.endsWith(".html"))) { + if (file.includes(`${path.sep}_next${path.sep}`)) continue; - const rel = path.relative(OUT, file).replace(/\.html$/, '').split(path.sep).join('/'); - if (rel === '404' || rel === '_not-found') continue; - const route = rel === 'index' ? '/' : '/' + rel; + const rel = path + .relative(OUT, file) + .replace(/\.html$/, "") + .split(path.sep) + .join("/"); + if (rel === "404" || rel === "_not-found") continue; + const route = rel === "index" ? "/" : "/" + rel; - const $ = cheerio.load(fs.readFileSync(file, 'utf8')); - const content = $('.prose').first().html(); - if (content === null) continue; + const $ = cheerio.load(fs.readFileSync(file, "utf8")); + const content = $(".prose").first().html(); + if (content === null) continue; - const { title, tags } = metaFor(route); - pages.push({ title, path: route, content, tags }); + const { title, tags } = metaFor(route); + pages.push({ title, path: route, content, tags }); } pages.sort((a, b) => a.path.localeCompare(b.path)); -fs.writeFileSync(path.join(OUT, 'docs-pages.json'), JSON.stringify(pages, null, 2)); +fs.writeFileSync( + path.join(OUT, "docs-pages.json"), + JSON.stringify(pages, null, 2), +); console.log(`[docs-pages] wrote ${pages.length} pages to out/docs-pages.json`); diff --git a/source.config.ts b/source.config.ts index f080fc81..15b0e591 100644 --- a/source.config.ts +++ b/source.config.ts @@ -1,44 +1,38 @@ -import { defineConfig } from 'fumadocs-mdx/config'; -import { rehypeCodeDefaultOptions } from 'fumadocs-core/mdx-plugins'; -import type { ShikiTransformer } from 'shiki'; -import { remarkCooldowns } from './lib/remark/cooldowns'; -import { remarkFunctionLinks } from './lib/remark/function-links'; -import { remarkCachedImages } from './lib/remark/images'; +import { defineConfig } from "fumadocs-mdx/config"; +import { rehypeCodeDefaultOptions } from "fumadocs-core/mdx-plugins"; +import type { ShikiTransformer } from "shiki"; +import { remarkCooldowns } from "./lib/remark/cooldowns"; +import { remarkFunctionLinks } from "./lib/remark/function-links"; +import { remarkCachedImages } from "./lib/remark/images"; const transformerLineNumbers: ShikiTransformer = { - name: 'shiki-transformer-line-numbers', - pre(node) { - node.properties['data-line-numbers'] = ''; - }, + name: "shiki-transformer-line-numbers", + pre(node) { + node.properties["data-line-numbers"] = ""; + }, }; export default defineConfig({ - mdxOptions: { - // prepended so the generated cooldown headings are picked up by Fumadocs' - // own table-of-contents plugin, which runs later in the chain - remarkPlugins: (v) => [remarkCooldowns, remarkFunctionLinks, remarkCachedImages, ...v], + mdxOptions: { + remarkPlugins: (v) => [ + remarkCooldowns, + remarkFunctionLinks, + remarkCachedImages, + ...v, + ], - // The docs link to a lot of Discord CDN attachments, many of them long - // dead. Fetching each one at build time to measure it fails the build and - // matches nothing the old VuePress site did — remote images stayed plain - // tags there too. - remarkImageOptions: { - external: false, - onError: 'ignore', - }, + remarkImageOptions: { + external: false, + onError: "ignore", + }, - rehypeCodeOptions: { - ...rehypeCodeDefaultOptions, - themes: { light: 'github-light', dark: 'github-dark' }, - // ```discord blocks show raw command input, not a real language. VuePress' - // Prism silently fell back to plain text; Shiki throws instead. - langAlias: { - discord: 'text', - }, - transformers: [ - ...(rehypeCodeDefaultOptions.transformers ?? []), - transformerLineNumbers, - ], + rehypeCodeOptions: { + ...rehypeCodeDefaultOptions, + themes: { light: "github-light", dark: "github-dark" }, + transformers: [ + ...(rehypeCodeDefaultOptions.transformers ?? []), + transformerLineNumbers, + ], + }, }, - }, -}); \ No newline at end of file +}); diff --git a/styles/image-zoom.css b/styles/image-zoom.css new file mode 100644 index 00000000..23e0e96b --- /dev/null +++ b/styles/image-zoom.css @@ -0,0 +1,77 @@ +[data-rmiz] { + display: block; + position: relative; +} + +[data-rmiz-ghost] { + pointer-events: none; + position: absolute; +} + +[data-rmiz-btn-zoom], +[data-rmiz-btn-unzoom] { + display: none; +} + +[data-rmiz-content='found'] img { + cursor: zoom-in; +} + +[data-rmiz-modal][open] { + width: 100vw /* fallback */; + width: 100dvw; + + height: 100vh /* fallback */; + height: 100dvh; + + background-color: transparent; + max-width: none; + max-height: none; + margin: 0; + padding: 0; + position: fixed; + overflow: hidden; +} + +[data-rmiz-modal]:focus-visible { + outline: none; +} + +[data-rmiz-modal-overlay] { + transition: background-color 0.3s; + position: absolute; + inset: 0; +} + +[data-rmiz-modal-overlay='visible'] { + background-color: var(--color-fd-background); +} + +[data-rmiz-modal-overlay='hidden'] { + background-color: transparent; +} + +[data-rmiz-modal-content] { + width: 100%; + height: 100%; + position: relative; +} + +[data-rmiz-modal]::backdrop { + display: none; +} + +[data-rmiz-modal-img] { + cursor: zoom-out; + image-rendering: high-quality; + transform-origin: 0 0; + transition: transform 0.3s; + position: absolute; +} + +@media (prefers-reduced-motion: reduce) { + [data-rmiz-modal-overlay], + [data-rmiz-modal-img] { + transition-duration: 0.01ms !important; + } +} From f7190853e8d20f3ee053fac075296656a7ee43b0 Mon Sep 17 00:00:00 2001 From: NervN <66575893+NervN@users.noreply.github.com> Date: Mon, 3 Aug 2026 17:56:04 +0200 Subject: [PATCH 09/62] Update layout.shared.tsx --- lib/layout.shared.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx index 0bf76c1b..f730c24c 100644 --- a/lib/layout.shared.tsx +++ b/lib/layout.shared.tsx @@ -36,3 +36,4 @@ export function baseOptions(): BaseLayoutProps { ], githubUrl: `https://github.com/${gitConfig.user}/${gitConfig.repo}`, }; +} From 3ef8d476c6df0a8617d000b6779675d6c55f1c81 Mon Sep 17 00:00:00 2001 From: nervn Date: Fri, 7 Aug 2026 21:52:44 +0200 Subject: [PATCH 10/62] support for user mention/ping --- content/docs/Changelogs/1.v1.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 5f04ced9..166483ba 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -13,6 +13,7 @@ title: "v1.x (Current)" * Added a **Custom** option for Custom Bot status (Tier 4+) in **Dashboard > Premium**. * Improved the Word Trigger UI with more intuitive options such as **Starts With**. New commands use the updated system while maintaining backward compatibility. * Support for Forwarded Messages in the new Word Trigger. +* Support for User Mention/Ping in the new Word Trigger. * `$msg` now supports forward-related options such as `isforward`, `forwardmsgid`, `forwardsvid`, and `forwardchid`. * `$message` now returns the forwarded message content when the message is a forwarded message. * New trigger for User Commands (Context Menu), [learn more here](/Trigger/app_cmd_user). From fcade618715b5060d317c7820ed1002f0d277b5c Mon Sep 17 00:00:00 2001 From: nervn Date: Fri, 7 Aug 2026 22:25:30 +0200 Subject: [PATCH 11/62] Initial documentation of the new word trigger --- content/docs/Other/useful.mdx | 2 +- content/docs/Trigger/1.triggers.mdx | 4 +- content/docs/Trigger/word.mdx | 5 + content/docs/Trigger/word_new.mdx | 423 ++++++++++++++++++ .../word-new-trigger/word_new_contains.png | Bin 0 -> 101206 bytes 5 files changed, 431 insertions(+), 3 deletions(-) create mode 100644 content/docs/Trigger/word_new.mdx create mode 100644 public/images/guide/word-new-trigger/word_new_contains.png diff --git a/content/docs/Other/useful.mdx b/content/docs/Other/useful.mdx index 7c6ebb41..d10eb65a 100644 --- a/content/docs/Other/useful.mdx +++ b/content/docs/Other/useful.mdx @@ -45,7 +45,7 @@ Now that you understand the basic components, you need to choose a trigger. A tr | Trigger Type | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ | -| [Word](/Trigger/word) | Executes when a user sends a message containing a specific word or phrase. | +| [On User Message](/Trigger/word_new) | Executes when a user sends a message containing a specific word or phrase. | | [On Join/Leave](/Trigger/joinorleave) | Executes when a user joins or leaves your server. | | [On Reaction](/Trigger/reaction) | Executes when a user reacts to a message. | | [Voice](/Trigger/voicecondecon) | Executes when a user connects to or disconnects from a voice channel. | diff --git a/content/docs/Trigger/1.triggers.mdx b/content/docs/Trigger/1.triggers.mdx index 48a55965..bd4e1207 100644 --- a/content/docs/Trigger/1.triggers.mdx +++ b/content/docs/Trigger/1.triggers.mdx @@ -4,9 +4,9 @@ title: "Triggers showcase" Here's a quick preview of all available triggers: -## Word +## On User Message -[Triggers on specific words/patterns](/Trigger/word) +[Triggers on specific words/patterns](/Trigger/word_new) ![Word](https://i.imgur.com/zQtDgDM.png) ## Reaction diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index 6eeb04a5..e1ece02b 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -2,6 +2,11 @@ title: "Word Trigger" --- + + +This trigger is depreciated, consider using then new 'On User Message' trigger, [Learn more](./word_new.mdx). + + Word commands, also known as message commands are executed when the bot receives a text message. ## Basic word command diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx new file mode 100644 index 00000000..49e7e8bb --- /dev/null +++ b/content/docs/Trigger/word_new.mdx @@ -0,0 +1,423 @@ + +## title: "On User Message Trigger" + +Message triggers allow you to execute a custom command when a message matches a specific condition. + +message triggers can detect different types of messages, such as messages starting with specific text, messages containing attachments, polls, mentions, Discord system messages, and more. + +## How message triggers work + +When creating a message trigger, you can choose how the message should be matched. + +The available options are: + +| Type | Description | +| ---------------------------------- | ---------------------------------------------------------- | +| **Starts with** | Triggers when the message starts with the specified text | +| **Ends with** | Triggers when the message ends with the specified text | +| **Contains** | Triggers when the message contains the specified text | +| **Advanced (Regex)** | Uses a regular expression to match the message | +| **Contains attachment** | Triggers when the message contains an attachment | +| **Discord Pin Message** | Triggers when Discord sends a pin notification | +| **Discord Thread Created Message** | Triggers when Discord sends a thread creation notification | +| **Contains Poll** | Triggers when the message contains a poll | +| **Has User Mention/Ping** | Triggers when a user is mentioned in the message | +| **Forwarded Message** | Triggers when a message is forwarded | +| **Discord Automod Action Message** | Triggers when Discord AutoMod takes action on a message | +| **Every Message** | Triggers on every message | + + +## Starts with + +The **Starts with** option triggers when a message begins with the specified text. + +For example, if the trigger is: + +```text +!hello +``` + +The command will trigger when a message starts with `!hello`. + + + +!hello + + +Hello! + + +!hello everyone + + +Hello! + + + +However, a message where `!hello` appears later will not trigger the command. + + + +Hey !hello + + + +This is useful for traditional commands such as `!help`, `?report`, or `!hug`. + + +## Ends with + +The **Ends with** option triggers when a message ends with the specified text. + +For example, with the trigger: + +```text +good morning +``` + +The command will trigger when the message ends with `good morning`. + + + +Everyone, good morning + + +Good morning! + + +Good morning + + +Good morning! + + + +A message where the text appears in the middle will not trigger the command. + + + +Good morning everyone! + + + + +## Contains + +The **Contains** option triggers when the specified text appears anywhere in the message. + +For example, using: + +```text +banana +``` + +will trigger whenever `banana` appears in the message. + + + +I really like bananas! + + +🍌 Banana detected! + + +Does anyone have a banana? + + +🍌 Banana detected! + + + +The text does not need to be at the beginning or end of the message. + + +## Advanced (Regex) + +The **Advanced (Regex)** option allows you to use regular expressions for more advanced matching. + +Regex is useful when a normal text match is not enough. + +For example, the following expression detects a Discord user mention: + +```regex +/<@!?\d{18,}>/ +``` + +This can detect mentions such as: + + + +Hey Mido! + + +You've mentioned someone! + + + +Regex can be used to create much more advanced message matching rules. + + + +Regex, short for **regular expression**, is a way of describing patterns in text. + +It is an advanced feature and is not required for most message triggers. If you only need to detect a specific word or phrase, **Starts with**, **Ends with**, or **Contains** will usually be easier. + + + + +## Contains attachment + +The **Contains attachment** option triggers when a message contains an attachment. + +This can be useful for creating commands that automatically react to images, files, videos, or other uploaded attachments. + +For example: + + + +Check out this image! +[attachment: image.png] + + +Nice image! + + + +The message does not need to contain any particular text. + + +## Discord Pin Message + +The **Discord Pin Message** option triggers when Discord sends a system message indicating that a message was pinned. + +For example: + + + +[Discord system message: A message was pinned] + + +A message was pinned! + + + +This can be useful for automatically responding when someone pins a message. + + +## Discord Thread Created Message + +The **Discord Thread Created Message** option triggers when Discord sends a system message indicating that a thread was created. + +For example: + + + +[Discord system message: A thread was created] + + +A new thread has been created! + + + +This can be useful for automatically responding to newly created threads. + + +## Contains Poll + +The **Contains Poll** option triggers when a message contains a Discord poll. + +For example: + + + +Which game should we play? + +[Poll] +Minecraft +Fortnite +Terraria +Thanks for creating a poll! + +The command does not need to know the poll's question or answers. + + +## Has User Mention/Ping + +The **Has User Mention/Ping** option triggers when a message contains a mention of a Discord user. + +For example: + + + +Hey Mido, check this out! + + +Someone was mentioned! + + + +The mention can appear anywhere in the message. + +For example, all of these can trigger the command: + + + +Mido hello! + + +Hello Mido! + + +Can someone help Mido? + + + + +## Forwarded Message + +The **Forwarded Message** option triggers when a message contains a forwarded Discord message. + +For example: + + + +[Forwarded message] + +This is the original message. +A message was forwarded! + +This allows you to create commands that react specifically to forwarded messages without needing to inspect their text. + + +## Discord AutoMod Action Message + +The **Discord AutoMod Action Message** option triggers when Discord AutoMod takes action on a message. + +For example, when a user sends a message that violates an AutoMod rule: + + + +This message triggered AutoMod + + +AutoMod has detected a violation. + + + +The user who triggered the AutoMod action is considered the executor of the command. + +This allows you to build custom responses or logging systems around Discord AutoMod actions. + + +## Every Message + +The **Every Message** option triggers for every message received by the bot. + +It does not matter what the message contains. + +For example, a command configured with **Every Message** could automatically respond to messages: + + + +Hello everyone! + + +Have a great day! + + +Does anyone want to play? + + +Have a great day! + + + +This can be useful for automatic responses, message logging, counters, or other systems that need to process every message. + + + +An **Every Message** trigger can execute very frequently in an active server. + +If you only want the command to run in specific channels, use the **Run only in** option to restrict where the command can execute. + +You should also consider using cooldowns to prevent excessive executions. + + + + +## Parameters + +Message triggers can still use message parameters. + +For example, suppose you create a **Starts with** trigger for: + +```text +!hug +``` + +A user could send: + + + +!hug fajfaj + + + +The trigger matches `!hug`, while the remaining content can be accessed using the message functions. + +For example, `$message[2]` can be used to retrieve the first parameter after the trigger. + +This allows you to create commands such as: + +```text +!hug @user +!report @user reason +!announce message +``` + + +## Combining message conditions + +The different trigger types are designed for different kinds of message detection. + +For example: + +| Goal | Recommended type | +| -------------------------------- | ---------------------------------- | +| Message starts with `!help` | **Starts with** | +| Message ends with `thanks` | **Ends with** | +| Message contains `hello` | **Contains** | +| Detect a complex pattern | **Advanced (Regex)** | +| Detect uploaded files | **Contains attachment** | +| Detect Discord pin notifications | **Discord Pin Message** | +| Detect newly created threads | **Discord Thread Created Message** | +| Detect polls | **Contains Poll** | +| Detect user mentions | **Has User Mention/Ping** | +| Detect forwarded messages | **Forwarded Message** | +| Detect AutoMod actions | **Discord AutoMod Action Message** | +| Process every message | **Every Message** | + +Choose the simplest option that matches what you are trying to detect. Regex should generally only be used when the other matching options cannot accomplish the desired behavior. + +## Summary + +| Name | Example | Explanation | +| ---------------------------------- | ---------------- | ---------------------------------------------------------- | +| **Starts with** | `!hello` | Triggers when the message starts with the specified text | +| **Ends with** | `hello` | Triggers when the message ends with the specified text | +| **Contains** | `hello` | Triggers when the message contains the specified text | +| **Advanced (Regex)** | `/<@!?\d{18,}>/` | Uses a regular expression to match messages | +| **Contains attachment** | — | Triggers when a message contains an attachment | +| **Discord Pin Message** | — | Triggers when Discord sends a pin notification | +| **Discord Thread Created Message** | — | Triggers when Discord sends a thread creation notification | +| **Contains Poll** | — | Triggers when a message contains a poll | +| **Has User Mention/Ping** | — | Triggers when a message mentions a user | +| **Forwarded Message** | — | Triggers when a message contains a forwarded message | +| **Discord AutoMod Action Message** | — | Triggers when Discord AutoMod takes action | +| **Every Message** | — | Triggers for every message | + + + +For normal text matching, prefer **Starts with**, **Ends with**, or **Contains**. Use **Advanced (Regex)** when you need more complex patterns, and use the specialized message types when you want to detect Discord-specific message features. + + diff --git a/public/images/guide/word-new-trigger/word_new_contains.png b/public/images/guide/word-new-trigger/word_new_contains.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d784912400fb1355b425196078c3cb9bb8d65 GIT binary patch literal 101206 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�Ceh(-cGW%B>nc$ z1vhrB&Ow~Er%igD))F%9=;kCzU83>GMWxiUy=^UD13b)zAB=;~ks-Q--F1sIsaF&0 zO`CxelnqVW9NUvv==p(fb(${~B8!(+d_ZcK_dp(K71{Y&pEKYj6;;dD|FOw@g?LZU z8CTmAb$g&l$8>9qK$h%5i1g_orw*OIV7JJjS65emC6Zu__?9(B%kkr}fB6c6-dh*b zeRSKM^W=5ok+RgWRL=1E=X1mfvbKY^6tcnlazN6I$C>-e(+Zz#Do4P9;nOH=GRfyr zU?OAxqW6AG6Ij=ljGm>h2_aq> zj!n%pKGHB-V#+p!B4=fcoZs?UG(XL0RCE?30dzD+0Y$vB_Fdh(L~>61#1zjBo9>Ns z7p3452;|b8b*|>whg8!r+W~7m^D%}%8d&H&M#PnYVQ8wTUdQ!7;*75y!TEfCfRh+I z#-M+A#zpWnF{o>M{uBZR&wQ_rKJx7IJ0j5TuEVfBn|QhUD&=DMOc6YJgREewNS}WH z;!*4v{1r!m&u1>^T;S>0wfQj3sMtwLt?^m-RnDb(ttTHjQMt~fiR;o`^kknDuGzbv znSQ#u-OUHx)(I9s)R_5o;xqI5B9^bo6Y&#!A43O2C4T=k#Q4(HlGie$HWj*5rQOoZ z{IlIXbB}qkEa!u=#XZ}^Fy<}~nFxoXyI+9mU_2SUT$az?m$V^BabI!;2f<1R+sjy91Gnrz-O30%|3SZN}l3uKg%(iR;z5854jBD;gaB-OD_ zyM&9pLvCi3?tqtAYFHvoPOM!KeY+lOeq1@0%W+jVpFJI7ekZbtHVDv(+l*G=mdWt2wDPj&sDjw3@3VX- zDb$s;E+R+|`IxYkF+&_B0ynW@2I-0ZS1rPDW2m+ZNJm~@a z8OhJpDNYGG#H?3vK2K_{((*ihn$(4yJ{(KL=bleK5*Xl@@VX$=r0Lr#QSPHbSEaTS zGkH&^57*9#Fqsn`KZ+`eM9f_X64vgSYAvM~z(eb2Vys4^jdl1Vysm{o$)LOgw&J^z zYuTx2CmY-Da-;qdx!iFZ$@RWGp{0Z!=y{~ie9`dX{q%rYa;@9lFo2En9)m*1BWZsA zzV7(h*X!0ahPi4chWn{RReiU?rqg>nX2MLU0{ZakC_Jw15lXCqMmpjrsXGyH+{#vB zr0b#5Hc0dgK_5pz+s*D}+U}-SCbmD^reA3~BY_z zA%(4|XQAF!70zkxQsm4W0wMVE#@fX;M7!e$l`+W|O5`e|ujQcV@n@qHte36$F7<;o zmn_J9tZ1D}-YYmKucReOW1Rvc;vEuHp;YWYpv@>md9pyk5tOQFSJCzX=&BzohaFEZ z6#9Z#zO$}HcX?#bT~OQ`eE<$aMZghJe|CvUVTG>|aX>I* zu(Pbn6N0QfLw%w+|GCn9Dx=+?n#4!oHoU*-gt6(yEb?ZOif+2;!F>m^u#KjhJ&G{d(YYCQvKs`Y5967t5oOoddc%NygdLO z`Sn}>pxo~TQcMVMDE*9NI9u635W^X%#Xz{%(6!3>kBeht6B(H=8^~#vqeNtOz&YNj zmMiIVCK2+_G1FlCMfYLZ%*=r3J?8W7hm?K6I1>*dB~y6(xgJ^>Lj*}>KQOb;Z~;l8w3)4@WJUDCRvR(j$} z(HG^q*jOw&8@YI|H|??JR=6URk|2Ko6cC!AZ+wv3wG=S~_$5@Q%K6<@%1HH=w65y8 z;ar|_2l&cM)4Xk3Z;k_Ywq=o0++Q3Yo7%0?5QV)u;i@#;nt#rI7^aziJP=YNenCDK zz>uqR$@lgMr(<`e+59M3d|>fHL0*4HAkh#TvMDB`eYFeMu;B$2=yGU94SBu~c(S#O z&Y1HoH8=@9ZoC_X$%7oMxR2@)-hs{+7DnBD!h~+zgbKLk+n~ISC@#t_-FfB_h4|c7 zi*1Qbd_~H*!{r{17jn;gk$VX4o!*1!1udj1cf1_NPu`{u<9Eh)$U+)<49U<_69mua zjZ~IxHv@ZN{E967y8tY=$D`%Dht?VQs=kfv`t#;v2vVlV{=+E2C4g*r`iCv%t-MbH zvS-xJWK5;;Rc8l9FM=1q5y*9FXWyAXFng%2v#eGlOFYeG+xtza)D#=~MmG&eb4?%&08JiOd#d1EI;T8&KAP#Nu@B&}$uyZ)kUgD0C ztzKRyqBUQmX}vENOrrF%sAfWyB}uw#zwc(0&ALS4NfD`nVB4K~yA?+T=i|Y` z(s)ZfWWz@8VUAkUS9=6a!L#Kq{)bhwZ3(DM?X6~zr3Lfd?)he!^`J4O$TH9*sp0kqO|R>A_%~IQ^4w-ImJNi zLIvMQ=2zl;a|U%&Z)!66S=odgK}j5VfXht-_lR<%(uf-)rn4+~G7BK7`ba8(A8zqu zesrO(E{&n=`*}VGw=#b|XXKVUa*+jLdeXp^me8etH!ovqE-sbx@2sWnPBuL2y4=%H z3iDPcT%t#`n;SCs-Bh>vP5q7H!5I z@>-gU^Rynb36oK1kW~ZXjL(E*TPMF7^xn3!dYDvtur8SLb90XA@I`oMhDF2bL^OdH zJ5T#BW9z4qb+wFw1Cz0hb|4pSJ<6EwB~gS6H}PCH3+kxV@2qms1Obq?4wGZ~`OBt- zI#KOpx#<60ym*7ocMij{3s3!6Z4gpMu3b4XQe*mvnD_e+Ddv3Wv7YMkdZ|tlt z`>towAdsc>Koc(nlId8>5{ba274OvKIF@`ObVLgXsq59MEByGbEDC5HvuFv~3s|h~ z!s_ab)lHUYuG*#U@B)RXZ6Iyv_N}a6HvduS882h)^<6RCC;z=M{ktyES#pCrCHp{ zlI4R8J?>GK>c2Kwh0wBD_tbw4+-&3jBHL{$Y_i$kB}=`C>=)(3PW_StQVWR`Q}(mF zl$;C3ge@?%R${W^+iTvs0Ottbon$Ia0|tdlE;iEI+M?O_s}B^Wm+{vjshh%H;T{A$ft9c~mE&1~TU55uFeuaUmsn3xzOu z=~ethF5M~1k{%*thIKRSf2H8fhj1|#1pHuoWDQlp{meQ1HEhBxHzZov=-w~V<@R^) z#o7x|;yqAA)EjFb6N*Aj$`F;sZ_70r*-^ILlO3q0>VXeaI1%KC9xU23P2aBZ=#CJ$ zFoi>U^_KP0e&y$fYtC9k-8@8q6xAB?rAFsEx4P6Z(_+1u z9pS4o-@IIR8ktTsHjMI8 zfp!pTq81tsnxvGK8YxNFta@W- z&7tE>u3_u)Qb@ z4)eth23(9J26gp3M(w-?)Q|L|BHx~F4V)+woIf?b`*?4YAlKo`2gZ{JZ8r)TpUkbU z^R&DS&lpW4Pn2ef;4N^HFO~OU!eMP#fnBD2TKs8NV6B?%c` zERW+(K2i~d&|*vca+^P0ue+J+K{b6wo{fOBZzm$=NOAB7D~>f9N5oqe!Z|CgcpwO? zcMSdK!j}TG-*fqA78QAEW7ppb6-ErFEwn$)m%d~HjGHYb3y4{h*qL`e`b}GR%JoxJ zK%HJIAuNw%&g+&logv+>1EDv_;X=wPW2|Dm0|X}i0-gj=AVizE-BG+e6GT3lL*aIL z7gdADVmaX9Qp}Eaz!gd%Nh*Ak{IYsakaAw4nj~Zp^KnN720L-*a>-?ukI4f?^Um($ zzixKE5rgJet`2nhkeF|-1)eORS&mw9!d;pXN9GbzZ?nCZxo<3=FUwuCMh+PCCyL4i zIE$~YB>BjJr@Lu1l7~JTBI8ulo*8H?pjI%ZG&18ec-xd>&O_h6o@C{cY}r5;TMTH; zc%Fr_(j@ZzQR;s*`$KWygtua%{u&Z{v4sv>Igi{#8;mZnTQ3FEB^)+Q5kYG8K5wEm z@fg4_ZZw)!f;ZhlD=lDSv7(Z!W4l+b<zs#f%_%O+yu)oLDCm0E8Mxnk8L{93i2k> zHa3}wa!%Ik%nL9MZf4Y;}<#lwmfiN zZYOu1nSO!wt>#dQb2*8-I<5+&^$i~3`Q+t9;0&WJP3kXa?h(f9xEI-I_*k*sr2j
_3Q1D|v1S*_9N#M^<} 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 Date: Sat, 8 Aug 2026 18:44:26 +0200 Subject: [PATCH 12/62] fix word_new page --- content/docs/Trigger/word_new.mdx | 130 +++++++++++++++++++++++------- 1 file changed, 100 insertions(+), 30 deletions(-) diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index 49e7e8bb..99e69507 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -1,10 +1,14 @@ - -## title: "On User Message Trigger" +--- +title: "On User Message Trigger" +--- Message triggers allow you to execute a custom command when a message matches a specific condition. message triggers can detect different types of messages, such as messages starting with specific text, messages containing attachments, polls, mentions, Discord system messages, and more. +## Example +![](/images/guide/word-new-trigger/word_new_contains.png) + ## How message triggers work When creating a message trigger, you can choose how the message should be matched. @@ -33,10 +37,15 @@ The **Starts with** option triggers when a message begins with the specified tex For example, if the trigger is: -```text +```php !hello ``` +and if the response code is +```php +Hello $username! +``` + The command will trigger when a message starts with `!hello`. @@ -44,13 +53,13 @@ The command will trigger when a message starts with `!hello`. !hello -Hello! +Hello Member! !hello everyone -Hello! +Hello Member! @@ -71,10 +80,15 @@ The **Ends with** option triggers when a message ends with the specified text. For example, with the trigger: -```text +```php good morning ``` +and if the response code is +```php +Good morning, $username! +``` + The command will trigger when the message ends with `good morning`. @@ -82,13 +96,13 @@ The command will trigger when the message ends with `good morning`. Everyone, good morning -Good morning! +Good morning, Member! Good morning -Good morning! +Good morning, Member! @@ -107,10 +121,15 @@ The **Contains** option triggers when the specified text appears anywhere in the For example, using: -```text +```php banana ``` +and if the response code is +```php +🍌 Banana detected! +``` + will trigger whenever `banana` appears in the message. @@ -143,6 +162,11 @@ For example, the following expression detects a Discord user mention: /<@!?\d{18,}>/ ``` +and if the response code is +```php +You have mentioned $username[$mentioned]! +``` + This can detect mentions such as: @@ -150,7 +174,7 @@ This can detect mentions such as: Hey Mido! -You've mentioned someone! +You have mentioned Mido! @@ -235,8 +259,12 @@ Which game should we play? [Poll] Minecraft Fortnite -Terraria -Thanks for creating a poll! +Terraria + + +Thanks for creating a poll! + + The command does not need to know the poll's question or answers. @@ -283,8 +311,12 @@ For example: [Forwarded message] -This is the original message. -A message was forwarded! +This is the original message. + + +A message was forwarded! + + This allows you to create commands that react specifically to forwarded messages without needing to inspect their text. @@ -347,34 +379,72 @@ You should also consider using cooldowns to prevent excessive executions. ## Parameters -Message triggers can still use message parameters. +Message parameters are separated by spaces and can be accessed using the `$message[]` function. -For example, suppose you create a **Starts with** trigger for: +For example, if a user sends: -```text -!hug +```php +!hug @user ``` -A user could send: +The message is split into parameters: - - -!hug fajfaj - - +* `$message[1]` → `!hug` +* `$message[2]` → `@user` + +Each parameter is assigned a number based on its position in the message: + +```php +!hug hello world + │ │ │ + │ │ └── $message[3] + │ └──────── $message[2] + └───────────── $message[1] +``` -The trigger matches `!hug`, while the remaining content can be accessed using the message functions. +You can also use `+` to get a parameter **and everything after it**. -For example, `$message[2]` can be used to retrieve the first parameter after the trigger. +For example: + +```php +!announce Hello everyone, welcome! +``` -This allows you to create commands such as: +* `$message[1]` → `!announce` +* `$message[2]` → `Hello` +* `$message[2+]` → `Hello everyone, welcome!` +* `$message[3+]` → `everyone, welcome!` -```text +This is useful when you want to accept a message or sentence as a single parameter. + +For example: + +```php !hug @user -!report @user reason -!announce message +!report @user spam in the chat +!announce Hello everyone, welcome to the server! ``` +For `!report @user spam in the chat`, you could use: + +```php +$message[2] → @user +$message[3+] → spam in the chat +``` + +In short: + +```php +$message[1] → first word +$message[2] → second word +$message[3] → third word +$message[n] → nth word + +$message[2+] → second word + everything after it +$message[3+] → third word + everything after it +``` + + ## Combining message conditions From 18a47274e4612be90f284b467ab71287a518130f Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 18:44:38 +0200 Subject: [PATCH 13/62] add visual examples for app user/message trigger --- content/docs/Trigger/app_cmd_message.mdx | 4 ++++ content/docs/Trigger/app_cmd_user.mdx | 2 ++ docker-compose.yml | 3 +++ .../guide/app-msg-cmd/app_user_cmd_example.png | Bin 0 -> 209163 bytes .../guide/app-user-cmd/app_cmd_example.png | Bin 0 -> 173919 bytes 5 files changed, 9 insertions(+) create mode 100644 public/images/guide/app-msg-cmd/app_user_cmd_example.png create mode 100644 public/images/guide/app-user-cmd/app_cmd_example.png diff --git a/content/docs/Trigger/app_cmd_message.mdx b/content/docs/Trigger/app_cmd_message.mdx index 3c717a4f..8b5d1733 100644 --- a/content/docs/Trigger/app_cmd_message.mdx +++ b/content/docs/Trigger/app_cmd_message.mdx @@ -28,6 +28,7 @@ The command will appear as **Report Message** in the message's context menu. ## Example + Create a new custom command and set its **Trigger Type** to **On Message Command (Context Menu)**. Set the trigger to: @@ -44,8 +45,11 @@ For example: $interactionReply[Message reported successfully!] ``` +![](/images/guide/app-msg-cmd/app_user_cmd_example.png) + The selected message can be accessed using `$eventTargetID` or `$messageID`. + You can also use `$msg` to get information about the selected message, such as its author or content. For example: diff --git a/content/docs/Trigger/app_cmd_user.mdx b/content/docs/Trigger/app_cmd_user.mdx index 92e5986e..87630023 100644 --- a/content/docs/Trigger/app_cmd_user.mdx +++ b/content/docs/Trigger/app_cmd_user.mdx @@ -14,6 +14,8 @@ For example, if `@Mido` right-clicks `@Zero` and selects your custom command: * `$eventTargetID` → User ID of Zero, the selected target user * `$commandName` → The name of the context menu command +![](/images/guide/app-user-cmd/app_cmd_example.png) + ## Syntax The trigger value is the **name of the context menu command**. diff --git a/docker-compose.yml b/docker-compose.yml index d98336e7..35e3ac4a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,9 @@ services: volumes: - .:/app - /app/node_modules + - /app/.next ports: - 8080:8080 command: pnpm dev + environment: + - NODE_ENV=development diff --git a/public/images/guide/app-msg-cmd/app_user_cmd_example.png b/public/images/guide/app-msg-cmd/app_user_cmd_example.png new file mode 100644 index 0000000000000000000000000000000000000000..12af4defd3a29d35b97de558801b41e8c2431db3 GIT binary patch literal 209163 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 Tvt8KbuTYlDt@<2T>e|3w~{nMCBo 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%0Di6U}v7rU#0 z1$!??j&Sq73Plf~S@0xGuJp%KY}w4)+9rue=1v@$!uM47D0jagZ#7%h)V@Xo_BHEZ^_@Kc`Fz9!VJv z2N%Y7(>H=+t(@}4tHCIQj3m8g0%giW=N3%0?M(y)G|bOQ2MQLxjc^Au74F2FFFK4^ zJ`;xfG@(s^S@US?H0ze>}K`j=lQZMTY#Fxq~`cy&_Xj&yIy}}%E z$i4|XWcbkkxkJ^rEKOcbmm4Mj^z^e+imJ$QeYsZ?mYhN=7Dbn zEdzTWZ2I7drzVToSaeR93Kg#uFIyp~qtZP)N`);;PJV0#HpL}D*XcSlFFr1%_;!1) zf{{VSdh$@p-D5a2w)iL5FWcgv$n04xyc95lj5MNojXbFX@bOtZ#8}n3hg!c7lYPs0+_?eF=h3s*&1BsYNoFgk)3MFJ!Ww?0Z>ozpXKy#~K zAPEZ!M_+1(NQ)}k|HkxB_zc9Mgg5_cZQ&g{lvgy34qF(d{MYahrCFp-;*jX z*3Y<%FZcczrH;$%FzlAd>HHoP${G;J#SNi-ot7h7Aij-8?&-#K8~OCaYa=W{*Ne^U z0#-?-#By^Kd?hYG)a@)hR^ttv55&ZxB=Q&ik?sKprHwPUK&kzNVXyWpU#%sQHTZWaB7CB0FFX3qNfKkb_3WE zn=mdD+~>(|f8-|;)2n^#%qCi1)Yi~yaaoYFHEOjXvNQhTun-T*vD4NIr1h1V-n`zA zeXLG~pgQQ_nKHYNb*=uFoX~j7i=)Y#MkAF<<*CN!8xn87aGANi!KoTZbqgosTX8yc zx@mG=3dA#fte@EIn5}WD$prNZ6o&I|t2|@p$Fj_5xF!rUJ-AT_;IL9o$qG$`;GB^} z33*#%JQG|o)-N!FZ^!kIqS@DeP8@Pn(kOi&L28t0({ra&Vu{fF#f2qM$Rpnu@q27> zp3F-Q3-OM$6D(!Aj|Xi1`MnoKEZkT!HKo+Q+}(XK__E}GSy&P$@Xoh(wQ9MRLLKzG zFHuj1Zqs$hN+_T8+kYftRyhf@oZn-HpyTJFLK`=TxV)d(yC1jgwCL=>t)idIyP}#A z*dv6o9wi=9Oh-gfOrjbzgSEfOlkc zkeZmMzPG<-;pZ^&kDn!ccQ~7_AHESbP)yW_#%SWmpTs1pK5UxfZzR4NzY3;p>EdEe zAM;oC8c0z}7zmy>25=iSZ3(s@AJJ92Pj{o+&n7a-0#o;**EI_r_DP&Jkbg|6P6@ z6_li+VYD&iG27>8Y@mqoqGii_FTtnz3fMoaDUWw-kNUH?l|0)72^y9TfX%n1 zpGPrPW|s|U%;iQp;iiH;Q~)NkBN}z|&k%x!&wGApW8?6WmoMou5*NSb3O22G+#lP> zoWkp4J@o||iaVy}lFHl~pVpY2A*UW1AekNZU5E!Ju1kV14|DeJmuK@=UZoi{$Gbs6 z{BOsi+UxCfKCPZWNWW1Uz6_0_}Iq+VxC5$DO_N`(a0M!u6uDQP7X)iV48JIF&otRzEWa!mZvkMVy{!Xk}y*i;d;jvv?k33gKORI}$O`u`f ztC4epko7!&bs%4u+8{N#^gew$6Lp>igI-~)He-|Zs?XYqR+H6UwkNUvT1$u}_G1iJ z0E6#~fjQuK#Wde8P{>k)0UJDpteXCQt>+-l zB#9RW7aCIU_9U78DrS@E8y`XJ=N>&UKwRmdQO@2v@Di^iZWu=9(-$_Et~{ZnqfFpS zDXj@Qq{t0t;D5`=eK)4tTP-eo-wIn#s&P>M53;Neyrpu}1qz$vcjZ8R8JUXrgUz$( znt7M?(1iI4o)vGEK7jRFdH!&$Tj3NSo6IH`R`7eGpk~qx7%ldppO#=oDSdVkKq)Kf zo@fI3CKbj`6+inRABb+Ao&+h7aRa1j{>pg+`D0i7zk({!H$R->P2I|oSct+e_eGvk z6Vrn9Gkr!@2AX;3EP{{HHIHU}B{~9PF$5VbCXkE3k2Xx3*;}Z{-HKUGC9BpENJpx| zJ-C^sH=K>ao=TBBCG9QTkP8aQg@u8{Y*_l~#1m&)B_YX1X$Ajg^iWSNWRs!3CpAw_ zaiZplyRs>C$?jVawD2H*u=vy0ZaGWHp~cIt^A}sp#M4ifUihV_9b@WujHrsiBL16w zQ5c2Jfa0KA7X5MVPgsp|*!CN=AJ~`4)K^yca#;BO~o1?}$zh!$-{lg0y@ucs8 zfaq_oshf>_vBu;Ax5L&|W+D8s1Z2mUPI0DFm>^gTZaZ?{NT#i_3_;TvvY7~EIww3B zoqIB0fz7DMr9rRz`{qhMLb)kVnyZy*qR4hbOag7cDk4{Jjx>y!oU1n`0x5?Op!=;T zzhgjxYmIO4;PUn3ZJR4TP~v<)Nxj?5Qx`_S_6be#PIJneOOC8pC~=E7<#Io=V%hrv z`X$ziyi);*&}O`6gI^Ftd>T>QU?)p|&(!`ZqIjZPwc7zH+%E$vjzNPFXwZHoJ@7d zj_*V>CAb{Zskk{10l2Ay4Z*}_^ZU`IUFZB!y;J{EYNcNnm1DA#dYA5 zUUX`*KYVd>bI+e29C;8GcBWx>a_2=@m0~sa(6M3vkwh-L|K3UZHCz4W@f$@bXbPpH z4)hoTsO-H9MM5q-Xt{8UZ*Dy+I6L$!8Vm4x_97)&zh%tO7B@E8-NC?!bo--IJ(|(a zH0FYyLS-&^%t8$wf*S>(u5a9W?3b?aBunt|NQ%}H+|454bXZyl$9Q-R@l2=R?IPGP z3qkg0eD<540*y{4x^@|@|IznYyZKzBTbppD-Z?3Oi@p?bMY0y;eZ@q-f-l=fJm~kV zyESu3(qg}6#VV(_^?uO3_GM=v>*e~2W;}|q`05Z*u5F@!HzV7`z8VIMZJ=XsiRZxv zlcyB9Rb62NgI>g#wb<+&ok$O*E$(YaN z-yz1FoCho>zjnF1>m`weD+dYob0xiY?bQ6F=}@Dlp-EnguRis0*sD>WT~I}=c~Jz% zK`4au22r33i>NA~pMAx)+y&U_T4BF=sp}N~Aj4qqc!q`gez&Va?kX1p4YY@`XsPIS z(Kyvd%(pv{xmJ4%j!V%5*2MSdhGo)za13K}DM^1i$7cUACx?<(@Hb`%-b6gc&gTls zh#&9#i|mlSUwm#)KMe+3kLY`_pfu1gb<=NcvX2Qs2#=V*7q#zt){@aq4~3Eux$pn^ zlS+*+p-zMQ`SdTk{rg8}i9MF!r9~P$-(2^rV5}m!L|MLWH1RUePtgxch{zB>b&_As zY@^JlL6STrox0{&#O8DKD%b{pEMbw(xgu9oSid01di|{^m+elqiFPPGtyqSwrmbx$ zvx?JN`FM-gM0F(0n-je`Qj?sy6YvHwDBBEPu-e+m;k28ECVb0&Ut^8Q?O5BH%A6Hd z%7(A$4`A2fzIGU?`UG>aGAbGKo&u}crO5Pl2$0YNp&vB=syAp>xP*1Jk9cEf?%>H_ z$0E&2((4p9e`wX_>p+$D87l|pO@42(l<4y>(dc+ahYLx4UkI=YpBtH#x7&@gv^SI@ zGW$Z@+B!57!`poMwyrf=b;8`xojG;~grDj6g+tDiL|a<_M*Jse`6%(39pp}oq(eRX zP0Yu}hN@sM#rVq{6~A4l{?q!@%?|OV@)4WvURbQ{<6T~z*ZU&w0MGU1Cxx}y9-UZ4 zn`&K)4bSprl1=U)SbEPLM8WSD1h7Iz_aQHCgM^G{tA2_FXkX^c&%5cv&}u-bLGE3N z;~Ly)xW^CM!*vHYfA&p=laSZ#0~_xZzqvL%f5o>b${=&p zyua3=2RwjobGpoqnJLieRrHfh zPRbg2e~{2z)?@`)O6XmY9yHh0+sB|zR(ZK?s%@G|ArhKSs^5INc@=JZo-$QhWc%F zFCt?4q;F72fc$nwqNEk}YcS@!gMRtN z8L+ak-0XTHn^MW))v@U)CsiA3G$_76gX-wTwq@K;i( zTIUnl2VUH1qZwXZUh1E(br;scEpUTL0;t9oA~)2!s8nX#o~trDI8kwBz78#hedY#E zEr%Y}-A?ENt6U{t#F*cFc#)w2t+e0Mf!%uE_Y=A@KR|aau2(yJ?LWS{$Xv74^590c z{u~RwE%c6f5`%l*8K#DM9os93lQxuT9VRHm3IWEn`Rp}MQ3_C1Nw}Y9c&mLYp%v$m zEmWCe{5<-8I8%i`3&z0r^m7!n*)w676-&Ew+^(OZI-pO3Jo;*zKY%YHSNjJE-8N*= zD2{Q#y8S1Sm#NI(Qin2h4K^)KHw&L;|GoW0w$UfW4L7n}pLO)&PG2Hdg~zA>>9o-L zXzj2v0)z?_p$wvT{Vx@!7`GS8{y)97fSs~f{?IXkAFX7{ioI3-$3s8l|0ez%ZYmFw z)0W6_i6^VF35fxD$&OIW%_E1eGFG+Ck-Rx(QVz514DkvV+{Iy%$;P>q>$3R%e+-X-HM^MR<( zpBOPj#h4#kFWlRG`8T~^Fk-qpazsH@ZcYo>$LhQ+)}Js8Vly&A++|GQ5e`R1ztK3V z{-GCq+veGbRv_nl@#sq5I51XslIhSTYG1Eb5D#}~I#z1aO(_3b)zyE-8=2!P`U0)B z?Lb{Brk;od{z&Xt`ByH=L`j7mjY=*-VKn(Almn%0S%TRJj+{lD(fpDA|0QMP>2R+* z|F@#7i~V0&xEJ{x0{@0wn8f37+25?-|MA3|>FtuWatIMPU@8P)A6u1Ljsm_*h5bbLEVNKy zDFg*@nVQAPfP6`gxO@CZ6zlZsC4>X2wK?BZbv>u#`%)E`d@=14&J*Y5ynQ&nT@~1r z{8@XSjqtjCB$Mc_$C$EMS5A0YgA&n#Q%X#hxF6Y2=DJxD*dZd$xI#_dD!#?Lp-kAw z65CLHxcv5G{wKuG0Neec-$8OMI|2(yA0TWIh0e+pm3#y}%wY^ZM%ys(``aOnFmY=Y zsL2wxf)4M#eHWr^EMt5d%3Cul(sQS{A79jGXi+fB>A2zfpb5sUwVvwP%f zpz4e#M(CtKfXXK|gv9=`XIQhi(Rsh&c@eHtM@k+Z>gOlLltmf75=dos4=0J3j##6?5 zJ42OSgDVu#2DekbYne`Dev`JZ^Cqd$E}Td&hSAE-F>ZmW%uNDBYLfL z(++ZT!)>e^RWfTD^c+;+l@Q3@=%S)AT`LQFEx%7lnPeG?v>X%z-7i4Mpwm0q$HOAT zj@#edHf=v>`xTF5RE#0iB6J;J31>RZ>)GS0`cvL@IYZ7pwQN;dS3C#(W|VH9cA8 zbTbhrMES@jZ_LPz%O4V=C|e2|VH5mR97|*gD*FWV_UO?!BfRw{pX)|=0mhDKB^F{7 z#=ZGE5&l=?Sbw@wmuaHa3}1 zHh-qrpVeMMpUCn2R#XHJnZx?pl2A2bQCL(I*R(o7QyZwG6)z<(OVgcCZK8+vfm&*e zio(*C9Gn$S_aWSzvQ*-8U0v%fp*ywGUBptm{VM^Jy+Hy%wBJ+FyX}66`+7IQ;vH@8 z51^>DvU1?aDL;{}gqSS)x4r4M6K`3i)7*HEGfYy-z@PF-Xi|C)e;B<`xKkcZ?Roda zlmThsf0zP)N;OO=Su7Qbnm z-Ph6hiZk8+$^F8UANz%`rt1o;!m-k+a|=nqdGMwWwV*hXBA~JFQ*aKSpJq`jjO6N4 z9a&m_RmO;qIpJa!!I;?zAdJ`t>p=%cJZWWpU<=>4=t4rs72BxInk?BRFtOU`+kIC^ zMjBs6*tcr^ZNOB*!wU`l(jN7X!(aR^mM}NOIYZeKR`nA1CG~VPp)WjM*ZoOeZ-*Ic zXFf?e+W>?kp`Xvhod{hT{ktYSDD*`bpFT#Z-;31$aFxG_A|K@nnb&+iuc-56(;BVW zizk@UzuC1m&l9xryg&v_Qq_-Hy7Vzlyr2&oquI|1ag0nR5`Q1yYTX`-w^3r z)sc3;g7boY2IdX#6jFB3&XbE(p$ZTWpW}&xzv%F8k571eHF)G(xfGrP^FlOHn{uiQ z-!4^V(`F0q=-B}C^)x%c+>>`PgBA#5Qtz4>IrRS3Tn&x6DzP$Kart_aIo$EfVnzdq z8sGAZ0OXM2@V#5fTbMM8~q_NrZ=Bxp8A{A|R&TU<% zFPFk_$XA1QM#m{@nkF>J3&NNiMt(2Xd{kjPIP(-Teb^d)Ja4w>a23Ul$o7aOap53V zVY6ja)PARoc%ixM?P)<%GOuE=Sb|qksa+SZ@khNwl>cd$93@< zIbp+tfMWRb=fan*l5rt9*N-1|9aQX{ea5D1C|@}Simx+mP2)!x6DYT^v#Y!UwOyRkI16y z=QV4{<(O1QdjCkC7rw^80plVI-t_7`i|-SP>`pp0M+gxsma z(A-qOt55ABephm`0pVYf^%v;~GgoLbbounfgq?+(yw6bVULQEB_En3HH<)NYSLx)4 zh>BXwF_z4)30dOPq7;>-|154ye_$`Avs|cD&zr_}epoWFhI-3lg59NlPBl5%m@=Hd zV??rUDK2AE`tF;X6}+#yif&09Eb=k779b4Y8#(-23Z_GIHf@p^(k-} z2-NbY98mJEn${1K;5|4K>T4mVE~YRsDZ*4CdjnCpckk3$3}1H*clQks$E>$MWHAF7S3oTsU+M<%jV3JBfed&b z+>H9{+kP67ok?s;RbC&WiRI15k{0jVxv6U{dbjK ziy3SgRdaJx`5E)=ZU?m;My6p=U>Tl45iC2=`njU&5MwxwT+wF>YuWg>h{SF0qPc zaeYi@qlhe~OB_{^=`>_{Y~!~OZJpZ?T2lByJz4btPPbTls#z7V(x6wP$3bpm3|K}2 z?>+y{Tv>g=+w@za6+^X4ZPCXkHu&59)5g((Z1+RemHLFF*{f@it>o*TZd?EsdQn}35b|nR_^iKDJ zTT3;x#Cjzh64@D&1ZLTrjFelw1hcMXF@c(lbG@+y&ep>HH%*Rt)r8aTcg2YL@Q@Jr zw(1?u4g`;4)>%GZ7*P11A9d)0g5^B{%BGPlCHS=do^y5LM}`Dr zGcwcwfdUYiPHtU`AQ__+xB!UGI_1g6vldy|+K^y>){G|84BX;xN|<~hvsA#ZsvmQY zCYIPIs`Sh9#!He$Mvn*NZOUqVPreJ+OsK9t15KN^kB-8|to7T9e*A@$8QvoqIRAg{ z_V0^Pk&AYTwf>&g-(CED;1^(j%%y^uhX))mju*1Jvzfb~@*IX27kI)Nr~#00-$ai3 z%1VDo-o(H4R_XJOb^!hMss~WwHQ$()`L^FTa&RhO6%`fNYzm6a{QfQ|1~5rN|KA%V zdwizyjT3$U&l|-o)stHCMk^%Woew<_W!yP*m6f_Yh;@lPc9y%?MpaRZ>mIC8di+gq zM4CZc<735kz1W|*82wGr{L7O*nM?+*60UIU%qw4?B z7l{7;p=bdhwLqFF5dv;z67E2o$`;0HWZMHM1{{`CgY2gJL@YG()S+#jzKTG~Y58(vm)xQw`Kk`IgD!jZp5D^gi`um|v8q(L>UEe1- zJ|q64HVi0@#UzL1S;f=Je-xagXSXtp^JM(dK-)p|L@)4Pmjay9v-ZA)Bhh= zUjfus+qB)HEn3{6Kyi1M0xiXhySuwvi#x>~3Pp;$ySqzpcb7nrK>oDPYu|qllgSy* zW4Gm#QhMsV(P0M|3~`jfi-?ESF6R=1d7u z_$ByOAC9mmAt6c%A}%asqK5ng0c4-my(tn(Mha&h60k?cZ~zmr;2w-~W<~?O9nV>IT8W2I33*@Y3Y?uy>B% zC&^`SOHKXVlNd_EU3w4oK=kk5#F-5UQx=AZa z$k`@~&o{qIK*`U*1C4t(^^WFUX4yL!~%4SPagHdwY__gj}o>YA!wRlLTn5d{|WJ+vU*iYw!3Cu5lG$Cv! zD)va@o8>xs*{;Lw)Ewtj9lP?5cEQ++Z0)f#)X)D_l0kkc@V}$~zxqQSgWyHf)60pJ z;BP)b*x$twvRU~$olJZJKdjn`yH-hhx~Jz&^&B(iT*_$nW9kNOrNMK0=lydnBL3Qh zTB{h5c+PVIj=laQ)uiue0GGAq?eY?$3t^Q+^nSq-L+aCj#xbt#>zr!)YP0SeFlfa5 z-tR?ep(1;9x9Ib%+hoIM{qB4&k;_Zd#;fVF{xbb1*haV7Z~HPAGTBBmnV-ruTT?}- zh5Ca?h3m6O1;hAG+}1PMGm=h>G`S!GdaZ?IuW$KLJlq6RBs){PuenAwdCzbvPRPCi zX?Xc>Pv=iADu0=?yv_e3{XR!(5jw>qX{OJ`D~U$X9Ebdi(H>Zk0l2>GE#l|{q3^SYaUe3NwO7UK zl2m**+zL9X8lAHAp0L$f@#Rt0drl6jc{9;^Ae`;bA1%kDKs8&|JaNT$3ShyRSJfG426bC9^46~{wxZZ#58QwyYyC)fgiOoAA@=05$={`H8Om*6TGSf z1YioftXyYHmDykW?ez_SdXH+PenPVy^~}0P$9@X(@(JId8&x`8*9U>Mld;Bve1z`K z(}wR;N6_EzCV5`cFA&5k@<~tcHME^#&4d>VCBj2ZCI-qh;Bsa}>ALNjoHdG7q02P> zu9qY#%gP9!3&8odyO-c*F&tPYM^)Qm);=&n=5gGgX0w(sXJ0G@ZVZXtyi#}>tpb9Y z9=487ok&Bn9H2>uQ4T43Sne@%&3)6%1t!eVfHST&MpZuK4ZncNWZZdhXMuqGi~AeC zgo@3*95=&P*4y-lmrtcpBw&6SyuRz}pttxTnzb+WNkCE%9StaQ0J9ajlY`k<#{&k7 z#Vd-%ouEs}MAHN#BcN@h#eO$jyZ`Ryx0zo(#vR<4S zNRsk6N9A09Q9c94{N^@!MF=gt*DH7OTf8PO5JFz7MHZ|dj|>mfuLuC*-SJxLYiFPD z$TWOU)^W7Us+i}&|8{R?gx33JF|Sv=wzC zWTdts(}g7^EmC{e*Vn1wXZPKM1FU!NzNMs~H#aY(7D8v0Q3?v`1knA_RmV(cssRG# zFLmx0jpB_Kv!cOyb@)?8oQa*`O0=pGg*9AtF0&u>l}jWnOP1rX&86Y~La@FoX($-8 zfNybM{p6#Bj)p&1r}o(m``OzjuFwCfa(datd~7MsWK2_5r#K#}#DC2~0?Wh8%cyas zN~7$sh50pK4D`DgHaYU^s;H_;iE3d8ab|uk|CT8TtAa85vO4q&wAQ`0sQG+MFO75P z*^KQ#A7_ZWXqpQs$4YaF4i*u44oDGMm7fj=UG=uhJ#c>7+h=J83GukMd-F`{b%YRg z%Itk3XH%uZ!J%&PfAyMQWxim_!UG=8peVB@qO);BnlIe_tlj@{MS^vp(s)=Jl&>4_l z^K{5}{EK#eGxkz?3RlwCS;_!b7^nZo`^BxPEIN%)5sGB-lKGeqY-RdcpF^$*{Z z=_8!jml~Xe^kL8!5ng4&zL8wWwp$C9BxYm&SPt{!4B8>>79W_5$ZijPa?Z=~nHeJcTOG zcR5jY8@G3i2YY*wLw~^(&C-3hga=)&8|K~@`#2$E|D@Hp!y_W~4p5Hnm(|e=fEfc5 zU#q+_G$b{6dr-$A5D&Ux5_~Wvw&R3p<-Vm}eQ$gus8%Vxw^SK&vsMmbKc9TM=ko5{ zQ-y!KGBaI4(*N6S_JOg%`tz{nUiG?Z?ds8ps~8zS4)6-4DLd9~5TFkO}9ClGi( zBh>-+bQ@nh0F-bD1H@Z3F3VuBEal>I~3ls~hZnk_(jia`7?%Yp9b>n0T+v3q1 zcpIJQVxKW8Gg;A-chncvk!~%9wv#i3#k><~?p3>cWqwbw)urP1iQqzm;R>c}f|oMB zV+QW8@cJAFMn|#i?a5Gj6HOpHsY+bUD0YqEg-6h=lcJ{P_g?Z}5V8aJtDw(8xkkdbKTT4u_vUnP66gsfk^!pdXX zUGO9N+U9`Nxpv3wF6c|ps-GoZa`Dct^@b5#FE^7PBgT--vXd9dV%f%r&$aPzfBy(G zRk;!V%4Ve{I)28;>+ZDwXLsOR6r}A|dz$%dmj4Z$^IUlwupqV_E{C&8*%*3AR7Q)VZrW3i(|FeKbPo{L%)W$^=eJ*mz3J283BFIWq%EbnyYmer^hbt$ zgsXjtOG_k+lduRD5c=NZA{sl;s8r8;)!AKd&8);ps z5Z+6|9zjBTDzfKIy=cWQZXG?Yy*~If2{X+2hh)xcl)KT*l%h^EX)Bq*cJ)Ma8*^WT zpOQ1pN?hspmD22sP2{jun}-(xKm48SQJw09o_;F^QKSA7$PlZax(TeW3#S&6hsTtM zDNz>|AM^VR4M7GukaIC?-;1QQyauYmA6=D7RqBt8QPPlwNQC5-Vw-hd5z+{|3y3ha zC*+mi+#6l{Agr6(uS=$sn_Ne64(NK(75QThuEzULvYGA6l6G{DpSkOgAIjL7MTI5= zBu2~n?o$ebxz6k->dfQ0cBJfT*T;P!?K$q1H$8C#ldE_++bbm0cFzpi59}d>8=3tc z>ii7;={*Wp=+2MX{iEtP3nY`d*-g};sg62t+2n$i zsP*)O!= zQf;~%xypLhkAU_KM$OlQXGgdUwA`of*}4ul&;s06G=2)VtjG39Zh4<9kq$E%d(}=67VPjt3;b(!#ab_Gq5zgm(I@A}9kTQAv>fSfGLc&2W$KcXy#TA%x?%Xv z^dEg&wgKGu-ap82GkR#Fj0b(~6VjA#3^XH2YXa)bgA zNk4d=eBX2EPjI-kHo+-HIO+d&LCde_i%YJ%{8QCLxy=NPE+Iv!p@<`7|I_BZbvVJo z+Z;D?504Z4g670>J&6&3|5qKC%O$v|EJtjd81g1>?B#0`*IFKn?`vT#$6|R3XE7<2 z;S9D6O9?ayH55e+=bVBFF-13@Xtp-UVbJxFOBi!%TxFy(1VaO4&1+W-x|r-|{O9Bw z^lnI-Z>jyKj3y59V<%|*w*t({6lmTLkx?3xFz6nz-b;|}Gu2E%@@X-XS-QLwSzw+y z9Zr{wiKfLrJNNsCu>LfDbyp%5Z-mEgIb(!5ay%bxj$NehC5(r1CjG>neON(15`nzL z2lCcS&8}%A`=~ssx$M~83t(;VrX}}tt2`uH56X5y1L$%mz9xaa zTF^@EKW^b%GNU`_Zt4ut`9h)$uJkFoR z_mp<`at)^t?8_0=7icMs2WsXxOai1_YncvTXYqlq*`f$$f@#ST;(-z`>5m-BYI|E{ zYYjhNA2{yZ`?=VYeI_C!QTHSl;3?ZqA;YWUx8C6X1?}eu&buKH$rCv9S;a22FQjQhpTUV-=IV7h{K zh(2rlbdgJua}W!6O5iq_ap74oJQf%4RA@az<9y0h$N3cgmM_7YnPjA^BKLj;J0^l1 ziDM@Xyd2BOpfXP1=)We!yJt*VrW@!z8oLU-7rVw@ly8rt13g?nj9;)9opUe(TekT0 zP8%bhF0zIvD5uQ3tcPxW9=@t43*LOd+Bv!XP~)~W5PNQV9|CGNG=iyst$1|@{wFOR zw$ML2i&d&Rc$S=fU!J5ytyYQy&B&LOlzezE7G@kXZnig4S}_34%TBYqwMNTl@h4=q zWyK1EU$L;*zlw;Aq@|~a`I(=;UzF0=_2BykQR7#%Ql$)Ezb&%|%EdBw`(2v?i4WeNE$P#(-<$$;WgoIPm<%NZAFttMKb^B_2Q2e#uGs=qg2J*Bikk@r&L6 zqN8|(VnltsfLDmjJSn97hOVx2+w1X>U*ma%UZQ#npzB4>7Zh*o^b z_sZtvldGj1VH^F%&;*S>wU80*+WDzMKLBfZQL**Yh?MGa$KDL*ly{aw&L|=B&k)Pnvi)wK9(kY8HFAOKtL%FeQn4TEjC2WRimG-7(Wi2K_oGKE zxC_FZ86$zzt%S6&F6czwR(i;Uq9C4gYT5p{mou8gWRGq40SzNkZ zu^)q6iz#kaq_FXtr&e4jTu$LLFWt}^L@p6pXEPE^t-p4-aa7zqVa@e^KId20B|dHU z-Y!?V9HO%yc;p1b_^_7LY7k@$E`Aic)U`G=IN&tuq}|Pr^nG&)AP2lUb!odq(`(_6 zj}ke!I;zuIH54N7zUmhQEKGc1!tU`fSsxA|6mDnP?5CNec<;zIE1WKs&6TM<5WVF;8TxYrgmH6|o@QC* zIqkmc@q*Qnlw&q-^x5rg0S>dv#VenYnmg)j#JjzT6nmql<(|p}nmCo?j|W@7QZF~# z>pX9%)-`ow#AvFX!copt##hM-tLhh{xtfH;CxudI^iD=-V*Q57qL#Uhqqo6>=LaG3 z!Hj7S3>-I1bs~Ex%--PF{B1Y<_KZv=LNb;?D8iwo6Vn>PzHc{*b`>?$qF1&*g|&yB zE*rEqPHa6CslDSp6j>D+=vH7EH$7;+>=9?o4pM78dwjj`*4cZO(9bg${)1O6WP_w(= zMyD<6!hBb;Q1A^(Y*5~HyA(u@36Rf^AY}GIL6{F=vi|1bt{wZj)U^#ZAUtN8wgiw{ zQoMIJmj#i+yWZ5m6X|4+l&fz?8H*s6e%af7C}GN2((%Rgefn$|u2A|UkT2<0pg@GD z%~M4B0~ou~*VXr<@1L5;G}6);H#B4tt#b-7gyv`d)W95N`5|EB@Te$3ljca~jv(}P z|CH0yQ-qC+g>s@-e0-Wvj=z}B#)W|kkAS*jt%E96N%S(rAWm1ajR}GETfO>+& z@->OuCJYz9Ys|Sm&E0}To*yq4`Sgy+s^4(&wKDMi-<5=I^W6-|R(k%-Xk~r96L?_3 zWA;h_z}R0Pnq=~|&5?&xanC^QYqcZCCqxq|t3`#*0OmkxDgRwQH@k9Q+9oR@DpduJ z%kAo*mqZD-XOyqCVR;*7ah_G=*^%6FY^Jm85Pdw!W~zwqDX0a}_KZuWNNrxzSJ}>& z^3O@p3Se0&PfCF^<~$o?46RV+rlgGHGi}-kXC5syQ4l`~*2ZToS92pf((ghqL<_>V zG-$8}bW0~lN00&DmMG2c5dE5y<1c3sRL`K>da1q9;qg0@p=a{}c4$|OSMOg*Nqkhn zoOWdvz(T_e{E2p7@2FTURO_aj4X698PXXMsX*qC4vNG1Ha$=ak(=RybFN(tyXtn$4 zquLResVPJ22wV2SyxXj$-B~2d4qtk`R>pywvU+~8CMIBJ3l9A_sDZiK&0FyDWQBmq zm^nLXTnc6C68*CKw_6+mk>q(37C!ISB1tRaoP9Otfa|`&(!zXFz9?;$Sn}Hyfaf(} zZ27~Q$HIAldyYWl%@fmZyDM{5U4g$o*$gCg1h3P4%0eYW3$1I+cn{cotGCz_VnZhE z<@e4U_?XrNJ=N8y#~*Pgg*OW^`z4`nc}E=icj3X1{Oz(V3Z!|DQEa>8phI0fPMfG= z{sgJY&jA)|B6_RRUdeL!=fOY)7Z~`YRYK$g2z*i3nMixI((}0#SeP>_u8fh(zfUV_ zJ`xd6t=U(oxvNWyz{Y*9j<>b@#s#i-AaZZ>6HwO|NX20(&;Mcxhe|ey(>{`Rd#de2 zc=6j38F``hrdzTZ)N*rgedb=~JSQ-(a&B;5_o}BYgYWn+h@_`Q9u5+_f zcfxXjvhhLK_t4m^u;oRsnHo_2*`PAp#e~DY10pb5LMS4fp=M{l_7Ix%OP0nmqoMkW zb_7{*Z$+cNe_Z$38%u~UnzPmn0^{XI`MH4I|KvMS>8iZWh$sRt4m2?N6Wc~bRn`6g5j-e)T>N6aoxpir z1Da=w(PjDw{h}Xa4`F>=Xo+784AmlRhKXmCU9#2kZ4BfNceHi-?H-kRehTn`5)7IWCwMxw$9WFuJWHd0*9;- zu}&KkPxnz&_3DG$7TJ3c(fc4bed!Z$3o&q@t9&mh!3HzbHx|8<09f}lB4f~JBjod~ zh|%}XcPQ86Uv%sgeA-+@F+7hAT2u$GmIDMiTcd?qZBCcR3a@7mrztT`*6j$F%VWkx@2c(LQ@vHgh3;r^jy#_17brPXZwjoy5G#+LWu zd~kE9Isc6NHM$q*>|4hPIyWxK;(L`(R7qxBG4xVym{7F_A5G;3!hL+>cqzc5JIK^- zpe?{;!DZ=A0V4Vc7u5=nr0}mM%U{_|rs1)qDMEp-e|>x@zGyE7SF6 zjQOFPIF{WrchvIFXN3qzO}|m9V8*>2${yUQuSc#V&`-h@su1y2o22C!cXN+k5jOm0 zE&I%0AfOAeSUcX@S{yE5_wAfi#Zk$}&YcMBn(YzJg1Mtp)BCRdy}vi+v#ITMUC6VX}?7-9-QE$L+&pnmO&n$L$J!67UPZu51GA#LZ=4^ z2kuigOnqQ4h>rZ=4u80(-jvq=WTj}gacOt{u6n#?Q#y_= z{8KU1i>i+&slYFTRt>vckkwz3L0E>x(1~cm`-ZdtAir8u!}w;>B)I7!oyY@{Y1F`^ zKXAGvquJ2zlEdMmJWBG6ZF-_sJK!kP8xnFeI>#uhE%|s`9rrSbTSN4wjGh6?0nV?J z{of3XR-l5&L+Z;j;#97Ut2rVuQ5Tc=KmPMiDR$Nh3zDS7ON_?O;S4<~ z)U?E9Zz#`TfCqalGX@geICU@(dE_dNRJsv8$SX*+w!K%9;@6*?qfGeaPPK_6Yg{|0 zobpWHD*(+_X$b6zNk<3Y#6{MIkR_SIwg9_O`7FSt^Hljdbosq0_g7iPXF!q7BOknJ z`1|7yZ42ceVxOv)EB!LD{cZ_cw+X-Ss;R2rkmaF4>7<?>L=LC~9UVJ{+IwovyaM zeG2!zq>nZp%aYrGd%Gu5~y2gHosWp+6Lh7~82D|3Pv*B?x8Z3f(|s||IUSW3AXc{sp)TElC* zSz)$%#HSVQHJZ-wc-g#6w3a6+wQ>Vr!Mn5M^hy<>8v}oHG#}h5>a^WU>OEP&7kd|e zv9N01&t&Gxq7L47XiUGB8`ISqaqd+pykY6ADK%DjeAutH(Nzod=SiZByjNZM;`|@3 zP3TG(M(@#TGl#zaGir$8mp@NC5aYVuG1c&riV%f_Gn%-uo&^Hn(A6X>#CSck(t$xE9M>@?>x7t@sGc~d|9!yIe z+Zsxm<42(=6X$AXX_uafC}{yiMq?eanoYX2BB`s9h7>UPk(BS+*!J+wG4miHdtqr6 zH~~&;*Sp5{>1hyY)~@W#L&v-bs?yQd&jP2MYKpD8Z>&}0<@#e(WR;e#)KFem>VF!9 zU-`0p_?zx)s+?&-@GCN!y|)5dKNicjFtCEh$BL{VTgzT0187ACYa7nd5b)3K}aUY=qd9vKSFeSMfl_aT|Pz>#lw19udC z#VC!x76fU1Uz zyEEm5L1Op4ZD8dm2SW-B|GS^;Uu2zLj1S(cCdw3w7qvDfkVw%n;g{=DHtE83n2|3v zQ>T71*-Q1PkNzOLAz{{TW)dDjp;c-msV9>uX!w+j8b! z)qSWmNuuxABUScem%;o2yjM*Ly`+8ehv!R{kYG}(9RcB^)mK%i*v2k%?2 zc&7HI!ALcCQ+0u{&2}~$pLI-M6-5h$`wAOP(mvF$ z3IJ*a2U84FV)9D?A|B}ucIHdR>=csG#wsex%TY0|Ioz}1)#mP9^-M9S1xPCJL~2x< zr<{q%j~-`hl1$%}2T&=>d^i{ynzdZAi|LuWb3>=OTXM0_3mf1+O&p_sm`=K(ap?tp zkwe^OG+F}|*l<0ETb?Kj5QxzUxFs1KO^5m+J{YLB1e-d_w`7Zak3;19qi##CZIhuY z3Driz$k6$TDR{F6#cX^}U-wmiCJ~-GSTfV~SY<#$R>YzBjJc@Hi^KJ2v}5 zBn;+U_lJ-`xs`Ne6UrYZqmIfwtkG6>|QYrdNWBl(6ZwyH-<%=~pG%bFn!HG)7 zLc&N2hk$6Hh$LxAfWv%?ZW|u`lZcFbz#aL4NclIt>vwh54)M>Jv#k+%=xU11{`>U; z!P~aX6wFOA%s7#B&WPJYYF+2{YMT~*$=p^?xDh11mfn-&skJ;i4qlt{OOZ47{zX+{ zTRQi!0t)`|73dqn=*M88;3RD`n$Z<{VZk1 zSJ)5hz0vT*Nvm2NmvzC?1F4q5XT5@R!mTLc`~@ct>LFc2TTq}D>R7L`#*xCNN^@yG zb!*X1{;FeP6dCie{NelB+ou@VA|)(ZIwJADaY(^22o7b#qODY|+SrYLq&{m-A?4lm zZW7R+JYr2o$pO)YW;?*}K7W$J&Wzf>)%CYDQW5y`@LTL?e_nqRCV@e1;D4U+ZItT8C*sueFp_)fGox@TGwD2aK)a{I+^vSIpaz zfSDl1CZJf0zFoo3t{6#g0aInaqMz%B$0a_LmYt@ohv~KNt+@rb=lcM*8dX|rO>3xR z*DZERT3gz!hNK>g-Dg(sKk76)Hh0bT#vtIg;@vFOy$HHLoV5{Qje=EMhe}wlF3}5q z`BRJdcg6_9YqUC?-Qc~ev4uTJaH1{ayh5>?tU`X;(XEPSTB=9wEZ$pf)o953Q7ft2 zFRqHL*&&qU)EnUb#ht>HcB!`6lqi**EA0iKKg^&oa50HjDl{T}qko}k53P43;MXmQvnkysTd`I}=GL2OR;k%*zvU9|kSE8QN$t_~)X@D2`#$>=zny*6SpkXiy%Wo_IbcBB@o#o2kq5&Et~gDc}!0WT7-X zCus>xiz$zC?YOAbWiK%dTpkuQ-lPIxk_%M6t%ce}Qvph)8))_n(pWtKmtO&FaDI&Ak+T34nDxBos|3>CdUsBwH5?ZsL}NJQzC)IP4!N)frNLGJS2C5Wk0|A;cd;2ymxr0lD@C zE$23Ui(hlhuc$TN6a*SpHRmKY3in;Czg8ji5>WLOO#EO=Z5oaG^7!h0+x67vME$h4 zRnc9=d~CJd1cI;KpbLn2Tjooh)WYLhG;mp=fdoouwV*iZ$du7@tDm<@Nw^fc^7X z<3%?lZG2ENH&cX_`mG>rZNEseZXUrV^JcE5@*te$1?VD0{2=KC!S0x z@E*hKwZS=hSrdskY5qHJ-yt?+HKxaIl=TTUx@xZ(1)qtl4J0ZSbTUlBcvg^1_q{At3jP-Nj^K-&*wk9QDE=JPd5)jh*Y`?eI4x z6gd~fCU>WqFdD-TG!z$L+ssCT(^$nm*sF5i(c(T8m}AeL+iSaX;BSAKjm}PS-7X~k zxG03?1fr>ST(GkFcECB3b?x2e&vR9md+?({0`AH11~;MJ9lew$W@l70Ep%X~I9Xti zr}5h!S+uc@qCdjj@gyucx2!n^pQU%WZgYmt#q`1VzN3VPyvKJHopx_*+dWU$s+0SS z$Br+SITNZyB%A;^>Krw{63TWZURG^-yIlMHl5HLm^c!7waY0VF`NTyj>1Yj=5tOx# zs&3`d`CoGVF`z4sW2SOLwGB9PgN=vhJShaa9-@rBTDGoC9tUrfY0f6hZBlW$(I<4u zJ!u2dv-67u1uc$`+J`#1+(qVd=&yE~PtMUb{V(k{6*}`SkaMm*F5Kqs9eJK^?;^tf zyS~7i*hEM2Foods8X4e!UV`BE_H-Bfp)wla<0GU}j>MR+x>LT3ix8iwm8F)Ja{bDiU^79|MV4^hXy(hJZpPSZ74kO8r7d?VdUp9> z*>vTlZ#<~&ki#`Zuv>d=+v6JIXHY87tTgRM5Z;zqwElwrX(xNQK5_gu@R z`gGq;MruhJ?if(1sYXF=7)z)xvD@=t*{jdOCpRl-Nr1A`rCJ_tnOp%m9tEK>^2k(r zM$g%Ttu-8&JhcI~k`zZQP>g1C>!S|&y?2R;Y`+A0z7_Pcs} zKiIrI%9}s@4x~Fs#m4M5;g?gSmnj|a3+R<=7Aru&RYrD3C}CtWSbI4NAh_A{avGlj zOcLo1J?#hqTgnlm#UdAlcbG`MEpdlQt5jO!-iqiC-ZlDDo<0&CDh|9jy z?uc67&+m^sk(u@-;VIAa6+yY z8k*r`c3)u1F7Zk2{tgplw7!B+nLcQ0>Z_Bp^ZdK6^>%O0s!tMs7H_OM7%wjH6i#Oq zMkEqhJBxb`e}-^y_dse~5E%aXqv3l7ZXMY(E2%oGwxop>?JeUzNA2h5eAD1+b8~Sd zWH5ulibnBl0eU%@eR#-H^qotLdv@asd(j?u;|F^iw)&^F{;ERm8XjWZSQ=k$mUSG3 z#<&aCG5$Ek9kp#*>8&B}+wwV!nXs<5dBznTClwMiMKsAi!&8!`od%J6o6`gztof8_ zbm5VN40ZO?jCK!LZKs>|_RBQTTZP!QP=!)$58!vU)z&jFJuOYGMvS$LkK=kKz%KP6 z3)X;GVV|ftndHm9%mCO{4-xH~&zoKpB{>Ff0Jz$I0_v@XB< z$>;jtqCRqX%})u7mj`%lkXfslBxo0eMtL2T3kM-|U3CIVmL$2G&fQ{rwFJiydbj!kZKTWgw?VzKeeFN(_ z2^Cd&pELP9PSyI<1CT!pvaNY@lxX_eoc3!r1*jtc2Y2``0ST&~I8Q)tZCNTpT=ymd z5ql+BAU$_J24`f9>)x=7Z#N^Zn=Yr{DuZo3EJIQMimQdb{->kkjN3I4EUNl`a_`(dN*n`zNigp`f>4E)U8 zaHU9B6o8@2vCWOhR&RDH4vCXnzav^ipBdt1FTCWI094kJpf5b;IzAzG-)2xk*-;rG zZb2UBlwmQ6o-Nrq9T^`lsH%EbG+W%LAt7I)UYY&p*KH8x8MaA>IotcZfA;sZ95|89 zr;4}HX29QGO~-ObEgr05#u3%zcGa^W{q zS01Z&RgVT-U0Oxtx2LL>55r;zNl8@(^`{j4Jutz?u@n?|yQ<;-x`Y5uI=6e}N=G?d znzOzFvp=@|cg4;AB!K+mcqAq$nNuQxKo=h$AE??xjb0&|f`Voa`bdbL|1%CF?kF3e zbCsY_ptJZr2$s9~^oCyej}PpAee8Uuw;gq~mjkH{Y}}x5p!wIOX^Oc;AR5il ze3D=mMEHJ7q`Za`W_12&)bb|L?!(dyU$glYU-A^>oVYGs3( z`b|K*moFFnuIQ-d3%VE8)EA-}GipgtE^*M{FKTGxY5PV0__Z6``J{<%2G57-YT0q_ z?gf~ldNA5XEk_KTy#k>s)8_LcaE69LgQ8fmK1c@-f5amqOvfYY-7!yDgfV~~a~rmJ zBbO-pS`V0oQOe%K~j{q%>=<5>yangg<<<&xW)QiVu)mz=+@5~P_Bpjs@x$38*u=a2G9Jt@^x z@apXjb1JNfxN*Jb%y&`6}e@ko!3kF~D+#W`TA z)P%j$W<=oYhlr5dgftFgOn;9&i{*Os_DVK7u-R+xXs@~xPqvPgeO954u%8HLO>Mf$ zZiRjETl3!U|1DP~4BC5^e-50oX&D(mP*8}Wl2a6w*{$&p>iC)E`oCh}@{Zn&)01Ro zO3N6pgKw33*^(lC;}am6o!a;Fo6q)v-)QBimeZc&iF55$2I!&S?APi`&&}!64eELJ zEr6Xm?PkznB`c$8XW~2X(4R*AK|m@}d%zssx9h%H%0u38a_xlXa`ir4@L>R@!kMbt zW~32ZwZ+zwsQxR1Z_NKlFMEPuyy{8c^y`nvXKlR8b>p0>h1X`oVjVAjuUOE$A~1$e zaKLyN#g`})MBEf59yBtbmTuq={G6ahN#kQgTQlF6T_7nfG@9l4Yd_*S0( zI4CEj_RqfY37B*520JO9N4bu!Mu?GCQ_YTo%dS%R_s26l4VpE*Y^`4*c5~GzF-?rd z{*?zl*YQVOW}SSV3qh0GrJ=Dg74b~+SxyDD0AoBh^ydnP&8Kv(lOH)bMW1o_o+uw! zcCJ(gsy+Me;oqR3P*a&sViZ6jpt|4AvQk=%IO6PwXLLWE_$Z>T%GW}OZe0yNn96Dg zoBh(|+3t?2L+sSgZP_rjK*Byq9t4`Ops5wf{wQX^@Q7|Jw_kTPCL`=nno&TXWk)J{ zYrAoIHiAj0%N9oJ%4kA!LCwb(SFYWVpl4H3I^;>o%Nr!*jft*PnH&@NtI{~O9n1n~ zv63x*2W^luJU*@}{>mG4KHY`;SHvGVULybPNmVpX7Hkb5FD|mPqtMB%OV!3SoiF@> z<=TzKj!Zfm(vlG(0@g+xPzcqWs5e?gc7)iA$~k{KRxCt7S8GVI{kEe+BI!PR1fw4K>a@} zKkqAaV%ERbF7d&w7aI!ftcu5lm>E8TUZpzJuQ>T-)?by+r!M<7+r-ESu>;XJSLMLW zh|z?cxg+1{AnnCOOIk{yZtV&|6U7bvleUi z-rs(|H=gH>90&|u+Ku_(&~O%CoVGDbT6Vq7MDvkUvicgZak;NjN^(;IqkQU)inoyK z>1LhZ!SODKTD0YI?FK}5gWh~Mpx7z5su&$~{y9oNJw|JtzYbA|XfD?sto^2?to_?p zR`u^)L=5ci6PJEBGc&W9{z_W0@U3fR2AK2+XE=?^axjT0B_-v{$N#RD?0Rs~D)_&W zJ0Lm+by?lr1)^hM)i4ydY`AIH{>7S$$P@*=rm3LAY~(ZH<;YR1f~Ka7^>vHS1qD0v z6=IIut?1UD$fzbqS3B1K-WGB5)93$H@bvUcsMQWiG`x+sU*J9fK|c;l90c~$-X6#pkC@9e2{l8ecC;o;AG#A%t;ayn}*m3c>hWG|u#_l+S^4ufip zvgua~!(2KcQGZ_mTM6{=Zww`eB|3%%ohf9VWl}fCgO3+(`o)xuqK5~4DwIty8Hx@t z(EnhUfme)mSF>vTzEP$~s_$@mo!^eL3gzX)86m~KW*YX}mf?|%NmDVPs+`fN%g3B35tZu(KxOwW21 zbB#M>%sfr6#ta+7^Vih7f8O$7F*CZsz@I}DAd;(=qs9^x6g0apsaqjbu3eTr?7 zJaM%bG5eDSh8N6t@SgjOr}hg3H?21;l=5CO6z_Ybn)ij32W%1E``VgU!>r1^_CuK) z3VE)@%F2rI0OS7s`>QRxH+449R~LJ8hT0u=({^w;JfTC%FplNFjtxCIV@%e|zlBnE zeZ{JvPf$mT+nLN9Li^wr%cm~w^ymJJ>o5+^E0p}hxGF%>G5=<*+lIK6noky{Y6uTu z3enyr89M+F<$vIxOt;1P%xkAg#Si)73C`oWpeb zWaa9hUcZSEVKS=y)uSCmR5H%wb#At)=9^2Lu8`XC^M1*B^-Lz8Gj5sr7T;|F&bG$r zR_8F=#KG8Brhq$bjeQyqs-%%}4qEMa{d4mxirB@2$MxEzci93M5Ew#F*8z${m#6m)z}qF_A!Ba!TPv7c8`F_n3*EX}oiBx!#YX0`V+ZsNmLzWH;P>n+Qv(* zPQqUt(7lNoHSXyB;-6=R81q}a8j?99e0+LYjk2_5)3=t_@-{Er{7wUG=1{N2jhB=`l_9tJ{1FRg|C zNCadOzjS#jqUq+E^ChPq6U)h2{Wv92`~qD-+Sz7#bN^-s%ZY9(bm!24i*w6hB!XMj z+?_Z~Y(42v=(Hk>h(t!yBVl$TkICBcIsOzTSs&%(gpn z<=5`d!<;<|WY)R&eoaIj#TnP|a7M`AC|CcCd^U8)pZ#*9fxQhOzJ}fL9(LDEFPW^T z$k<4!B$5(gBl~C{G#V~?8fkd=;e0p4(pz)w9(X{p`$1#P>NsinFuz`75GKg~^=pt@ z^%Y6@1^=mC>Oi|N8~^$;7q@u9=AK-(W}l3~h{tGkx2O^WLgq>ZPVxmmhOYf0Ho zg~#E*?aQ&M!tBmpoZq)~Nw4L6M-7Gs~DFirDgg^NU1Hq^k zw4HjX6ZJ(4n-)#tH0Gus-F?OG!;qNw2s%C{Bs|<42aV@Qp;+~oKlk+s*e?g8 zeG6t)L~wBMt6X;3^~lph4P})#^6%LU)KSAr94*9ujL~{`(cdW5Z|j6~T*hC6@gFsR z#@c^n&BMMm@FCqk?zOS{;vjM(w^Qv5XHJ`IF{#bV|j(_-@ zk&y%7(b4N2a3aNG$c?-={dF~XS)YF4_=sHV%FTj*PY%~Xz1D4li5%)({lS@p%hAc& z7(sYKwAmT^ru!Aqy)KToc9U7}mzR1Ek1^DK-U_9kk;(XM_Qxn*-+DJtyU+Wx^QL}& z${+UwA3)5GGLToA{w3>_3qb@Lbt+#V@pBq%%;-6Nym}K?E978y*o+6SEoLfZz4pf- z`-3bq@7`O#O?`R+8CxIr&NH2jRF8^j$+;jXH^D8klf|U63WPLSA8u^UXg~Du70a4; z5ZL({mEoA|V>i+`qDP}()^9q_QvK6(HF8+**2nmTH#nTVEiy`$&nPv-8(=tSP$ct$@g{jMUiLwWUva#H+EeLa{?qS!ZD zc=V48t|<3E*!A}d8N;mPG(JLv4qvT~&0JM3(~anU3kmLg@eTZ$oD-|@zYlP42x+>&Ro)y2-Yp zg?WLPIsXV3g>%Q)TTbX~-8j{=-nS<`$%$&4AMb=I_w$;;JrF+{k~H6w=EZu{+DNBT z;4ORB!A~yreQvsRe5c?!qW)MmK}+|;8+FG9c2`USr}cdk6%s1g4jbjDBqid0~`>>EVfzg&CvG=Y#nI^_jhxCOw-Z zialQYwn?e4q9|Y6$V!&BCJ%bO(7W9ib~x}R;sy?y?pw7$WPFx`nRmbE_NpQiR<6N=hK=7=FK2#2n?77O&g>R_`t)IY zJA))`cjnM;{+r`)G$}j$Jbh>DjF&R}!i zrE9!{l9rZ+UtyaxF4VlQu(K)sj&A=8gfGL6SKUNiMWWH3wYWn-M%L}00Dk?>r~iec z=snfk$zd|;@9nPKU9l)wD6F$G5o6*^CT0%a+HpnqlD>F^p;;o;BXNP_yLS=c8<-*8 zpN1Vvb0xIGLPKWiUAY=TDOBmVj{W5BdadULMP7iX9FP! z@s)r3euhyOQN_G=sInrBz{~8aj9p;&IPF{b(0Y70YTp0HjJwb6q$acD4co zyWitvw06Mecqha?AO!&~-cRG#1rhKwisGVX*Kwa*)HL;I8+C z8s{J^f|jBe)xQ+S2_UMO1Z`~CLeO!9Zt0x;UEsxwwbA_5^matsI=*$@xN-l?LUT7>tRFd#q4#xLknaIN#6*Wo7o-h<3l$#qW9g^eIM+ zT)ufC3`m0K)k>2+`dUL{g0~yR@&bpJ27Y;Y$s#UJ-BZ2h*6bn@eeBn6XVd&imxHWa zo2skJ6ipN)Cnv}BXaty)XIM%V{LzkuWA43Fg$eJgO}%dY;gn0*cVrO28yAO*pSHz5KL$Vh!|lY5hktc zra?61gV_>!tH2+NRA~wE;`|$)Yyc0^OGHXosS`jgGB$P{CBLk!p+T$_1pm0yN}}9a z03>SnyDTG zq@>*3YSBV1Vizdaf@yNNEHTvZXBGaft+*)Cw#hskiKTU0q4*DSASB?!tpE`F+{hr~ za0xk<)2`aDa*8Yl2;fhxmJpT5TuTWdREmlVcPhPfjbE>KLlAMzh7dH0Q+plja zvq$Bnr7>YrsGPI2+bu*59KOvUlsHMl&%|VDeIT=S1j{KTGB$cK31IB&3u{`U6)YaW zxd#!jM$S-PNevP(jAvZIYHJ1&TJ>f6M;IMN&K70!PNR_o$> z?I}KW)uG>=sgl~t`{cSavWmPVMRGaTTF{a2rD%vasI;b$Lij z>oroc!HW1p7HHONKT!W8V6w97_~^4-9>Lu$@=x-QL?IcQgWU(4u2xTlh}w|fF9q#? ziaG}m(UUqbqAbPphD3yb6kv>xAG-<*_e4Lx-Jd^Kdr^sgrDtT3ImHOXVowkmoxj2U zT=IQtd?eLf92_+LrKX{g|K!d3U352_!QtWj>Z4injQ}Fl;Zm!@+#lqZ_~m5cf5rUI z=YZ7aQTD;eq|aq*F8oCi|#e~{&$=Rvx%jM37y|8TnO zgSnPLW!1W2t}vLn)F507{+DtLDEX&y{Czb9!x*E3L;d^Tdr~$r`N*#w&1?cZ#Qy+O z1K{z006xFprl`ION6PBqR-aSdLu!M}?bn_zP33#ziY)x*bhO^MXxOT>(Cj?mbmV7@ zqHmm>mX!IQn;X;me;98Lw)X2U`aQ3vzfQof?meW|CQWBgAd*BT1)GJe9@%`I`Knf@ zonCFeD^DF3W+xz8m0K~_N6^!WemV#w+;lttQj@qpo;-axZc^{F-u0i*p)mFzh|lkZ zLa}md4L@L#Gw+_>&9@Hz)1u=F=#_xZRl=vuQRv zp)XbPDW?sGAOf$}s#hpYQ#}stJ+GBXO5d$TioY-iw>Gu6B)>26_krMlg`hdx_8{g> z>p3ON+|E&16gin6~) zm*8~-`hzwqvQjpIqXlW82Xu52>qcx1lZUVeXMfm;w{Nf6|GwPslL4vDSGaM%!boWC zo^{U1*?f}f`iKd?!htb=cmxca`gW^JAXdLS#lkO47tAU}(4k z^l%F}tWhqX3Ydx$UVa%txE~o6W%Z+Q5YU>Z1yVwoY@-hO@kc#bNEf8$AgYtSJotjO z|GEBv?>_+X--6g|vgCDYa=}t=wKH_rO?*S&dvu67?n&=MS}P{TP9ke1;?_reiVGm% z0$FdzH+p=;mv?2)-hKV~jMtX*Mw1Wy7p?DH7#f6zxscU)?h5%`{E~a$-7q=Z684=r zkiu`c-osuad;29hC2m=!#Fabqm~yvkbq4XvT&IvGPZM=6$2UWq~Dr^XAWpe>1EAg!FzSE5WCa}f1+5d9s(suqEuJ=kHd9m#Y zI@uVd>~Ch4^?)HJ=VE|2UjX8K=ZVZ8wLlv8?+xJA^}d=b};?B)#sonXSQ* zG4=t^|b4nYUYg| zeCIA%ai+;}k!D%YBG0x`-g0_ppwwQU|ECNwsJCQZVkgx9a8Os>D~sE>BU>gCyZUFr z;n8v^2P%v1=cbw2+OqqqVA|KS?WNG}5plbVJtY_}u7g(@Dy^}w&_X^w-~&+7FWvuu zGJbMrz4fp-N1F!V-GGuY23=`k$Z}bfP$6f^|KjYoi2hD$_>Ur653aYLd~nBZI^WSl zphNx&8x<0e`?lh3>Puq)0)Z}@de9By>X&+&5T7eXVp#BughjnaV@)CM14j9k5xQ4f zv1w9ru8f5W)5(LA=g*(#_r6nEJ6QT=znqfut(|413BZ2f1Gi&iQrSe}Kmtd!dNz+#<;sbc3G!vFkxnQz$n;P)S)s9g@gZwXt zlz3vT@h{CZ5H|GaP25-Lz4-0`gAI{kACE6_F9CqHhW*~%db9f3<1Fn5G0HB!xsM;O zn_bpx)Z1CUuXm91^19~)Bx!67z0ITyRgfnkBMvj=ycMZxYNGIebM)L%?31dopL_}5 zemgf28qZj?9q|pkD?@u7wPZv^e!j1~kMIqEL-W5&eGv91g~>0ENPs|$X8;bXXTH9x zp8iK^`u^{2XUoLuHOctAp#huyazBc^l@U{cC|+D#F*MQqjG7RqKz?Z$%|EN{@1wHo zZs|Gfc#cYS{nmF%9=c(XA~=`sSyH3@>HuNm!e7^f1G|$Y?{#IPcHcN-Nwm9Agh<( zbFatHEo+El3z{M>){EJ+PzbGK=n8@CqK&%QY=D~W!t|4$EKdOv?2R-u3&JsO%GS_E z+3%lB8S_TVboE_4XvW$Wv5fVqZx(7O`}1Fjb5S!L)H0kC#XRNvfkh@Z!Rc&bGE7Yt zucr!yl3s^tmbz`ACvW3N52}s!xw7G`Plhf_d`&umyn2*Vx<0-#wj_L6xbM%dr~5?` zp+48-@j@m97NY^#K!0x88{% zyTO4G{FE+zA#MqxX7Un)iHXZW2;lHj>&AxrDVl|G8$8YVl7ddHU7bz$UOQ@U$5Kb0 zh__=A7AgGJ%LAxD^%o!N$z+yqKR&Z8k>}1FUfJr~&{G)UcXUQ!tROvRDeG+r)s3$1 z;Hg0q?{tt~e%4pv_;+Z*Xuhzi?JsNeTC!q)$$XfRvuSU4)?Imcb_ z_csW97aH!eU-O-CoCBEkZvOW#jV5%I%ONX;e7mFG8TI3My44B-Ytakgr^qs9@3`wI z37oPyIOn+fa_FuJQ=Ugdllq1YqWPOT3;iXxnZAZVDm#|E_^#I#f3>%NHwuxzJRzflO|e0K)cM-F0o zW{LxYs9SUe%WaJiU}T;D@ofvu{vlt#C5}s%_ubdDAm|ti0|V(7ZLV{&R9)8>xw;i( zuYzTMw~(xU zu}BJ0A*H3)t*vu^G-y5Y(xhID9?rh1@fb}M#-qT@4{dTE^t7rmweb2%am*(hiGIygRlo^Kyls`8r6(5@I# z;{!E&t=9M~Wd291IYq;Fd*AaLd!Vl6&tGy|+jA;Qhwl`)toIihVW~Psta!Io#^7Uo zdx2r3lm_km#tVcRX;JFN;>D!;Bw7Rv=PuD}WLB?t*Qz zC|Z>N0(Nt({=fGA^|h>W^J|cfyWCcP=qhWY-zha2A0I!u4O{>C3J{GUUtb=M7o{7$ zwy*L>yCh&bJ`}H`)L@y+sG~U@`yT7yN6ed1BAmlJK;nhQ-S+odAJy+>1#` zH>|QHoEXy{uYRor%Fu>G>DErhpul~wI1)Y?ft0w!(&rf6nQTvzJmUDz>P+hx_wJsj zX>Fs{Rg!C|?x;v~Nsp1BQ|PUS(<&4=ooA~ttJ+TJNtgp(ZH>`PzxkutHJt=tf9Ep% zb~_EKC2#g%3>`#VC4Lg{q;JCMzXVV36X5mkyK3p)chooTZt={nS$Gv`SRZWoT+gQ+ z4e1i?3YRl;FsEb;O^jp;6UFplOa{-`Ycdq`4eHsJG#r1{mGpII<}{`rSuhr`8UxuY zvf<_jLGnBtZEDx*HyHi9NG=JgRGoUVg{2_y7pIx+4&>OF^-bkE!dW+vhtw>XxcM@-yL_g52hvtBQ*e?Nc6m7Eo?`MTzCmTX~UO zzs4?ZQ@-R9ZnI11Mr=jsMRQh!zjsOhWirr!1)z^!2ul7u^ zzDfqq4u=Hh>UQR>Dv3bipBJIn_b)szGV-lRxa;T49)dCXSrO6Uh}@`~qZPQ3+A{H@o5GP|lJX z%jEJtXV>w8ip7A_dXMH!=4*JXA`oc#BN=qM(fwE)!|K_tly4+)>pgdS)PaGkmd>3~ zhetCi8%65OCpYm)S~lAhFILVea-lC1UPKhCf{#x8K{aDabEgo;^BX?5sYLE`tJ~LW zBQP8kCvWbydube+*kjnKvK-+^Lo}yp053o3v^!sMEElL56CO0dv=^O((aV3gOsDF3 z$@|edL<`B3Zgmuhc|__v2!D?_ZaZjyzYXC)+_;2d7(`iJto;12tFR=uG#HZ+)V2y{ zN_wq9)@BsqmpiYuKfGjV-cx0%z=e0Oidfzwh2YH*$^p$zk?J=%6xmKPLpa@!?tMV3 zV1CnXSu)P|C*1q{6T;a43AiE$uH^ogg7iD$y3)D2zJ5eW8HTnX=p5`XU$*h>#l^ai z$-D$~4ZYTHN;U6l_k_&sKVzehUCg;-HGZ2L8cK6F>|Hm^&FuKNYu6LT>a}`E_o2_M z$3v#Qg&-0ak3P`(+SX}F`C^k2&F41U{ow~aRNbb zuo1$Ajr0ZivBS7gM2C8If8bIvjWc90>*}tAwH+d*WGl}fw{byLQ`7A#9=q;LLhR?L zNCY=O3TkRkc4)Gk^1R%O=7r9P;sdK8216U;9qW!2?}lU)SveUA@bWRy;u9s6!t@Gd zZLOz zx`6H`S7*>S16V(S@A-84*heZ1H34l^d(%>Fnk5*nJo z-j;9Q1kyN+dauuSkNieYuSM_-F*$&$pB#t%d>9;7J*zzztc0B7VM)qdTS*PMdTnQ} z<=SFujY{a@8MMN>;z3hijFOeJg{>hC^}l%BwD;yyebO4?&Oqnn&u!ucp=-NXCePZY zO=z1gU(8SA^(8k%tw;rC6QNZ4aqph_CK`u}!TlQO3~%a-Tbv19Pr+*y-d5G^U(R&P zdDC4NuzH$`9aZn(B}e8WDGyZ))Uv3mh1L$L`rRhlF6Smrn6Cw6EEZ<-#or+?Ci9#k zXjVTu>mfd*$Cd)Wqw1%rX_JLteU3WuOys-N@e;V=&Ru{U-4d1h?2}Jiojer^6bz{_ zb=;vL@nnTN-<^QZ`%?&hE&Yj^wb{I>`wJMV3g3~6UHO|`UA22> zP-KT)%I=o)ertE7@HTK4jWgSOe4sZvJu(?M_J@5hZc6+9ZyWQVeVWlH*9)F_o z0OM#i1bB3{l`Je{SkZ1gZXZMv|7SxwEd4)ckZw9&>|j7cflfw*+Q~i0)s+`Q>n(n> zCl+d*7nIe~GGB3FK+yB4mUkd@@N}*efZOipRpft(yxW8Au~NycN`M>O#qng#_Ra*W zCA;=XFKoQ}&`2fDF@Z5_H9VOv?HPf{P@3NlhYi{suWF+Bjv-Xm2wj z-tEi{>K_!&Q*OLOjxE91l-`Z7)Qv&2vE?3X^ekFVX7ZIrfeDr(y3zdyy&zb#!q=qg zfqdlNtm|att5|#)DbyE$MPF%2I!PaXAV>n4qgM}*6=paQzfByA<) zQ&v*Q*k+Eq{K>>O>x?aD!17v8Fu4l) z%XC`YZNEsR{sI~-bsODcJqBA=FLRXda*tqbOw5^yny{jA>|%jvHP7G48hk6iE%TrFNmlm7 zzx6SuJq{PZRzPM&GC5g(v~PkmanxcU;Z_6@$?&4yVW!fs89iLg=hq;M-ZvYlw*OeT z=^N04lb!Mho7`Ll#)q0{Pwk7YUYvQqQi(Xdo@nUj=Dk^G48xe$dVJnOq?svCVi82g zKd<~IiPW7o>4pf*2@UO~GP5$pgZ4>AROa@4*Kp53x6W#`=Y*-WJh%GWD136-7A)XM z-bCALzem93E3%c|579GC`yUN`kn=E+qx`70#$j&JhT(K^m-+U#+8@}G=3d2k>c)Qb zJs@~e;}Z-6w&j*|eWQ%!AH*0Yl9NKC294P9~vLTuzt#l9-^3p1j_Gm z-_$uH^*Nphg)UY>j%!rGF>sY|Z%0&8l;aHM?kL;UsIq?X1% z(D;#L3uKW?f|Rr5+D`gP4O$I_12`C6I=MyJ4oRFkR&o1wwcY-UAE`+F7gDExH@i{>&}X?t(}!FjhXPai zwCknS_aE-+vQ04vgbx2pY`Bj`;12GL4*JOztTbH>h`*;J>=yproZNYwI z_=BE!Yz)^z#Nk2vM}TTY4}a_TMs=?IT&}G!B5q@?21&YurhxKkEo#0@!L6CIC4;ml zkcr0DQQ_O`RbwQkv3BL_s@At^putBg(6e2qu9?x@sk92lnq#`B7UZPFF6i!f?osMD zkxEhalnp2&j(I7d=(u{}qUT^)dH-yE#w(IEoSW}etso@$ikvQI>DP-J6M0i1`SY!| z+npVQz)P(?A;$+=#VTvL!Vq4TjWtgmB9#;G7qKKjny~|PEn-TxawT`acMz6ht%a*- z;_ZcHWAKhjvM{}~{T5pnTIrxjD@E|&+7ey_ZM@1FsLI|J8 z>lmPi^Yr;Lr!=>81v@TKdn0gnRY8)0Pq;gd?j$OPN{8I5u^7~(4YGNRjg3w1zj%yp z*Ps0I=|B`q?#LG$+F2p4aNA@T$48vGW?5-zWgiEGh8H5A0*vD2-tBMtZ^fn?bd3O| zOkY3Y=?KleSnqdNvpiC`1jnrkIp9R@iGhV>kk0pL7_!{HqEG2Pa}(r?!R z7C|GFWM6qDQ9MvpWGk01b`kt)K# zycMu^-=eRetkIaky9d`VvJDF2 zPkxDvS|3)QEnG3G|5CUd(d_58m9%1*Pj%Af)Q8~(t4yv7gGKE_h8=M~q6D3>{$OQ^ z6{)4lf0u`$lXA6ABO%ETV;`M2X1zb9yu7{Y*yI7#W2J+ypQDhl%*7*+Fx=zhZhw0K zQ93?n*ZcNxrLH{iT7z}}$qqTm6+BJ@al9pgTb`9IoRM7RpD@!87@8WSJL+cuTU!vd zjxyA?#IJAGfKJ9}z@IAQ0{Z$Mzv+jVOPbiuKw~Ms2RzmWLu0oa5-$5yteCJ<9ydM- zVQr#`KpkTmQAvH|W^NyKZ_FJ$@a4o6U;s*tH|LT|=5(f@FEAeh-dJ@S6%(Ql5!u;f z@$vq_*pYGc0@Zw>cpdh_TTMIN)BxET6CiMIvJc77t&tR7O@pm5Y)g5;9 z!d#aFFToWJH48){cb4=LIStv`i%YV%9Fe!^F?rBwTQYxY07d(#0KZW{lyh|a#`Ufm z^pk{_CD_oGE|6z@uBnP|gc+X-_1^`jrqV8U9-R~P%S?v9S zS{xW`R~^|`Tl>j^>M|aeOjz<>3=4^$2Oebhap)d+@o>w$dq?p2tl0QtoM97QiSd>4 zy$ZiYD#-vZvfGRKY|J9j^~aZ=j8`hx8xR4LM>}|J4dqhSsB<kC5dQ_ z^h0$Ic0`8c$v_X9(QyK+mS~D!F5*#pFAgsH9|k_z_^Y%i=;6Ppq#!rS4!Iw^i zL=0aol<|hI_>hwy?BS@ipb)Qu1YIb(m;Fe|ja;R)PJtWTGjz%`p2)^d9X}pn@c;?` z@%CK2O5YHs9Zz5nBe;;l_;XS%THv6yPO%irRCvkD4B?aJP?6>A+TiF|(AwvmO;jw8 z8)eXFph2TCsksw^lN<>(wek>)X>}F}enb+`dK(VTTgk3M`7(ioLdquAP@UcOT&Fx*}5N`fuGqSv{d9C!G*TT%^IhE7; zXwe(LDdQ$oEpjCA>^)b@_PsoV77{QDl1lyX-OB(iyn7)jX=!(OE*F{uZuT2Fba_Cs z^b>Zao4Xx8$Mm#KD9LdAIglb__l$91y=zeqDYwr#O?G1XZIu1keCjNY z_vwuo%bQ)yV?FVJ>GQU?^(5A}SIm_X{^WMXD0ZDi;nZRR+F{N9_@JofKJY3~*q}3i z0sH4cr3Kj=&HLx6@5+NXN`^A|E!p_Vge!v>KI$7vGxM|M-G>c9Yf|fc2Na%SIFjyF zxjIPSCljcSk-~R9=l-4?hKsU|43(QmfJAQrP;vwe@`={zUmTf`P>CF0%U>}b=U2XQ zy*_VrovAOWy^Y>#KJLI3@X^;Rb9Yn%CTDJ(NUEWA!iT6`}-j{Ug<3 zKphRN=y8d=azS!k`4n<5SkzkC6mJ(@#XT<#W08fio2-RB-CKv7UBL8J47$Y|oqKzi zj4ZiL?7&+`X8#;7wuSM41mnfid!)2H8|)PDdtfm$mV+BNwir-zhHKzZO#6#$><4PT2*beG!9|h6p)D!ujwt9ce0*G?bpbRV&~VjJSkUte;^;OxS>mL7vrx>=j~^#2 zoDslQZen-NX(z2?t-mERh5-?u#dE^Ak5_Q{S-q`!V3WKFDr?e^t@R7bbQ*`^YoS2Bs zeDYgkss#>1w=Yow;-4F$dUC>bp zS3&LbS}%mlJyZK7ClKzvTrBR(dB$$T6T-))!v#~Z2g7u{2W z3&76IcdbrB*`C@s-ynaZUZnXSFY9W3@~yV^t-$p9M^i+?dHeLZ#cwE)n0T)C@AB>6 z*n4f5V!A4{d7(vFxbn$ zh1+QSK@WcgJB_!R7^&=~XMAtlrQ%ad;#WUCqs6%}?8gxv>2XzNEeq{lqYwD7V2u%Y zYdCkF2o!NW_fp|-$Lzyq9(?Y6Y}K>UydSrpc|B*r3^*aIip?E+E!?By+&hT?nAcxOx= z^b}9qn3ID}<@r!QV~3T8^_50Btzg@R^ElS9gHw*v@aWMEmi|CZ3q`n5IcF`eU>($Q zbp}F~tWt%G0^c-OF8%DUC@byZpJ$gpYZ`k4)`@ z!j(&W_v?jy_i9*zYCHd;I~;EQ9ilvI96Dg zEtGXbMx_U{P|G8t1y&7h&p!FKEWDL|lug4$(PwV`zU}hJ#;F;=CD>}z#SgY`mjKR| zD_ku}@fr9XS}ytwS&aF*5s&$`a(*hDRcI+sdQZ-095~Q)k}L`ZUOnalWP?XNJ1g=( zcRzb$AX|w${UQA-Yl7SWlAT&%1~5v>vLrORWD2IY-J-O+SWb3j0jrlFjERN z-E{}uIS4G5qy8ed>+o{7KiWZd)T4g_hx`MM(R|OT`0{O=8o4t&j4L3I$_d|nf|A^Q zhO*CMqIc-9_~;@Iuy!muCgfSk-G24}9RR3gol&ZbAD@v?z%Mc47XKtG)^h%f(_Amv z-0iCYfKwSd+M|Z)uA+<64B9gFWi=j}#i{zN-(gN%q;{|&ghk-gjgMh|l`>NFEKYI; zS3GO+rh7GPY;INSOVw2=F;E&0)eEHbd*jSzBo4Bt%ay(tvWVR6U!X|~LKsVezC}`@ zBw|^(;WP>z-q=+s6?Hj!FKuh2r$>f1VTyph8yLID{+T8j5Sg%PV4QVwVi$`ndQAC- z*O_poS<3vzDQ;1!8QliMxb6e(QqoirCVxcbRoqCxmZ()5e|U)%BH0_o6G{`{T>InT zb>b-}T?bDDk+Dy-x^qzS0?}+(j`b+v_#o@GC^iA|4pry?CC?&nBu&F8ZBNh(dVe6q{34cmz#Zy{fBggdO zQA~6+eE+c0WN%iuw946}s{Mlb@q;_nF3@1kwE)dhMoCbZ?faHydaBhH!X1xVtzkbd zk^1L+1e5~~zFUv{x5i_A6fVD++or|ekk7>4%m@LBVGzIw{FrVx?N5|H0F?h9Uy?Y= z%EF>RF1^k&L(P2A7MFSGdDM>9*c~h-@h5h4tpib7*&OtSyK3`aFs6FxhStMco zm%}dl!6-w3FP68EcyEk5hu7@}Hns5)!6h(LJ_}zfFED%#+?1g2RJpOtTNmjq@u7}O zBJB)|#cd+y{Owz-frBNqm7WtglL(hGuI3hkEr@)2?4I|ePai!;yxE#?bAO?D(oZEI zpfBa|OG{tN;Q_d<6=L_n7*)E=`C^s+^21fln%V~sVxHG_a{5QGEK4T0RyCzcQ55(B zd^2)^5}?z2>T7GT1G70(0Q743PMgnVL0co^Ktdvx$wVE8M*%gw1aO+Z3~S!{D17yk zrWe|3t#RD->Pb%g_+WJa9ML{&4>#EyckCV=f7V!<(-%{wD6(?=14bgcbB%&E)ZPcG zf6X_kN^V-$32XD1&lDF|hoV#+f0oZtd%VHL#tzGI-K@gU?FbMB#v{oGEt1|9JSx$& zMV=l`aOl;Bav8R`Y!4)sH6Cw_WM(6p=o1x(b^3pehY$pP^`WiN#Rp4$aJ=Ec*AmvX zXn*0VRKj1Vsnj+mDWXMK8qJ7IdaC{XPEt$4A3B(xp7UQ?@v79fUIl*BoWpuJ7m*75c3{)W?@x7kz zqxSuwgb%Q}cQ{pn>zH-b_jrMljm=J%6zKhR^ThYvEDO)WWLNH1K# z*BhEGBQJIq`5!3&i97(}*tD3*piS6$>pBk%Lku6Ro{0lb^iUhzfS|0a%)2oM&3PyU zl76iDoHe@q{bqm<5r9H4m(Pm=IZEVb{+Lybhbqa=$M@ru&03tYHi*T zoYKn|~S#pucDwej@Nb#>^V-y7wvp~(}nbRfG zmsj0|o{awFOmH-^4qA?tuhVPuF+C-5^n7Houc+uhIb%toubpCXb<+2DEdcRGQYMKFlm93A@DT49&IdESaJqicCPzBx?#z!R0>umG_w0WDi?(|!8%sd~wC zaz_B&3(}+PyHq)P5Y!vTjVClLA(mGzODRq{1HfK^z_Xo$kd&D0i~C+grr{i))W{Y7 zVj&8{{sELN@b&caJ3h%;vk)g)AT-Nlri66$F;U{#5v!!aibeJ&>( z^qy;@>NboWj|7O8YJf{*M8G{Cb zpGU}{+nbDgx|&fUiZBD3gDCXDU5-9^F{T+U8MUJ);@cE$jHr&=sk2%k@+GLR4tcIC>f@AL!QI9~Wy-la} z4Q{v$+<`95Hh8Dt8H@$W-Cx%ub?vJsW;9ebSo)XbA2O!6CT2y9^G&ArRal!6kTbcXxMZa1Abl zGr*qv&h&wfby3y8CF!Ww)nKF5?g$Qh0cH`;lX_b_-Wl^YlV4 zraxxA^smgL=7;TPG2fLw7RICF5>~V!2;O!fY@`LR9gnC*!|7H}U;(;YVm5{=V^<3-R813 zh8-Y;9LuO-G!YMKxU5(LKluvd& z<0PEdOl;AtxG*?a@iAGPr7v8l7j2xgs4yzUxQDKsIZBv7bZo?Ltf;}S5;~x^7|H!R zElwcIJAS*VqR??N{(Hg}UBpRHnr&sl6)KFQfDf&}lv#zc<#|ZDIT-a8A)-Zv zu*amCNz@J_TjE6a|I%(q7#N@l{A!oW%bOyUUQ@#+y2TPM9x+fz@YN{JZj`DtpMale zpi1sdzu+NJL=8Cd3m1qm4fi{q39qcj^8>t}@17s(#`Jz|v31wGFGDQuH;g7@k*Wlq zd&;=@Z~?BPEllA9DMXNawZp#j2-ISj27>`N0|A`cW1Kl-Zv2>K{Dx+#I&Tqg1u$kg zhRs&audE2-a2$E6zGR3!4Gtr;$5BemGNWBAXdO;w|K zLHqHUi9rZd2}oC05iB5Nr%YV)S)tV^OKW8{y|8$2+QYem*_8w(kI@p;Sq2|*D55t8 zFsN$=|G~(F)Y}U$xc@TC`IsduP@} z1F~^f?=@edZ%;A1ZKHnuSl;$h?u8kZ!d~&pcY^(v^xU^=(C}MAlmyMH5tADa-_3`) zW^5$`dcJzs4&JT}U5d3?up0Warh0N7)>GtKm_haWb#V9J%z7NRFLN}Nb8nlr=FrwS zd?|g zh@n@+pxeOvkm-fH@zF}8>qzM(yn)N8H-PMi13)u_F}nkCWzz04!_0K*gU3)bwamC0cu-uM^Ww zOZP7(a!-a6DMv&Gc|ewysVVOE(#eFN5leRZPgp1zVT7EMn)KW5+?TW=sK*R<%}}7? zHMW;;D(G<>k!L^}2k0t=yFs!rsC?kprn*M*q;l=CBR_^OQ5_-e+u5M29S3DRf}tTp zgMsH(*R7dZ2U8Q@gWfdBChk^@3G?OMY6b`T>)5ZIPX;H#Q-h1-ojqWk#K6oDmo7hk zWkGkM`BDwmyz6Bbe2U?izz4GEjgCq0+L8;Fs#@<_;EUK&Yjp%hC!mKM-Pl}(hgy*C zlG(%>nZ@~VT`6cl^9HCRSOz)A3t_;$m=c6m*X7MDsZ4E$E|`yaOa;~c(91%<6u8N~ z^CyK)aI*$?d3jNnD}sDmtW}1onBvM(dKV+%*>dX$HX2b7gL|9kJ57z}KxZ94BWj}$5Ld_&^-$chzTpG6LU`^8VR*LgE^d|XkxuG(d5>rX*!dm1uF^0Mao z{vn$D0jQ;qVq0lbr)moL5~p1sEk_gmCm^qvMqn6~`dGmCUki-2ypY-g`#%XPg>GzF z8^w{0ZTR4h>!C`-q~-M7oV2Pc&I24=pQ_A0v-YPE*&U2fB#GS3S{WXuXn7<(ROhQJ zy2F)VD|_@Lfa#O3mJoT4BLP3AQGWy*QCeEq{=O1KW*J}s(HzVW=!)cbB*qZ=3CpIQ+bzr8{<;@Hytl0wU$DM%mY^wHJo3Y3ke-ACVV2lKAk8i z6xBGuf35JY(v8LJHlXA=YBJ@qYBUgMfQn35i``lhbEjB@Vpf+j2asT}_+Wj0yroj= zNV!VtWutsva&ZikFdWOJXlKQr>~+&)K}GGQ`u>(`xhX1GcKiG7??CdPj59&RBt|n4 zeN=Xm_dnZ;!@!EHe7w_zb6atP3w>+S{XOe8U0@`gg1&RG)Q%I z>*p_NAgRFTeh4cKxi$r{5s)ifJn^64YlusM@?Tm*J8I{v$O{C~`~(@IVp;-36%`dZ zQ&mcZfo}F3%f>fp*fJkSl6OE4RSc1GBmFmBfOi(2Q^7MiqpdBx>_txr|mOOnCB-@R)$db4B6KuLHuT!DaU-03QK zK2cKO*RQwFsfKA=AF*t17(=#z(WyE51!pA8J0M=-T+p4m?YAk7T0UzHpa1EYlBU<) zP_CcxTf#uIV7YBh`MD%U3O^<0h-b9jTf}OUedM$;1CK2hV;GaHBRTN~3HXq$a_*j& z$E{t?*+mB1vc__C$})%5q1VTNALFYdxhq=?Wx?QC)OU3#m!cYJi;Io!O_he-bQ7tK&HpV6#?|Nx~z)uu4 z>Ne=8m81(BDQ-Yy%F536TRxaF@~gWA;QnJK)PmRjZ@dwV$~V1M^Fo3GlU+4(B!j)6 z)p0Fv+eK-q(Ym{&sD@i+;Bqnb(?p~AnhkSumQn11~Dp{A)e-ENrzNsvQA;O$1GOa(+3lw*&HJSrj~ zyz847JA^b$WK3jP$JnUwh_Eob`{v48DPmMa=H0o$xVU@UjnA+>#upIPB!7vMi6s;K z4QwQj#H)Nqcvoc?WTsCt8z@cniHAOYAjE)!(XeiKVwvG%&Xi-ShVm>4c(A|@>@CON zNFHQDez`s;KAOO!{&wD@gCYVXuhn7S#n^vBXP6-1;~zt~92{$?Kb`SBxspZd-T3&{ z+JY(DS9$zUm_I|TwWA+}5r~8#6e#x86L_m;!w_D2~1TCDq{l9M#GKi z$9I89Ow1!cDBjWv(@N)B;s+{6!o-p<*<_xPT#jbR`GWu*)_PAyCMd#tz02wz0qF{H z(!AqOH^E47Dt*{YO>PX@t9?H+;S&rvvaV1)E(x6S!lZ`+B;k}K%z*Rm2T*y@o`Be^ z4TFO~^{@L4d{A{+oeQrrk18YsjE|mOj0E(#A_;rSpw&{xi)z>*`M#_B0X}$qmH+|$hsXW!?9>Ti$&_J6J-zP3Pms#L^;O*{rSAt;w?5e5v`7k9xJ=6LK2@ zU&-E@lJ6I*l5cY_3XV{=b_{$ohj!;Vk-j}X65T7=+m`d$eNPk96e1k;Li=o(H59S= zNs`Q;KrpGj&zzYdm)&&C>ta=ar+7+!wAAXv)G|=Hd z-DL0Dr07MW38$#)*E;2luXhVV>3sv=1h`+3-Ty`d4cso}sP^i-?&;u8>_B#LG2>(+ zFJHz#ifD$#wKLZz*p+8Io$Q12k*4Ek*~1>IA0ae4@fbf(K1}VY=qk&MtbX05KuOyKo}gmr6EYOl>J__+JwlCvfzCtFf7|MUVlIQR&W7g}#_nrI8X z>Bby3tKq#cTY;c}knj_Aw(mmVLXRz#Bg7i>;t45OY)M4;Fe+%WVR(3=8`Q<#MUDzd z3R!(<3J)o1E5q6XMM(zDmm{3<81;u|3e4vgxv@}#hax10^7Z9rDH3CLwoKCC-x~TU zjBh{K5Yz-OD=k%*KNuivR6g)AR|bTHcb>D^8`UJ_7)52=Dh6C}SJPSksE? z+bbK^kuQAtsmlEQC^Bsr4UQ|@$ybwB&Y_Izs?Q-BKHxRVG0DBc!<09!qu*&7+i0L) zzH-nq>UOIW4ps^=u6uB^JSu8GP%_+Kc=F_+#2c{tgQ- zDIn9f+Rc3?tUe)9?sKsl4aMcKKej$Gqiz_F)M{?PE`AUUFn)_18gy8fCybp`_!No`N+YLBR%9-kg< zEE1B0{2{ZM6dG7C^c4!S^mn)ag5!Q{#QaD8x|ENVwc^A;4xPfr`Q@(PeSTba&n`;q z%3KZlmB^dKr*#G7X&w%h<;3NI&j4o2G(hLuUeF2#Y2}gQ?4_r7W=XOeKW>=a<0Ctt zJ~yCI#5B`WvS`K5viJENt&Num$C{*4fntv z9FBw3T2@hq^CJ@#>c3^PrO>1Zp+KNO)DT1|iWGQ82V|B@0hm$r#2+}+xWm+#$g29} zmWSJK8JJ6RS{krsEvIWOF$5<2`}?^V!R}#le9?e($U|#X{QAkX|2rf+Y)J8E`IH}U zlrW@mI?tz3FyX$$Xg@8S_zZRvF!v(vrzKyucE&d=Qvd?4Dz$QU9DwU#CdM8%RdGqoR``Wgr3_9Ua|g;v_fP=hW>)@+Kra zQp!^TZjZjyQBam!PF&niC6n-`^Vxjmh@i^i+jWejg}uL@?q~#r2&KAZ&0(SisHA)T zVQ3YyYq1l$i$jy~+)Zor)WN$qGjQc>iL$2I#z1e(Q-S zW1-1ML!5d|p7PaauXxRwAXhf|FxaHTJ~#bUIU-a90gUXoR7Bw_D+MUB$qe0aU})iC zIppj~YGLl=lQNR3zWGn+{^`U=A+G|0tvMJh&rYPAvkij=z-L;VQt3rKKNGZ{*Dh3sgb-w19tN!ni>?#P_b%8EtXcZR_CcA4dX#?-El}uh zpxBYRpBmN%hNB;wDuJ-`_t$uImri&LFnZeB%qQn+0M@(E!IP?reFM?%gWoA9-t03CA}1>5f>H!&Y(+incYtxPs(udgn$i- zMqL6nLN>x=wU6b*G*^PIxJG#K(bLPyubPa&s~^*T9-XJ2wg_ST6QAwv;+&shl<`!# z{MYPq83A*@b|qWufo-HN<=il38zM&YK;AaDp4a2W=|@txsOS=rczJ!zOkaCfq3c)Q z+kd34OZ5wlW43MxSxTCRkci&ai3DNRi4`sETOjU%+k4!R9u`#WaGpa~qU=c;Gg0?<0mdnF z+#H*rr*|Y&Sf8>T+s z1)SFemP?N8OjjI_{X07 z`~>e4KPOJ)%kUXBF=3IzzTtuf4qPuoN`;|P6!Bd(K1*NU5sp&r5fYeWK--f}3a|uZ z!M{x|FUXCWSe#08LlvkjSH1&c>~hC$o^N>`|7QT{;`PztjaKbA48KFVv+5aFnW5$NAz!!AD_w9`zTQpjWF{HlNzclsx z2@p$k=EhUgY0NRX>gd>6j#;oc(IL?g5%FlixpdoN8+yl&&eAxaI%t)r0X&1MDl~|8 zKUUr?D$7HQJ?p&8c_mkA{Kup2{ofw7!;0zVkfVUQU>6^6s$Lg~x*4m+hbig6*pn=- z=RkG``yHWePd$56DwP3Ev^5df-}?)hfrRIsKiGFNgOOiG`i(IHmf9yX<<+SMA^Z6i zo$_Dx3p%UyA6Inhg$v3Te9LugOEqkhi|otGV|C!V;goNEk)Yq08A>Z8)J}|@$HGdp zoJ79&F@|szLp2glPbbuE^lzwu-}ERp*)uY|DhLH%>UPAOVcJ>v|b--N{jglmPXoY z)ml(Ltj!$8XG(}D(9l5>8$yAFLdmS(tGuCuRb}+)lVK+#xDbd=53LxU~9NkiFGA(l@k=aQdVXB5}7N-`5Dl9onP?cZgt%F{I~TaK9B}x~ zs;&IS=$L6I>rC01MJ;vtxrNce%$ z;EYcR_SPa%q_m9l1B$i?Qj>YCsS&maGEFiG^?*99`A-I6B0zbvOiOd7YgY~v2CeT=lC%DKN1xR z_;A0r&OmqFvlBY5!htI+UzT{;@t8JRe<~3M)E;GUO+Fbt;#YJ3O=-wRIly%iRSyy>UcR#*8PyNX(o z&GWT~j81KEn`6+F%EZZzUgk0lJ2!sG;N=?0MuQPTX|uae4LV@Rhm2CJIu8(#J=qZ{ z>qB(ECefW4-1!8ow{IUE#6FDRY%Je&9$b6YU0A+eUjW*7_I57XKc6mEAS>``w%hpv z+`($m?T|Lhmcu`I8Hv(goou{N-^;bS<4t3_dZ>*&mtwllADu`ewKzm5vbxT-mPCkm zYA^LrMo|*dh~8n=UBU^73ZW2VEXtTPql=g(V%N!xOZUcxcE3sN!)GyKc$1X9Z4UbN zQM>=`hCqU2?-{cvclKuwx=H|a|5eFmPN zox2f)XrPU18oajv-ld`1Y3o44?{p7v)3P*_ghSk`1)kP}79an-X!>Hh z{axh#$j6>^QC*s7v6lmErq)f|0rau{#k#DAb8vj9|LgnXo%9BjnSdmviSBd*l4c>}QXWJWfVL^8MtXE6Uib?82QUuNm_UJ_d|R zAG}H-XJKX^<;YfR(^h^{rna>3gQ%UUGryi=3(zfj*6zb$L7(pAL)AI>8!@v`_#Eg`(U%^qVc zEfQw+fL+)D=23hp3L7e%XekbLTyW#Q3{nl5St~V}Zgr@3?F!CF@`xvV)%m2%AYF;W zyp=XOVRjP0@JqKpiaTpBymPE@KzS`(TC;|l0ksvV-U$f3x;_6O&d|ek3^S(Sx^~Bh z`r3G6t9sx+Yb@{J{pQnC3qZBnt0u&?#(OraytXyR-|guS=N#|FUrjvD0V$yAq9{Ih zju$9cKyn&yqC^Q2WVq+7a7$1iP;CDisirKIP2LOy8NTYV*j@k1c zyAJxhs2rcsh3MgcHC-T8T}`RFoRGN5&00|^eX$Y%)|hnfZ31R&92sJQbkkT?vun1m zy(w_X-BxKfS!82}d1qwD)&sPlT_?GDiT22)nVs2x!2B91Mrdq>3wMqzu#wsPy+HIIYC`TZfS^BN~omgn!!WR+t^CwpI< zp4wxbbj*2G{kX$XG=U`U-GEiMJ2YIyl(D%ggnX9m5rl{39QOOQHO-oz*jG|MiKR4x zL!8mV`_;Ty;9mc}-BItW7l(?iinmV4G3{Y8Usgp<`_etiQ6CK*5fVcfx4P5MOhv@- zr2OvS?K6B>ZT-Lk5;BolMGCt;FA{C;uZG$xGoOA>)iz%qbnZvEC12fx2~s#>I$ne- z1kFC)8Q#$+@rk844rXSM`+p@@@cL2jBzB9$eR;u22tFtVdU$z~cJx$d`1dk5ZFKx7 zHPn+4HK(P}S9m&m^=`=Ks+4=8MYhXDf}SZT9X|ObUi8w7>qoA# z-kR+uKQVn@m|^iZqio_7WYv!BH=OmZ=d;<{H|Aq0>UFU~ZWt5ZS1=Q{twWL3kI}D# z>GUS)_|%aG#xpm71-i_U$XC8dfAFO8?n`sZXZAQ3e;>AbX2b6G%D0WKbCvh}iHpqw zFGZ0J{>TP!uYS8&>jp_sA3a~2{T=rSg>$dCxi1!%<)M5Y!Sp_^3y{XCC5xjBDvfnI zJ@*x_tmkeQAEga!)Y8XI-m_8RgbjaNhR$>lRxu1hT>CEI<#G69583xukVwVThs1py ze8edSC5MF$;nZSTS*H(sor>!{C-yQniBL@D4r~3K4)wf~CCLwiWiF{6u7)QM^iE(( z9`m+-gfD`Fb8nq~W>^}&@LB53N4w%zJ%P$cCE1R*WIa7KjoA0!IL|ly5&ZSH>N*+__ei@Blh?Xk63KT)4BMoF zfmaGY2dyTA&g}+biADl?NZ3?Fmn2+dSdCiH4u;mL<+3|M8noSuoEeWP_@x7z-PF_^ zmPc%nXLq@j)JXxgc@}A=(4sF%Q_-(s)2O4oF<$;{G5+R)lbQsXt$-}POP z8lPE)OI0mutN<`*^~AcGaw>IIVSe~)V{g&?_tq5gt6CbuS6UkQYljKl;SVxh*i1vw z@-^=mW<>o;4CJk&UzYAqsJ5C~_wuN)c^WW?S+pq$IDgSn`hl1g0Q|56QW59uSHAy= zfM(2ndBL3yEgBBKdimec) z-rrxw5L;`cy(|RolQ~*ovOJvOLb@)H)vBWDs`YP4sfG9JB9A2Td7eDTDf0hhH3DjL ze63~BR}FrO_V&oTQHIv=f&uIO|tuEOO+qjY~AoTv)=kL@g8VoHB%>hTo$!Ggcf-~ilf+C zxEWsDlk2O=yv%}=rp%1_O=aPEez$zw4tz=`NbLKC&Np`oJK3Wfg?-#%4%yzQ)06)F zBUD<1srjvu9$O)Xpp9tV=t%qmu0k)I_=<@-6k+>EzXQI+$RUIB0rbEzV5P*Y1-}CV zXKQ<0ZDX_x<}&wPX1hLZYX^q@?>}iF0^48c1v<;QFH8EmXK{urc%^gM_RMqi=Qwm+-Qx9Rb8q-MvOEO-=W5P^QaN@~CA{1=O}5hDMBfkB~JS ze&s3}kWFjh0&6ZF0@W54aTM~|0MjRxW~dog^<}cV)3se86ulQNv@9NHJ8~ZPzDK&P zy%u%a8vxWsTP>dxr1U3H&ex;f%j{YDZ@&tH;IO*BanBfC4P9v}YZNZLP*4B>$dX=Z(C=!v zKSso~ynM+J=F*+dZN$NG8rw&LN`J-MJsoKdcWv-i8r(QP=A z@DE?VR!jfK$K&F)-%wm@HSAUlr9Z7zheplV_fy_4l{2?Tqoj6rFz*cB*)F2>Pn=6- ze{Uxb2xrdfrFi905Psh(&oLM$bj7d7!vxWN!cdkn|Ieek!(IzMSDkIOV~Vjob`0<4 z90-DHbsF5$xLA(o{n=@!gL(u|bcJ`&=@+C z6=l1T9b~!T;n+W+MD{QS?anhBDL66FW^yIWaUIz2kqmx2N2ir-eusq>WsQVOPfu4f zIA6DSPP8x){KCx$d?4aT?_61^u+ieX^R+l;o;}l9e_UBleEI_}hmqXRUH&s|4B_U7 zx|up(@9x>=FN(1_l(rLyIyGSkf@UyH3C$JPi5^Ljpv8EPx?Itg$~duo5DS?tUfD#*@w33UC`XC;Hxd|=qsSh#p81K`S|(Hn;grMXPg<#vhie2yh|zRgU0(C*CxKg_b7K<_+s z*WlkpAtV+S1`sWoY`H^=+OcVl?cOC28Zz@B84ei~xuwf6h*NXjoS zzt24_FC}L}GAA2D=W8wsoJmUgUtMl|SEo+($^4Jx_thQ=JoY_FGWEv9Y)Kp!YRsDZ z-41+XtB==B#YT*Mj*nz{R}}2d+>WVncnE_CxOkG$%$)>OhR5WlNbG60pcRlD1YgMx zz>f#3`nOP%ZH+`l2U<)`TYLkW0u$f4@frXb^c2oh!0)N6*M@?qpUf6*EOj$qzmQmP zl>{}lZPKGgqv<^!P$!S9Z1Z~jK_`MGkdnNj4!j+Y04 zz^GBxgY>4BW|uLn?tq?Y1l~u>}slbE7-|%6`fPs!=}DF z-QVQzk{!U;)*aK2BQA-3N26L?AZowcu??*(C`awPmG;#{e-xZ^|9IQPV_I~4RW)x` zeBs+K6|xvcsYy=K3yeG280+164Ysr_1qy7`*m16@OWtQCtu`a!{=Sqhq zkn*aI9TI(`Zc8+Y`O~M`ArUn?3(ce96Up+EGuVKbJ4$EAxq^x>e;h8;&8sKT|8BC2 zUrSD$^=*yM3k=M9+7pl@osKC1hl0C%WrW2=lS_H|WCjyuibONvvdf75x&*(O_F0+9 z#|r&&JaU%cv3JnJYgLV@{fN2D1wH9P%-d+1?+xnHSyF1gCV-OQ>yx_&qrRlv_ z$CXCYE-1j+_nj+=@!W&Q?lk}LJn#M6&R*NYr1>{y+8$akdqAXW%Y7yt8p zs*#)d_nIns^;&tUwU~n1nxT=2p1y|1RNiqlwYeQCY^v)W-1y3_i&cAA-Rw`b!<%Dc z%;jIy?(7D3_ZoCHh$B^3G0&*7&7MT|GgpErqGrrfGxY{-HBnm0)*bjoik=735Z@uV z!leqX8E_N)gS&nH3!!G(y=k<(dIYi)3VOj(#*$0~hy)eeI)^2Svh3#3VZS$ea%2_H zz{CPlkGeYo5EfCetZI^x*&K?iV z-e2y8vK%iX{Bq^|Oi|;HHhMTPy20aAv>@0ZB{XPZnqI&pY5i;4M?4@u3eKaQNFd#V1jE;&E)^))}_-_EPMyIdk38uNUS(DhgsNC zku-xw?IQp{rY>+3-+o*syAQnPyL{5S37REvk%m6xP;RzidVM~2X}j+x%0-yhs{4M} z(CbIqehxUeNjk5sbwLUxc5Mzn8O#3MFfI{9j zjkPU8yI+F}dOQCoi(&NnS8*W+xH7BL2=+YcT*}_IY}g4~EtLCe`iLTnzNFA38}8jR z$x0ChrOB~pIa`N!d)#T(s{aImLM>(6)fO&U*$UfE*W$C|`u)l~FWN;HQ0G3|{Pg6b z5nc^|OvrwW>B}>-wcU1dEuIyWL<@%)@Zz;lpq2(|sQW{_G$txMUj=R+YTKWBZueiO z5pq`wlmkVh8kaJCy|-|OiMm~fl!Hzt>po1`)iF0u6kscJr}d#6R0D&7;~ys)7aPdI zLycYU`|f)f$jVD7kphgZD#>u)RFF~#Tm95Vnh09{-9{2~p4vGIj2=FpP(?{r#fh}W zlxV4w|GLkt2n8koCN3ywho{eE+P&L9`1wy_58L%u*cBG$ifs@TOx@pBQ+ zq!>%mb*U|~x=-}dZuMTV%rfx|4oszEZ0Qo-Cesr`9+avk-lN3HC z6oDtQi=>xYW!f-dZRv#yO4IhQoDAJK$+X$AgVH3&^X<7X;Y^`K??s*{a{eTG7rsYYe=(6)WdUA+#2=#v&TCR2kAh}m?rcZc z!Ka*JJ3>u)-JZFW(TLn-Ij|!b;`r6RLB z5Ux1%Vkl*Om-u22Z9h4*sMc-^UoN8~?n^tFo{KaWT~~mZBulaPw`7a4&63GQrOYoM zl5Y`>0@i&)9Az3U)>HT+ZH4s*R*i&dV$WoApyk3GqRIL_JDkt59+46?Xb7~8F3+_= zo~=$#J5=6^Jn{E4H3<7m+gHWeZ>GLWJ3i{3gS;+R+>ht_w}}L>mTkG*loyjbZVwhK z42w$C|Lbe8tQATB9uwx{j1BR?1`EwZ_5bdMAylc&aA4F@~2Vagl7$HTjCz_bMUy17}0$E7LR0S}yS1e3F^A%&0}qSODpgF>FRD^P<)-C>@!zPz;((tWpS- z$&0QL6_Rqryd3(;xmh9X?EYq3mF>CQO->rGC^3E*fQRDZkoXWQo}#Kg+6?mqFeqY; zpWFO190ReDLn8A3`s@E#$niL=3lRz#ocAFXaMHu16Tkzsjhc{Z#|4B=aO_J5D!P0l z0h^rwd(2YJ5*G_?e{66Nu>11S!ZMCXdgsLjc{$^f8_&HiT(4K7+h5GU1~XT=jU zp+f(A!3Q1ajEwodIc;MSm0w|^ci%CEy2eM$;(iRo(`I)+0B%jwSv=p1mD#{J&`P>& zq-u|qmsx0N(>Wx~sT_JTFltYx;e>)73ENY(mB%fQ7cb8vEJ&bmjHEZ9<$k9RVx<=E z!al>w!9hb+rp_D3A_;=%R+S{FiURTiS@*fAFMK>(SruydDPn>SJX=>En%-B$Kr#U5 zi)T`$KOtB?<6lSvgprmVXM1Q>4YEtSRFDAKPOme79&d5F0ih*53>!wJab>l45A;9| z`sDdkaWfwO+r9ThVMoXQ$&9lUcs44pbmsQ}Mi#{jm;UaBk>Iu`7m2#Ln)k-l;o~0n z4VedP2?bfVQWyh_TfhMTQpNz?cUq-u!)A#A5L0L{beG8{gCvd*!$s#woH2GHFi-US0C`l5z-^qxCZ4oJU&1bTcQFBGQ`G*AJh6D2{%Ve)pqQ~H zM1CS0z-Vdpxs`ycH^_KPypw-miD{!V*s~Dj^?@;Z%nIA#csvoU%<7vM>S+LBF)f_7j(nP1@sst1RrbE z8m-y9sIbR;k=l1^(pD_U{G7Ge721#Hqop?%Wva0ClC^Ax*NxQ9_UmI-xBjS&%o}ZO zUCF+0UQT;I5i!6Al!dzQ-wY$FBRL!l%G{<6i2Ec5y`niizx#6611-0 zFTRzMp-Jc~XNWn^RvZqoS=UnThclIQGz6&_RD{K+3kTSSz3x^jgOkGB#m?4mXuh%A z4!w*9*@k@x@_2){!{07!7QFlv$b1D7*+)E0F5xviv@@pHq~=2;iP~Y+m6OM!Zc)rf}p6ck&n`c8F8fE{yHGa58p3 zY3=D4l#qk>lTmTo~uzsV1>q-tF&bg65;V?AN{` zjXQ`QPtJiE&JLK6^TQI(7!8fx_vw^1*N5xOY!38{32k)8N}R>8+zw;aBl$M6g0>2h zVC~Q9U4a96Snnz^kuN5n(M(*;P_H&LCBa_!gYcbpmvX?TK(XRd#=YPl1yO|SS5z>} z(|s$_akDW*gUdoe*4iTj5C!Ki59{YAqFuJ_(G9+L5fgzoFLZcWhYG4;TPd&QPlWs5 z(<$D9o%j9^J1E2+L)D+%`I35JP{U3S*)Q zoQN9?8xAhdE-0Wg`ekj6u`_lQPRr)qeD!c zcjl4p>v2iB*efGYoYV0S4h;EpR#N?U%M#>oxA4T4aDtjST?sVNh(|rGp-;@dZG60#`Hij=-;AbH%F&lkb^U)iKdi&Ywh!5inWL7noVbSdKW>aW z?$$Z{*uX3bXY;1%$GlmC>HX9K?H+_%;-WBrCWilWX9%2sopH!bnRV){O$|k7`{aE6 zU*TXa%Ow4qRsJi%|NNE@`m62f|G9+oe?RYESM&dWaOvrF=EE9B0}k>S6y!%nLP5Mj I)F|-(0HaWQ#Q*>R literal 0 HcmV?d00001 diff --git a/public/images/guide/app-user-cmd/app_cmd_example.png b/public/images/guide/app-user-cmd/app_cmd_example.png new file mode 100644 index 0000000000000000000000000000000000000000..c48bbc25938025d0efa81d19da2391e45d5a53a4 GIT binary patch literal 173919 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�y;H*c#3IgfHi#}bq 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 literal 0 HcmV?d00001 From bcc06586bce81c7833cf87dd6be12d823a9fec7c Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 19:37:37 +0200 Subject: [PATCH 14/62] update custom bot guide to add intent --- content/docs/Other/CustomBot.mdx | 39 +++++++++++------- public/images/guide/cb-setup/copy-token.png | Bin 0 -> 24328 bytes public/images/guide/cb-setup/inv-your-bot.png | Bin 0 -> 15228 bytes .../images/guide/cb-setup/name-your-app.png | Bin 0 -> 54414 bytes .../images/guide/cb-setup/nav-to-bot-cat.png | Bin 0 -> 15327 bytes public/images/guide/cb-setup/nav-to-prem1.png | Bin 0 -> 192428 bytes public/images/guide/cb-setup/nav-to-prem2.png | Bin 0 -> 129976 bytes public/images/guide/cb-setup/new-app.png | Bin 0 -> 39546 bytes public/images/guide/cb-setup/paste-token.png | Bin 0 -> 13881 bytes public/images/guide/cb-setup/reset-token.png | Bin 0 -> 24644 bytes public/images/guide/cb-setup/save-btn.png | Bin 0 -> 17615 bytes .../images/guide/cb-setup/setup-intents.png | Bin 0 -> 127990 bytes 12 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 public/images/guide/cb-setup/copy-token.png create mode 100644 public/images/guide/cb-setup/inv-your-bot.png create mode 100644 public/images/guide/cb-setup/name-your-app.png create mode 100644 public/images/guide/cb-setup/nav-to-bot-cat.png create mode 100644 public/images/guide/cb-setup/nav-to-prem1.png create mode 100644 public/images/guide/cb-setup/nav-to-prem2.png create mode 100644 public/images/guide/cb-setup/new-app.png create mode 100644 public/images/guide/cb-setup/paste-token.png create mode 100644 public/images/guide/cb-setup/reset-token.png create mode 100644 public/images/guide/cb-setup/save-btn.png create mode 100644 public/images/guide/cb-setup/setup-intents.png diff --git a/content/docs/Other/CustomBot.mdx b/content/docs/Other/CustomBot.mdx index 98ba4847..e2c06257 100644 --- a/content/docs/Other/CustomBot.mdx +++ b/content/docs/Other/CustomBot.mdx @@ -16,54 +16,61 @@ Go to the [Discord Developer Portal](https://discord.com/developers/applications Click the "New Application" button. -![Create a new application](https://i.imgur.com/kA8EKS7.png) +![Create a new application](/images/guide/cb-setup/new-app.png) ### 3. Name Your Application Enter a name for your bot application and click the "Create" button. This name is what your bot will be called on Discord. -![Enter a name and press the create button](https://i.imgur.com/46zlT4y.png) +![Enter a name and press the create button](/images/guide/cb-setup/name-your-app.png) ### 4. Navigate to the Bot Section In the left-hand menu, click on the "Bot" section. -![Go to section bot](https://i.imgur.com/xUCbccq.png) +![Go to section bot](/images/guide/cb-setup/nav-to-bot-cat.png) -### 5. Generate a Bot Token +### 5. Setup the needed intents for your use case +* If you use `On User Message/Poll Updates` Triggers or using message content/attachment/embeds/polls from other users messages : Enable Message Intent Content. +* If you use `Join/Leave Member/Server Boost` Trigger or Member-cached functions like `$usersWithRole` or Cache All Members for Tier 5: Enable Server Members Intent. +* If you use `$status`/`$membersWithStatus` functions in your codes, enable Presence Intent. +![](/images/guide/cb-setup/setup-intents.png) + +### 6. Generate a Bot Token Click the "Reset Token" button. This will generate a new, valid token for your bot. **Keep this token secure! Do not share it with anyone!** -![](https://i.imgur.com/GbWfwyy.png) +![](/images/guide/cb-setup/reset-token.png) -### 6. Copy the Token +### 7. Copy the Token Click the "Copy" button next to the token to copy it to your clipboard. -![](https://i.imgur.com/pHYqcIT.png) +![](/images/guide/cb-setup/copy-token.png) -### 7. Access the CCommandBot Dashboard +### 8. Navigate to Premium Section of your server dashboard Go to the [Dashboard](https://ccommandbot.com/dashboard) and select the server where you want to use your premium features. -![](https://i.imgur.com/Ostshet.png) +![](/images/guide/cb-setup/nav-to-prem1.png) -![](https://i.imgur.com/fQXdiT3.png) +![](/images/guide/cb-setup/nav-to-prem2.png) -### 8. Paste the Token and Save +### 9. Paste the Token and Save Paste the copied token into the "Token" input field and click the "Save" button. -![](https://i.imgur.com/2FAuEKp.png) +![](/images/guide/cb-setup/paste-token.png) +![](/images/guide/cb-setup/save-btn.png) -### 9. Invite Your Bot to Your Server +### 10. Invite Your Bot to Your Server Click on the "Invite your bot" button. This will take you to a Discord authorization page where you can select the server you want to add your bot to. **Make sure you have the "Manage Server" permission in the server you're inviting the bot to.** -![](https://i.imgur.com/zkjCUvB.png) +![](/images/guide/cb-setup/inv-your-bot.png) -### 10. All Done! +### 11. All Done! You're finished! Wait a few minutes for your bot to come online. :tada: -**Important:** Make sure the main CCommandBot remains in your server. Removing the main bot will prevent you from accessing the dashboard and managing your custom bot. \ No newline at end of file +**Important:** Make sure the main `Custom Command` bot remains in your server. Removing the main bot will prevent you from accessing the dashboard and managing your custom bot. diff --git a/public/images/guide/cb-setup/copy-token.png b/public/images/guide/cb-setup/copy-token.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6a7ccab764484e9f54b506ce3683777716c87d GIT binary patch literal 24328 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 literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/name-your-app.png b/public/images/guide/cb-setup/name-your-app.png new file mode 100644 index 0000000000000000000000000000000000000000..a381a44796f17c01680d2c349b436f2843af11c5 GIT binary patch literal 54414 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 literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/nav-to-bot-cat.png b/public/images/guide/cb-setup/nav-to-bot-cat.png new file mode 100644 index 0000000000000000000000000000000000000000..eef7eb12a1fbe3dcf4c95b52170662d1b603ca7b GIT binary patch literal 15327 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

rH3u*#<;+H& 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 Ge*O=vDKzH* literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/nav-to-prem1.png b/public/images/guide/cb-setup/nav-to-prem1.png new file mode 100644 index 0000000000000000000000000000000000000000..395510bf2c6e3ea91161e3b4127c33955ca7b64d GIT binary patch literal 192428 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
    MTxowBO%zgLH9&W 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

    P0a)GlcoOwH| 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 KIbRX#|9=3VNnd&Z literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/new-app.png b/public/images/guide/cb-setup/new-app.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1df61d6d6cd56e2f9c6ae195e6fb0d3d1110f0 GIT binary patch literal 39546 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 literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/reset-token.png b/public/images/guide/cb-setup/reset-token.png new file mode 100644 index 0000000000000000000000000000000000000000..18751ba11c22a49e0186fe7da21a22a6c6524631 GIT binary patch literal 24644 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 Iaqr3h0cRNZ1poj5 literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/save-btn.png b/public/images/guide/cb-setup/save-btn.png new file mode 100644 index 0000000000000000000000000000000000000000..647be4b2f4b6ee1fcd2e78c52298ba72b812fa99 GIT binary patch literal 17615 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 Date: Sat, 8 Aug 2026 19:40:22 +0200 Subject: [PATCH 15/62] document needed intent for custom bot for triggers --- content/docs/Trigger/joinorleave.mdx | 6 ++++++ content/docs/Trigger/poll.mdx | 8 +++++++- content/docs/Trigger/serverboost.mdx | 5 +++++ content/docs/Trigger/word.mdx | 7 ++++++- content/docs/Trigger/word_new.mdx | 5 +++++ 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/content/docs/Trigger/joinorleave.mdx b/content/docs/Trigger/joinorleave.mdx index f4013399..dea8d993 100644 --- a/content/docs/Trigger/joinorleave.mdx +++ b/content/docs/Trigger/joinorleave.mdx @@ -46,3 +46,9 @@ For member joins/leaves you can use `!!emit` command to trigger the On Join/Leav Hello Member! Welcome to our server. + + + + +For Tier 3+, This trigger require `Server Members Intent` enabled for your custom bot + \ No newline at end of file diff --git a/content/docs/Trigger/poll.mdx b/content/docs/Trigger/poll.mdx index f87ca61c..7e27d2fa 100644 --- a/content/docs/Trigger/poll.mdx +++ b/content/docs/Trigger/poll.mdx @@ -18,4 +18,10 @@ To make a command to trigger when a poll ends. ![](https://i.imgur.com/gWLjPrS.png) ### Output -![](https://i.imgur.com/4SbvPJL.png) \ No newline at end of file +![](https://i.imgur.com/4SbvPJL.png) + + + + +For Tier 3+, This trigger require `Message Content Intent` enabled for your custom bot + \ No newline at end of file diff --git a/content/docs/Trigger/serverboost.mdx b/content/docs/Trigger/serverboost.mdx index 2748ef74..161d015c 100644 --- a/content/docs/Trigger/serverboost.mdx +++ b/content/docs/Trigger/serverboost.mdx @@ -13,3 +13,8 @@ Triggers when user boosts your server. ## User unboost the server Triggers when user unboosts your server. + + + +For Tier 3+, This trigger require `Server Members Intent` enabled for your custom bot + \ No newline at end of file diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index e1ece02b..0b564fd0 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -6,7 +6,6 @@ title: "Word Trigger" This trigger is depreciated, consider using then new 'On User Message' trigger, [Learn more](./word_new.mdx). - Word commands, also known as message commands are executed when the bot receives a text message. ## Basic word command @@ -363,3 +362,9 @@ let's try it out: ![](https://i.imgur.com/KZBeAVT.png) Yay! works well. */} + + +For Tier 3+, This trigger require `Message Content Intent` enabled for your custom bot + + + diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index 99e69507..5824197a 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -491,3 +491,8 @@ Choose the simplest option that matches what you are trying to detect. Regex sho For normal text matching, prefer **Starts with**, **Ends with**, or **Contains**. Use **Advanced (Regex)** when you need more complex patterns, and use the specialized message types when you want to detect Discord-specific message features. + + + +For Tier 3+, This trigger require `Message Content Intent` enabled for your custom bot + \ No newline at end of file From 550589bee770b86cf73af96dd35f01f8aa610487 Mon Sep 17 00:00:00 2001 From: zerofoil <175196963+zerofoil@users.noreply.github.com> Date: Tue, 4 Aug 2026 15:28:05 +0200 Subject: [PATCH 16/62] hi --- README.md | 49 ++---- app/(docs)/[[...slug]]/page.tsx | 13 +- app/global.css | 25 ++- components/arg.tsx | 108 +++++++------ components/styles/arg.css | 84 ++++++++++ components/ui/button.tsx | 103 ++++++++++++ content/docs/(functions)/Bot/botOwnerID.mdx | 10 +- content/docs/(functions)/Bot/botPing.mdx | 2 +- content/docs/(functions)/Bot/botTyping.mdx | 2 +- content/docs/(functions)/Bot/botVerified.mdx | 2 +- content/docs/(functions)/Bot/botVersion.mdx | 2 +- content/docs/(functions)/Bot/cpu.mdx | 2 +- .../docs/(functions)/Bot/executionTime.mdx | 2 +- .../docs/(functions)/Bot/getBotActivity.mdx | 2 +- content/docs/(functions)/Bot/getBotInvite.mdx | 2 +- content/docs/(functions)/Bot/maxRam.mdx | 2 +- .../docs/(functions)/Bot/setBotActivity.mdx | 4 +- .../Channel/blackListChannelIDs.mdx | 6 +- .../Channel/cacheChannelMessages.mdx | 6 +- .../Channel/channelPermissionsFor.mdx | 2 +- .../docs/(functions)/Channel/channelTopic.mdx | 6 +- .../docs/(functions)/Channel/cloneChannel.mdx | 8 +- .../docs/(functions)/Channel/closeTicket.mdx | 2 +- .../(functions)/Channel/createChannel.mdx | 4 +- .../docs/(functions)/Channel/createForum.mdx | 4 +- .../docs/(functions)/Channel/editForum.mdx | 6 +- .../Channel/eventChannelParent.mdx | 4 +- .../(functions)/Channel/findServerChannel.mdx | 2 +- .../Channel/getChannelMessages.mdx | 2 +- .../Channel/getChannelSlowmode.mdx | 2 +- .../(functions)/Channel/latestMessage.mdx | 2 +- .../(functions)/Channel/mentionChannel.mdx | 6 +- .../docs/(functions)/Channel/newTicket.mdx | 2 +- .../(functions)/Channel/removeContains.mdx | 4 +- .../(functions)/Channel/serverChannels.mdx | 2 +- .../(functions)/Channel/setChannelTopic.mdx | 4 +- content/docs/(functions)/Channel/slowmode.mdx | 4 +- .../(functions)/Channel/transcriptChannel.mdx | 4 +- content/docs/(functions)/Channel/vcBefore.mdx | 2 +- .../(functions)/Channel/voiceChannelID.mdx | 2 +- .../(functions)/Cooldown/channelCooldown.mdx | 2 +- .../(functions)/Cooldown/clearCoolDown.mdx | 2 +- .../docs/(functions)/Cooldown/cooldown.mdx | 2 +- .../(functions)/Cooldown/getCooldownTime.mdx | 2 +- .../(functions)/Cooldown/serverCooldown.mdx | 2 +- content/docs/(functions)/Date/dateToTime.mdx | 2 +- .../(functions)/Date/memberJoinedCode.mdx | 2 +- content/docs/(functions)/Date/minute.mdx | 2 +- content/docs/(functions)/Date/parseTime.mdx | 2 +- content/docs/(functions)/Date/timeToDate.mdx | 2 +- content/docs/(functions)/Date/upvoteTime.mdx | 2 +- content/docs/(functions)/Date/year.mdx | 2 +- .../docs/(functions)/Events/eventCreate.mdx | 4 +- .../docs/(functions)/Events/eventDelete.mdx | 4 +- content/docs/(functions)/Events/eventEdit.mdx | 4 +- content/docs/(functions)/Events/eventEnd.mdx | 4 +- .../docs/(functions)/Events/eventExists.mdx | 2 +- .../docs/(functions)/Events/eventStart.mdx | 4 +- .../docs/(functions)/Events/getEventInfo.mdx | 2 +- .../docs/(functions)/Events/getEventUsers.mdx | 2 +- .../docs/(functions)/Events/guildEvents.mdx | 2 +- .../docs/(functions)/Image/imageBorderRad.mdx | 4 +- .../docs/(functions)/Image/imageCreate.mdx | 2 +- content/docs/(functions)/Image/imageCrop.mdx | 2 +- content/docs/(functions)/Image/imageDraw.mdx | 2 +- .../docs/(functions)/Image/imageDrawBack.mdx | 2 +- content/docs/(functions)/Image/imageFill.mdx | 2 +- .../docs/(functions)/Image/imageHeight.mdx | 6 +- .../(functions)/Image/imageLineHeight.mdx | 4 +- .../docs/(functions)/Image/imageLoadEmoji.mdx | 2 +- .../(functions)/Image/imageLoadFromURL.mdx | 2 +- .../docs/(functions)/Image/imageOutput.mdx | 6 +- .../(functions)/Image/imagePositionBase.mdx | 2 +- .../(functions)/Image/imageSetOpacity.mdx | 6 +- .../docs/(functions)/Image/imageStroke.mdx | 2 +- .../(functions)/Image/imageStrokeWidth.mdx | 2 +- .../docs/(functions)/Image/imageTextAlign.mdx | 4 +- .../(functions)/Image/imageTextBaseline.mdx | 2 +- .../docs/(functions)/Image/imageTextColor.mdx | 6 +- .../docs/(functions)/Image/imageTextFill.mdx | 2 +- .../(functions)/Image/imageTextFillColor.mdx | 6 +- .../docs/(functions)/Image/imageTextSize.mdx | 4 +- .../(functions)/Image/imageTextStroke.mdx | 4 +- .../Image/imageTextStrokeColor.mdx | 6 +- .../(functions)/Image/imageTextWeight.mdx | 4 +- .../docs/(functions)/Image/imageUseFont.mdx | 2 +- content/docs/(functions)/Image/imageWidth.mdx | 6 +- .../(functions)/Interaction/commandName.mdx | 4 +- .../(functions)/Interaction/getOption.mdx | 2 +- .../Interaction/interactionDelete.mdx | 4 +- .../Interaction/interactionEdit.mdx | 2 +- .../(functions)/Interaction/interactionId.mdx | 2 +- .../Interaction/interactionReply.mdx | 2 +- .../docs/(functions)/Member/authorAvatar.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/ban.mdx | 2 +- .../docs/(functions)/Member/blackListIDs.mdx | 2 +- .../docs/(functions)/Member/boostingSince.mdx | 2 +- .../(functions)/Member/changeNickname.mdx | 2 +- .../docs/(functions)/Member/discriminator.mdx | 2 +- .../docs/(functions)/Member/displayName.mdx | 2 +- .../(functions)/Member/eventNewNickname.mdx | 4 +- .../(functions)/Member/eventOldNickname.mdx | 4 +- .../docs/(functions)/Member/findMember.mdx | 2 +- .../docs/(functions)/Member/getUserBadges.mdx | 2 +- .../docs/(functions)/Member/globalName.mdx | 2 +- .../docs/(functions)/Member/hasAnyPerm.mdx | 2 +- .../docs/(functions)/Member/hasAnyRole.mdx | 2 +- content/docs/(functions)/Member/hasPerms.mdx | 2 +- content/docs/(functions)/Member/hasRoles.mdx | 2 +- content/docs/(functions)/Member/isBanned.mdx | 2 +- .../(functions)/Member/isUserDMEnabled.mdx | 2 +- content/docs/(functions)/Member/kick.mdx | 2 +- .../docs/(functions)/Member/memberSearch.mdx | 2 +- .../(functions)/Member/membersWithStatus.mdx | 2 +- content/docs/(functions)/Member/mention.mdx | 2 +- content/docs/(functions)/Member/moveUser.mdx | 2 +- content/docs/(functions)/Member/muteUser.mdx | 2 +- content/docs/(functions)/Member/nickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Member/unban.mdx | 2 +- .../Member/upvoteReferralUserID.mdx | 2 +- content/docs/(functions)/Member/user.mdx | 2 +- .../docs/(functions)/Member/userAvatar.mdx | 2 +- .../docs/(functions)/Member/userBanner.mdx | 2 +- .../(functions)/Member/userConnectedVC.mdx | 2 +- .../docs/(functions)/Member/userExists.mdx | 2 +- content/docs/(functions)/Member/userID.mdx | 2 +- content/docs/(functions)/Member/userPerms.mdx | 2 +- .../docs/(functions)/Member/userReacted.mdx | 2 +- .../docs/(functions)/Member/userRoleColor.mdx | 2 +- content/docs/(functions)/Member/userRoles.mdx | 2 +- content/docs/(functions)/Member/userTag.mdx | 2 +- content/docs/(functions)/Member/username.mdx | 2 +- .../docs/(functions)/Member/usersBanned.mdx | 2 +- .../(functions)/Member/usersInChannel.mdx | 2 +- .../docs/(functions)/Member/usersTyping.mdx | 2 +- .../docs/(functions)/Member/usersWithRole.mdx | 2 +- .../(functions)/Message/addCmdReactions.mdx | 2 +- .../docs/(functions)/Message/argsCheck.mdx | 10 +- .../docs/(functions)/Message/argsCount.mdx | 2 +- .../docs/(functions)/Message/awaitMessage.mdx | 4 +- .../(functions)/Message/clearReactions.mdx | 4 +- .../(functions)/Message/deleteCommand.mdx | 6 +- .../Message/disableChannelMentions.mdx | 4 +- .../Message/disableEveryoneMentions.mdx | 2 +- .../Message/disableRoleMentions.mdx | 4 +- .../docs/(functions)/Message/editEmbed.mdx | 2 +- content/docs/(functions)/Message/editIn.mdx | 4 +- .../docs/(functions)/Message/editMessage.mdx | 2 +- .../Message/editWebhookMessage.mdx | 6 +- content/docs/(functions)/Message/emoji.mdx | 2 +- content/docs/(functions)/Message/emojiID.mdx | 2 +- .../docs/(functions)/Message/emojiName.mdx | 2 +- .../(functions)/Message/emojiToString.mdx | 4 +- .../(functions)/Message/emojisFromMessage.mdx | 10 +- .../Message/enableEveryoneMentions.mdx | 2 +- .../(functions)/Message/forwardMessage.mdx | 2 +- content/docs/(functions)/Message/getEmbed.mdx | 2 +- .../docs/(functions)/Message/getMessage.mdx | 8 +- .../Message/getMessageReactions.mdx | 10 +- .../(functions)/Message/getReactionCount.mdx | 2 +- .../docs/(functions)/Message/getReactions.mdx | 2 +- .../docs/(functions)/Message/hasEmbeds.mdx | 4 +- .../docs/(functions)/Message/hyperlink.mdx | 4 +- content/docs/(functions)/Message/message.mdx | 2 +- .../(functions)/Message/messageAttachment.mdx | 2 +- content/docs/(functions)/Message/msg.mdx | 2 +- .../docs/(functions)/Message/pinMessage.mdx | 6 +- content/docs/(functions)/Message/poll.mdx | 2 +- .../Message/referenceChannelID.mdx | 2 +- content/docs/(functions)/Message/reply.mdx | 6 +- .../Message/sendCrosspostingMessage.mdx | 6 +- .../docs/(functions)/Message/sendMessage.mdx | 2 +- .../docs/(functions)/Message/sendWebhook.mdx | 4 +- .../(functions)/Message/sentMessageID.mdx | 4 +- .../docs/(functions)/Message/unpinMessage.mdx | 6 +- content/docs/(functions)/Random/random.mdx | 2 +- .../(functions)/Random/randomChannelID.mdx | 4 +- .../docs/(functions)/Random/randomMention.mdx | 2 +- .../docs/(functions)/Random/randomRoleID.mdx | 2 +- .../docs/(functions)/Random/randomText.mdx | 2 +- .../(functions)/Random/randomTextBiased.mdx | 2 +- .../docs/(functions)/Random/randomUserID.mdx | 2 +- .../docs/(functions)/Request/httpRequest.mdx | 2 +- .../(functions)/Request/httpRequestHeader.mdx | 2 +- .../(functions)/Request/httpRequestStatus.mdx | 2 +- .../(functions)/Role/blackListRoleIDs.mdx | 2 +- content/docs/(functions)/Role/colorRole.mdx | 4 +- .../docs/(functions)/Role/getRoleColor.mdx | 2 +- content/docs/(functions)/Role/highestRole.mdx | 4 +- content/docs/(functions)/Role/lowestRole.mdx | 4 +- content/docs/(functions)/Role/mentionRole.mdx | 6 +- .../docs/(functions)/Role/modifyUserRoles.mdx | 4 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleIcon.mdx | 8 +- content/docs/(functions)/Role/setRoles.mdx | 4 +- .../Server/createAutomodKeyword.mdx | 4 +- .../docs/(functions)/Server/deleteAutomod.mdx | 4 +- .../docs/(functions)/Server/deleteEmojis.mdx | 4 +- .../(functions)/Server/editAutomodKeyword.mdx | 4 +- .../docs/(functions)/Server/emojiCount.mdx | 2 +- .../docs/(functions)/Server/emojiExists.mdx | 4 +- .../docs/(functions)/Server/getInviteInfo.mdx | 4 +- .../(functions)/Server/getServerInvite.mdx | 2 +- .../(functions)/Server/resolveEmojiID.mdx | 6 +- .../docs/(functions)/Server/securityPause.mdx | 8 +- .../(functions)/Stickers/createSticker.mdx | 4 +- .../(functions)/Stickers/deleteSticker.mdx | 2 +- .../docs/(functions)/Stickers/editSticker.mdx | 4 +- .../(functions)/Stickers/messageStickers.mdx | 2 +- .../(functions)/Stickers/serverStickers.mdx | 2 +- content/docs/(functions)/Stickers/sticker.mdx | 2 +- .../(functions)/Text/Array/arrayClear.mdx | 2 +- .../(functions)/Text/Array/arrayConcat.mdx | 2 +- .../(functions)/Text/Array/arrayCount.mdx | 2 +- .../(functions)/Text/Array/arrayCreate.mdx | 2 +- .../Text/Array/arrayElementCount.mdx | 2 +- .../(functions)/Text/Array/arrayFilter.mdx | 2 +- .../docs/(functions)/Text/Array/arrayGet.mdx | 2 +- .../(functions)/Text/Array/arrayInclude.mdx | 2 +- .../docs/(functions)/Text/Array/arrayJoin.mdx | 2 +- .../(functions)/Text/Array/arrayLength.mdx | 2 +- .../docs/(functions)/Text/Array/arrayLoop.mdx | 2 +- .../docs/(functions)/Text/Array/arrayMap.mdx | 2 +- .../docs/(functions)/Text/Array/arrayPop.mdx | 2 +- .../docs/(functions)/Text/Array/arrayPush.mdx | 2 +- .../(functions)/Text/Array/arrayRemove.mdx | 2 +- .../(functions)/Text/Array/arrayReverse.mdx | 2 +- .../(functions)/Text/Array/arraySearch.mdx | 2 +- .../docs/(functions)/Text/Array/arraySet.mdx | 2 +- .../(functions)/Text/Array/arrayShift.mdx | 2 +- .../(functions)/Text/Array/arrayShuffle.mdx | 2 +- .../(functions)/Text/Array/arraySlice.mdx | 2 +- .../docs/(functions)/Text/Array/arraySort.mdx | 2 +- .../(functions)/Text/Array/arrayUnique.mdx | 2 +- .../(functions)/Text/Array/arrayUnshift.mdx | 2 +- .../(functions)/Text/Components/addMenu.mdx | 4 +- .../Text/Components/awaitButton.mdx | 2 +- .../(functions)/Text/Components/awaitMenu.mdx | 2 +- .../(functions)/Text/Components/button.mdx | 16 +- .../Text/Components/buttonEmoji.mdx | 2 +- .../(functions)/Text/Components/buttonID.mdx | 2 +- .../Text/Components/buttonIsDisabled.mdx | 2 +- .../Text/Components/buttonLabel.mdx | 2 +- .../Text/Components/buttonStyle.mdx | 2 +- .../(functions)/Text/Components/buttonURL.mdx | 2 +- .../Text/Components/disableButtons.mdx | 2 +- .../Text/Components/disableMenu.mdx | 2 +- .../(functions)/Text/Components/editMenu.mdx | 4 +- .../Text/Components/enableButtons.mdx | 2 +- .../Text/Components/enableMenu.mdx | 2 +- .../Text/Components/eventSelected.mdx | 2 +- .../Text/Components/eventTargetID.mdx | 4 +- .../(functions)/Text/Components/menuId.mdx | 2 +- .../Text/Components/removeButton.mdx | 4 +- .../Text/Components/removeEmbed.mdx | 4 +- .../Text/Components/removeMenu.mdx | 2 +- .../Text/Components/selectMenu.mdx | 16 +- .../Text/Condition/checkCondition.mdx | 2 +- .../Text/Condition/conditional.mdx | 2 +- .../docs/(functions)/Text/Condition/else.mdx | 2 +- .../(functions)/Text/Condition/elseif.mdx | 2 +- .../docs/(functions)/Text/Condition/endIf.mdx | 2 +- .../(functions)/Text/Condition/endelseif.mdx | 2 +- .../docs/(functions)/Text/Condition/if.mdx | 4 +- .../(functions)/Text/Embed/attachment.mdx | 2 +- .../docs/(functions)/Text/Embed/example.mdx | 11 +- content/docs/(functions)/Text/Math/abs.mdx | 2 +- content/docs/(functions)/Text/Math/ceil.mdx | 2 +- content/docs/(functions)/Text/Math/floor.mdx | 2 +- .../docs/(functions)/Text/Math/mathMax.mdx | 2 +- .../docs/(functions)/Text/Math/mathMin.mdx | 2 +- .../(functions)/Text/Object/ObjectCreate.mdx | 2 +- .../Text/Object/ObjectIncrease.mdx | 2 +- .../Text/Object/ObjectKeyExists.mdx | 2 +- .../(functions)/Text/Object/ObjectKeys.mdx | 2 +- .../(functions)/Text/Object/ObjectLoop.mdx | 2 +- .../(functions)/Text/Object/ObjectMerge.mdx | 2 +- .../(functions)/Text/Object/ObjectRemove.mdx | 2 +- .../Text/Object/ObjectRenameKey.mdx | 2 +- .../(functions)/Text/Object/ObjectSet.mdx | 2 +- .../(functions)/Text/Object/ObjectValues.mdx | 2 +- .../Text/Object/addObjectProperty.mdx | 2 +- .../(functions)/Text/Object/createObject.mdx | 2 +- .../(functions)/Text/Object/getObjectKeys.mdx | 2 +- .../Text/Object/getObjectProperty.mdx | 2 +- .../(functions)/Text/Regex/regexCheck.mdx | 2 +- .../(functions)/Text/Regex/regexReplace.mdx | 2 +- content/docs/(functions)/Text/buffer.mdx | 4 +- .../docs/(functions)/Text/checkContains.mdx | 2 +- content/docs/(functions)/Text/customEmoji.mdx | 2 +- .../docs/(functions)/Text/filterMessage.mdx | 2 +- .../(functions)/Text/filterMessageWords.mdx | 2 +- content/docs/(functions)/Text/findChars.mdx | 2 +- content/docs/(functions)/Text/findNumbers.mdx | 2 +- .../(functions)/Text/findSpecialChars.mdx | 2 +- content/docs/(functions)/Text/indexOf.mdx | 2 +- .../(functions)/Text/isChannelMention.mdx | 2 +- .../docs/(functions)/Text/isUserMention.mdx | 2 +- .../(functions)/Text/isandhas/isConnected.mdx | 2 +- .../(functions)/Text/isandhas/isStreaming.mdx | 2 +- content/docs/(functions)/Text/mentionType.mdx | 2 +- content/docs/(functions)/Text/mentioned.mdx | 2 +- content/docs/(functions)/Text/numToWord.mdx | 2 +- .../docs/(functions)/Text/numberSeparator.mdx | 2 +- .../(functions)/Text/only/onlyForChannels.mdx | 2 +- .../Text/only/onlyIfMessageContains.mdx | 2 +- content/docs/(functions)/Text/padLeft.mdx | 2 +- content/docs/(functions)/Text/padRight.mdx | 2 +- .../docs/(functions)/Text/stringEndsWith.mdx | 2 +- .../(functions)/Text/stringStartsWith.mdx | 2 +- content/docs/(functions)/Text/textLength.mdx | 2 +- content/docs/(functions)/Text/textShuffle.mdx | 2 +- content/docs/(functions)/Text/textSlice.mdx | 2 +- .../Text/textSplit/removeSplitTextElement.mdx | 2 +- content/docs/(functions)/Text/textTrim.mdx | 2 +- content/docs/(functions)/Text/uri.mdx | 2 +- content/docs/(functions)/Text/void.mdx | 2 +- .../(functions)/Threads/addUsersToThread.mdx | 21 ++- .../(functions)/Threads/archiveThread.mdx | 6 +- .../docs/(functions)/Threads/closePost.mdx | 6 +- .../docs/(functions)/Threads/createPost.mdx | 2 +- .../docs/(functions)/Threads/createThread.mdx | 4 +- .../docs/(functions)/Threads/deletePost.mdx | 4 +- .../docs/(functions)/Threads/deletePosts.mdx | 4 +- content/docs/(functions)/Threads/editPost.mdx | 4 +- content/docs/(functions)/Threads/lockPost.mdx | 6 +- .../docs/(functions)/Threads/lockThread.mdx | 6 +- content/docs/(functions)/Threads/pinPost.mdx | 6 +- .../Threads/removeUsersFromThread.mdx | 6 +- .../(functions)/Timeout/timeoutAction.mdx | 2 +- .../docs/(functions)/Timeout/timeoutBy.mdx | 2 +- .../(functions)/Timeout/timeoutReason.mdx | 2 +- .../(functions)/Timeout/userGetTimeout.mdx | 2 +- .../(functions)/Timeout/userRemoveTimeout.mdx | 2 +- .../(functions)/Timeout/userSetTimeout.mdx | 2 +- .../docs/(functions)/Useful/callFunction.mdx | 2 +- .../docs/(functions)/Useful/commandCode.mdx | 4 +- .../docs/(functions)/Useful/deleteTrigger.mdx | 2 +- .../docs/(functions)/Useful/editTrigger.mdx | 6 +- .../docs/(functions)/Useful/endForEach.mdx | 2 +- .../docs/(functions)/Useful/endFunction.mdx | 4 +- .../docs/(functions)/Useful/endTimeout.mdx | 2 +- content/docs/(functions)/Useful/forEach.mdx | 4 +- content/docs/(functions)/Useful/function.mdx | 2 +- content/docs/(functions)/Useful/getToken.mdx | 4 +- .../docs/(functions)/Useful/getTrigger.mdx | 4 +- .../docs/(functions)/Useful/ignoreErrors.mdx | 2 +- .../(functions)/Useful/includeLibrary.mdx | 2 +- .../docs/(functions)/Useful/jsonRequest.mdx | 4 +- content/docs/(functions)/Useful/return.mdx | 4 +- content/docs/(functions)/Useful/stop.mdx | 2 +- .../docs/(functions)/Useful/triggerExists.mdx | 2 +- .../Variables/increaseChannelVar.mdx | 4 +- .../Variables/increaseServerVar.mdx | 4 +- .../(functions)/Variables/increaseUserVar.mdx | 4 +- .../docs/(functions)/Variables/initVar.mdx | 10 +- .../(functions)/Variables/userVarRank.mdx | 2 +- .../(functions)/Variables/viewChannelVars.mdx | 2 +- .../(functions)/Variables/viewServerVars.mdx | 2 +- .../(functions)/Variables/viewUserVars.mdx | 2 +- content/docs/Changelogs/1.v1.mdx | 1 + content/docs/Changelogs/v1.4.4.mdx | 82 +++++----- .../docs/CodeReferences/ref.expression.mdx | 8 +- .../CodeReferences/ref.imgbuild.position.mdx | 2 +- .../docs/CodeReferences/ref.imgbuild.size.mdx | 8 +- .../CodeReferences/ref.permissions_list.mdx | 2 +- content/docs/CodeReferences/ref.poll_data.mdx | 2 +- .../docs/CodeReferences/ref.time_format.mdx | 2 +- .../docs/CodeReferences/ref.v2_components.mdx | 4 +- content/docs/Contribution_Info/Templating.mdx | 6 +- content/docs/Guide/5.comment.mdx | 4 +- content/docs/Guide/6.variables.mdx | 8 +- content/docs/Guide/7.array.mdx | 2 +- content/docs/Guide/syntax.mdx | 15 +- content/docs/Other/curl.mdx | 2 +- content/docs/Other/syntax.mdx | 10 +- content/docs/Other/useful.mdx | 2 +- content/docs/Trigger/1.triggers.mdx | 4 +- content/docs/Trigger/app_cmd_message.mdx | 4 +- content/docs/Trigger/app_cmd_user.mdx | 2 +- content/docs/Trigger/joinorleave.mdx | 2 +- content/docs/Trigger/roleaddremove.mdx | 2 +- content/docs/Trigger/slash.mdx | 6 +- content/docs/Trigger/upvote.mdx | 2 +- content/docs/Trigger/word.mdx | 4 +- content/docs/Tutorials/2.staff-app.mdx | 6 +- content/docs/Tutorials/3.report.mdx | 8 +- content/docs/Tutorials/4.collect.mdx | 10 +- content/docs/Tutorials/5.confession.mdx | 4 +- content/docs/Tutorials/5.poll.mdx | 2 +- content/docs/index.mdx | 2 - lib/cclang.ts | 148 ++++++++++++++++++ next.config.mjs | 15 +- package.json | 6 + pnpm-lock.yaml | 58 +++++++ source.config.ts | 9 +- 398 files changed, 1154 insertions(+), 758 deletions(-) create mode 100644 components/styles/arg.css create mode 100644 components/ui/button.tsx create mode 100644 lib/cclang.ts diff --git a/README.md b/README.md index 81528147..6adb7ab5 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ For larger changes involving many files, we recommend using your IDE and the dev ### Requirements [Git](https://git-scm.com/install/), -[Node.js](https://nodejs.org/en/download/current) `>=22.18.0` and [pnpm](https://pnpm.io/installation), or [Docker Desktop](https://www.docker.com/products/docker-desktop/) +[Node.js](https://nodejs.org/en/download/current) `>=22.18.0` with [pnpm](https://pnpm.io/installation), or [Docker Desktop](https://www.docker.com/products/docker-desktop/) ### Steps @@ -60,6 +60,16 @@ pnpm dev docker compose up ``` +### Termux + +The default Turbopack does not natively run on Android. You need to download their fixed package: + +```bash +pkg i turbopack +``` + +Restart your app and then continue using the [Node.js](#nodejs) method. + ## Saving Changes After your changes are done, you need to update your fork. @@ -79,40 +89,11 @@ git commit -m "Updated category Member" 3\. Push changes to your fork: ```bash -git push +git push origin ``` -To send these changes for review, open your cloned fork on GitHub and click the `Open Pull Request` button. - -## Where Things Live - -The site runs on [Fumadocs](https://fumadocs.dev) (Next.js), exported as a static build. +To send these changes for review, open your cloned fork on GitHub, and click the `Open Pull Request` button. -| Path | What it is | -| --- | --- | -| `content/docs/` | Every page, as MDX. The URL matches the file path. | -| `content/docs/(functions)/` | Function reference. The `(functions)` folder groups them in the sidebar without appearing in the URL — `Member/kick.mdx` is served at `/Member/kick`. | -| `content/docs/**/meta.json` | Sidebar titles and page ordering for that folder. | -| `components/` | `Badge`, `Arg`, and the Discord message components used in pages. | -| `lib/remark/` | Build-time content rules: cooldown sections, `$function` auto-linking, cached remote images. | -| `data/cooldowns.json` | Drives the generated "Function Cooldown" section on function pages. | - -### Writing a page - -Each page needs a `title` in its frontmatter — it renders as the page heading, so don't repeat it as an `# H1` in the body: - -```mdx ---- -title: "$myFunction" ---- - -What the function does. - -::: is not available — use `` and `` instead: - - -Something worth knowing. - -``` +## Naviagation -Because pages are MDX, a literal `{` or a stray `<` in prose must be escaped as `\{` and `\<`. +All documentation files are stored at `/content/docs`. diff --git a/app/(docs)/[[...slug]]/page.tsx b/app/(docs)/[[...slug]]/page.tsx index 573bf96e..19d0e1fe 100644 --- a/app/(docs)/[[...slug]]/page.tsx +++ b/app/(docs)/[[...slug]]/page.tsx @@ -12,6 +12,8 @@ import { getMDXComponents } from "@/components/mdx"; import type { Metadata } from "next"; import { createRelativeLink } from "fumadocs-ui/mdx"; import { appName, gitConfig, socialImage, appDescription } from "@/lib/shared"; +import { Button } from "@/components/ui/button"; +import { GitHubLogoIcon } from "@radix-ui/react-icons"; export default async function Page(props: PageProps<"/[[...slug]]">) { const params = await props.params; @@ -29,10 +31,13 @@ export default async function Page(props: PageProps<"/[[...slug]]">) {

    body[data-scroll-locked] { - margin-right: 0px !important; - --removed-body-scroll-bar-size: 0px !important; + margin-right: 0px !important; + --removed-body-scroll-bar-size: 0px !important; } -/* - * Discord message blocks. Skyra renders into a shadow root, so only the host - * element is reachable from here — theme colours are handled by the - * `lightTheme` prop in components/discord.tsx instead. - */ discord-messages { - display: block; - margin: 1rem 0; - border-radius: 8px; - overflow: hidden; + display: block; + margin: 1rem 0; + border-radius: 8px; + overflow: hidden; } diff --git a/components/arg.tsx b/components/arg.tsx index 4adba3f7..2aa9a126 100644 --- a/components/arg.tsx +++ b/components/arg.tsx @@ -1,54 +1,58 @@ -/** - * Port of the VuePress `Arg.vue` single-file component. Marks a function - * argument as required (no default) or optional (with its default value), - * with a CSS-only hover tooltip. - */ -export function Arg({ - name = 'Argument', - default: defaultValue = '', - code = false, -}: { - name?: string; - default?: string; - code?: string | boolean; -}) { - const isRequired = defaultValue === ''; - const isCode = code === 'true' || code === true; +import React from "react"; +import "./styles/arg.css"; - return ( - - - - {isRequired ? ( - 'Required Argument' - ) : ( - <> - Optional Argument - - Default:{' '} - {isCode ? {defaultValue} : defaultValue} - - - )} - - - Tooltip - - - - {name} - - ); +export interface ArgProps { + name?: string; + default?: string; + code?: boolean | string; } + +export const Arg: React.FC = ({ + name = "Argument", + default: defaultValue = "", + code = false, +}) => { + const isRequired = defaultValue === ""; + const isCode = code === true || code === "true"; + + return ( +
    +
    +
    + {isRequired ? ( + "Required Argument" + ) : ( + <> + Optional Argument + {isCode ? ( +
    + Default: {defaultValue} +
    + ) : ( +
    Default: {defaultValue}
    + )} + + )} +
    + + Tooltip + + + + + +
    +
    {name}
    +
    + ); +}; + +export default Arg; diff --git a/components/styles/arg.css b/components/styles/arg.css new file mode 100644 index 00000000..c498a089 --- /dev/null +++ b/components/styles/arg.css @@ -0,0 +1,84 @@ +.arg-badge { + display: inline-flex; + vertical-align: middle; + padding: 0 8px; + margin: 0; + align-items: center; + border-radius: 8px; + width: fit-content; + font-size: 12px; + gap: 6px; + font-weight: 600; +} + +.required-false { + background-color: rgba(100, 100, 255, 0.2); + color: rgb(150, 150, 200); + border: 1px solid rgba(100, 100, 255, 0.2); +} + +.required-true { + background-color: rgba(255, 100, 150, 0.2); + color: rgb(200, 100, 150); + border: 1px solid rgba(255, 100, 150, 0.2); +} + +.tooltip { + position: relative; + display: flex; + align-items: center; + cursor: pointer; +} + +.tooltip-text { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + justify-content: center; + font-weight: 600; + visibility: hidden; + border-radius: 8px; + opacity: 0; + position: absolute; + left: -185px; + width: 160px; + padding: 2px 10px; + z-index: 20; + background-color: rgba(255, 255, 255, 0.9); + color: black; + border: 1px solid rgba(150, 150, 150, 0.3); + transition: + opacity 0.3s ease, + visibility 0.2s ease, + transform 0.3s ease-out; + transform: translateX(-10px); + margin: 0; + line-height: 22px; +} + +.tooltip-text div { + line-height: 22px; +} + +html.dark .tooltip-text { + background-color: rgba(0, 0, 0, 0.9); + color: white; +} + +.tooltip:hover .tooltip-text { + visibility: visible; + opacity: 1; + transform: translateX(0px); +} + +@media screen and (max-width: 768px) { + .tooltip-text { + left: -10px; + top: 25px; + transform: translateY(10px); + } + .tooltip:hover .tooltip-text { + transform: translateY(0px); + } +} diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 00000000..9b0549a5 --- /dev/null +++ b/components/ui/button.tsx @@ -0,0 +1,103 @@ +import * as React from 'react'; +import { Slot } from '@radix-ui/react-slot'; +import { cva, type VariantProps } from 'class-variance-authority'; + +const variants = { + primary: 'bg-fd-primary text-fd-primary-foreground hover:bg-fd-primary/80', + outline: 'border hover:bg-fd-accent hover:text-fd-accent-foreground', + ghost: 'hover:bg-fd-accent hover:text-fd-accent-foreground', + secondary: + 'border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground', +} as const; + +export const buttonVariants = cva( + 'inline-flex items-center justify-center gap-1.5 rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring [&_svg]:pointer-events-none [&_svg]:shrink-0', + { + variants: { + variant: variants, + color: variants, + size: { + sm: 'gap-1.5 px-2.5 py-1.5 text-xs [&_svg]:size-3.5', + md: 'px-3 py-2 text-sm [&_svg]:size-4', + icon: 'p-1.5 [&_svg]:size-5', + 'icon-sm': 'p-1.5 [&_svg]:size-4.5', + 'icon-xs': 'p-1 [&_svg]:size-4', + }, + }, + defaultVariants: { + color: 'primary', + size: 'sm', + }, + }, +); + +export type ButtonProps = React.ButtonHTMLAttributes & + React.AnchorHTMLAttributes & + VariantProps & { + asChild?: boolean; + icon?: React.ReactNode; + leftIcon?: React.ReactNode; + rightIcon?: React.ReactNode; + link?: string; + }; + +export const Button = React.forwardRef( + ( + { + className, + color, + size, + asChild = false, + icon, + leftIcon, + rightIcon, + children, + link, + ...props + }, + ref, + ) => { + const startIcon = icon || leftIcon; + const classes = buttonVariants({ color, size, className }); + + if (asChild) { + return ( + + {children} + + ); + } + + if (link) { + const isExternal = link.startsWith('http://') || link.startsWith('https://'); + + return ( +
    } + target={isExternal ? '_blank' : undefined} + rel={isExternal ? 'noreferrer' : undefined} + {...(props as React.AnchorHTMLAttributes)} + > + {startIcon} + {children} + {rightIcon} + + ); + } + return ( + + ); + }, +); + +Button.displayName = 'Button'; \ No newline at end of file diff --git a/content/docs/(functions)/Bot/botOwnerID.mdx b/content/docs/(functions)/Bot/botOwnerID.mdx index 6c4a96dc..2699eab0 100644 --- a/content/docs/(functions)/Bot/botOwnerID.mdx +++ b/content/docs/(functions)/Bot/botOwnerID.mdx @@ -8,13 +8,13 @@ This function returns the Discord ID of the user(s) who own or manage the bot. ## Usage -```php +```cc $botOwnerID ``` Returns a single ID if there's only one owner, or a comma-separated list of IDs if there are multiple owners (e.g., a team). -```php +```cc $botOwnerID[separator] ``` @@ -30,7 +30,7 @@ Returns a list of IDs separated by the specified `separator`. If the bot has a single owner, this will return their ID. -```php +```cc $botOwnerID ``` @@ -38,13 +38,13 @@ $botOwnerID If the bot belongs to a team, this will return the IDs of all team members separated by a pipe (|) character. -```php +```cc $botOwnerID[|] ``` **Example 3: Get the bot owner IDs (team) with the default comma separator:** -```php +```cc $botOwnerID ``` diff --git a/content/docs/(functions)/Bot/botPing.mdx b/content/docs/(functions)/Bot/botPing.mdx index 445f1e9e..77de1c9b 100644 --- a/content/docs/(functions)/Bot/botPing.mdx +++ b/content/docs/(functions)/Bot/botPing.mdx @@ -12,7 +12,7 @@ The `$botPing` function calculates the time difference between when the bot send Simply use the `$botPing` function in your command or event. -```php +```cc $botPing ``` diff --git a/content/docs/(functions)/Bot/botTyping.mdx b/content/docs/(functions)/Bot/botTyping.mdx index 39d5bf24..f2a98eff 100644 --- a/content/docs/(functions)/Bot/botTyping.mdx +++ b/content/docs/(functions)/Bot/botTyping.mdx @@ -17,6 +17,6 @@ $botTyping **Example:** If used within a command, the bot will display the "Bot is typing..." indicator for 10 seconds when the command is executed. -```php +```cc $botTyping ``` diff --git a/content/docs/(functions)/Bot/botVerified.mdx b/content/docs/(functions)/Bot/botVerified.mdx index 25661bac..18a5beea 100644 --- a/content/docs/(functions)/Bot/botVerified.mdx +++ b/content/docs/(functions)/Bot/botVerified.mdx @@ -6,7 +6,7 @@ This function checks if a Discord bot is verified. A verified bot has been revie ## Usage -```php +```cc $botVerified[Bot ID] ``` diff --git a/content/docs/(functions)/Bot/botVersion.mdx b/content/docs/(functions)/Bot/botVersion.mdx index e95926a2..390c980a 100644 --- a/content/docs/(functions)/Bot/botVersion.mdx +++ b/content/docs/(functions)/Bot/botVersion.mdx @@ -8,7 +8,7 @@ This function returns the version of your bot. The `$botVersion` function doesn't require any arguments. Simply use it in your commands to retrieve the current bot version. -```php +```cc $botVersion ``` diff --git a/content/docs/(functions)/Bot/cpu.mdx b/content/docs/(functions)/Bot/cpu.mdx index a6f76d0f..825e66d2 100644 --- a/content/docs/(functions)/Bot/cpu.mdx +++ b/content/docs/(functions)/Bot/cpu.mdx @@ -8,7 +8,7 @@ This function provides real-time information about the bot's current CPU usage. Simply use `$cpu` in your command or response. The function will be replaced with a numerical representation of the bot's CPU usage percentage. -```php +```cc $cpu ``` diff --git a/content/docs/(functions)/Bot/executionTime.mdx b/content/docs/(functions)/Bot/executionTime.mdx index dba1cb3b..2e2647d0 100644 --- a/content/docs/(functions)/Bot/executionTime.mdx +++ b/content/docs/(functions)/Bot/executionTime.mdx @@ -8,7 +8,7 @@ This function returns the time it took for the interpreter to execute the code * Simply include `$executionTime` in your code. It will be replaced with the execution time in milliseconds. -```php +```cc $executionTime ``` diff --git a/content/docs/(functions)/Bot/getBotActivity.mdx b/content/docs/(functions)/Bot/getBotActivity.mdx index 2cd46bcd..96c46839 100644 --- a/content/docs/(functions)/Bot/getBotActivity.mdx +++ b/content/docs/(functions)/Bot/getBotActivity.mdx @@ -8,7 +8,7 @@ Retrieves the bot's current activity status (e.g., "Playing...", "Listening to.. ## Usage -```php +```cc $getBotActivity[text/type] ``` diff --git a/content/docs/(functions)/Bot/getBotInvite.mdx b/content/docs/(functions)/Bot/getBotInvite.mdx index f798707f..cc7b6a3b 100644 --- a/content/docs/(functions)/Bot/getBotInvite.mdx +++ b/content/docs/(functions)/Bot/getBotInvite.mdx @@ -6,7 +6,7 @@ Generate an invite link for your bot. ## Usage -```php +```cc $getBotInvite[permission;permission;permission...] ``` diff --git a/content/docs/(functions)/Bot/maxRam.mdx b/content/docs/(functions)/Bot/maxRam.mdx index ba6e5efd..0ebef8f6 100644 --- a/content/docs/(functions)/Bot/maxRam.mdx +++ b/content/docs/(functions)/Bot/maxRam.mdx @@ -8,7 +8,7 @@ This function returns the maximum amount of RAM (memory) allocated to the curren Simply use the function in your code: -```php +```cc $maxRam ``` diff --git a/content/docs/(functions)/Bot/setBotActivity.mdx b/content/docs/(functions)/Bot/setBotActivity.mdx index 58fab048..35b6801b 100644 --- a/content/docs/(functions)/Bot/setBotActivity.mdx +++ b/content/docs/(functions)/Bot/setBotActivity.mdx @@ -8,7 +8,7 @@ Set your bot's activity status (the text displayed under the bot's name). ## Usage -```php +```cc $setBotActivity[activity type;activity text] ``` @@ -21,7 +21,7 @@ $setBotActivity[activity type;activity text] **Example:** Sets the bot's activity to "Listening to The Cosmos". -```php +```cc $setBotActivity[listening;The Cosmos] ``` diff --git a/content/docs/(functions)/Channel/blackListChannelIDs.mdx b/content/docs/(functions)/Channel/blackListChannelIDs.mdx index 85e4daf5..27fea990 100644 --- a/content/docs/(functions)/Channel/blackListChannelIDs.mdx +++ b/content/docs/(functions)/Channel/blackListChannelIDs.mdx @@ -8,7 +8,7 @@ This function allows you to blacklist specific channels (including categories an ## Usage -```php +```cc $blackListChannelIDs[Channel ID 1;Channel ID 2;...;Error Message] ``` @@ -23,7 +23,7 @@ $blackListChannelIDs[Channel ID 1;Channel ID 2;...;Error Message] ## Example: -```php +```cc $blackListChannelIDs[123456789012345678;987654321098765432;You cannot use this command in the #games or #help channels.] ``` @@ -34,7 +34,7 @@ In this example: **Alternative Example using Channel Names (less reliable):** -```php +```cc $blackListChannelIDs[games;help;You cannot use this command in the #games or #help channels.] ``` diff --git a/content/docs/(functions)/Channel/cacheChannelMessages.mdx b/content/docs/(functions)/Channel/cacheChannelMessages.mdx index 0d81969f..f208f92c 100644 --- a/content/docs/(functions)/Channel/cacheChannelMessages.mdx +++ b/content/docs/(functions)/Channel/cacheChannelMessages.mdx @@ -8,7 +8,7 @@ This command forces the bot to cache the latest messages from a channel. Caching ## Usage -```php +```cc $cacheChannelMessages[Channel ID (optional)] ``` @@ -23,13 +23,13 @@ $cacheChannelMessages[Channel ID (optional)] **Cache messages from the current channel:** -```php +```cc $cacheChannelMessages ``` **Cache messages from a specific channel (using its ID):** -```php +```cc $cacheChannelMessages[123456789012345678] ``` diff --git a/content/docs/(functions)/Channel/channelPermissionsFor.mdx b/content/docs/(functions)/Channel/channelPermissionsFor.mdx index 13984774..e0d94b22 100644 --- a/content/docs/(functions)/Channel/channelPermissionsFor.mdx +++ b/content/docs/(functions)/Channel/channelPermissionsFor.mdx @@ -6,7 +6,7 @@ This function retrieves the permissions a specific user or role has within a giv ## Usage -```php +```cc $channelPermissionsFor[userID/roleID] $channelPermissionsFor[channelID;userID/roleID] ``` diff --git a/content/docs/(functions)/Channel/channelTopic.mdx b/content/docs/(functions)/Channel/channelTopic.mdx index 535fac22..9d155661 100644 --- a/content/docs/(functions)/Channel/channelTopic.mdx +++ b/content/docs/(functions)/Channel/channelTopic.mdx @@ -6,7 +6,7 @@ Retrieves the topic (or description) of a channel. ## Syntax -```php +```cc $channelTopic $channelTopic[channelID] ``` @@ -19,12 +19,12 @@ $channelTopic[channelID] **1. Get the topic of the current channel:** -```php +```cc $channelTopic ``` **2. Get the topic of a specific channel:** -```php +```cc $channelTopic[123456789012345678] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/cloneChannel.mdx b/content/docs/(functions)/Channel/cloneChannel.mdx index 5263136b..8c596ac9 100644 --- a/content/docs/(functions)/Channel/cloneChannel.mdx +++ b/content/docs/(functions)/Channel/cloneChannel.mdx @@ -6,7 +6,7 @@ Clones a channel, duplicating its permissions. ## Usage -```php +```cc $cloneChannel[Channel ID;New Name (optional);Category (optional);Return ID (yes/no, optional)] ``` @@ -23,7 +23,7 @@ $cloneChannel[Channel ID;New Name (optional);Category (optional);Return ID (yes/ This example clones the channel with the ID "General" and names the clone "General-Cloned". -```php +```cc $cloneChannel[General;General-Cloned] ``` @@ -31,7 +31,7 @@ $cloneChannel[General;General-Cloned] This example clones the channel with the ID "General", names the clone "General-Cloned", and places it in the category named "Category1". -```php +```cc $cloneChannel[General;General-Cloned;Category1] ``` @@ -39,6 +39,6 @@ $cloneChannel[General;General-Cloned;Category1] This clones the channel with the ID "General" and returns the ID of the newly created channel. -```php +```cc $cloneChannel[General;;;yes] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/closeTicket.mdx b/content/docs/(functions)/Channel/closeTicket.mdx index c3e73815..0498b392 100644 --- a/content/docs/(functions)/Channel/closeTicket.mdx +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -14,7 +14,7 @@ Closes a ticket that was previously created by the bot using the `$newTicket` co This example demonstrates how to send a message informing the user about the ticket closure, wait for a short period, and then close the ticket. -```sh +```cc $sendmessage[This ticket will be closed in 5 seconds.] $wait[5s] $closeTicket diff --git a/content/docs/(functions)/Channel/createChannel.mdx b/content/docs/(functions)/Channel/createChannel.mdx index 54c4b574..b72806c4 100644 --- a/content/docs/(functions)/Channel/createChannel.mdx +++ b/content/docs/(functions)/Channel/createChannel.mdx @@ -6,7 +6,7 @@ Creates a new channel within your Discord server. #### Usage: -```php +```cc $createChannel[name;type;return ID (yes/no);categoryID (optional);topic;NSFW (yes/no);Bitrate (i.e 64000, VC only);Position;Slowmode in Seconds (optional);User Limit (VC only);RTC Region (VC Only)] ``` @@ -32,7 +32,7 @@ default is `auto`, where discord will pick the best one, but you can specify one #### Example: -```php +```cc $createChannel[general;text;no] ``` diff --git a/content/docs/(functions)/Channel/createForum.mdx b/content/docs/(functions)/Channel/createForum.mdx index 652385b4..d7da5ae6 100644 --- a/content/docs/(functions)/Channel/createForum.mdx +++ b/content/docs/(functions)/Channel/createForum.mdx @@ -6,7 +6,7 @@ Create a new forum channel within your Discord server. ## Usage -```php +```cc $createForum[ {name=Forum name} {topic=Forum topic and guidelines (optional)} @@ -59,7 +59,7 @@ Tags can be defined in two formats: ### Example: -```php +```cc $createForum[ {name=Opinions} {topic=Share your thoughts and opinions on various topics.} diff --git a/content/docs/(functions)/Channel/editForum.mdx b/content/docs/(functions)/Channel/editForum.mdx index 3cfac2f8..b818b901 100644 --- a/content/docs/(functions)/Channel/editForum.mdx +++ b/content/docs/(functions)/Channel/editForum.mdx @@ -6,7 +6,7 @@ Edits an existing forum channel. This allows you to modify various aspects of th ## Usage -```php +```cc $editForum[ {id=Forum Channel ID} {name=Forum name (optional)} @@ -90,7 +90,7 @@ You can repeat the `{tag}` or `{moderator_tag}` parameters as many times as need Adding a tag with an emoji: -```php +```cc $editForum[ {id=123456789} {tag=:heart: Love} @@ -101,7 +101,7 @@ $editForum[ Changing the forum name: -```php +```cc $editForum[ {id=123456789} {name=My cute new forum name} diff --git a/content/docs/(functions)/Channel/eventChannelParent.mdx b/content/docs/(functions)/Channel/eventChannelParent.mdx index 89c42e2a..38049560 100644 --- a/content/docs/(functions)/Channel/eventChannelParent.mdx +++ b/content/docs/(functions)/Channel/eventChannelParent.mdx @@ -10,7 +10,7 @@ Returns the ID of the category/forum channel under which a channel or thread was Just use `$eventChannelParent` within the code of a channel-based trigger. It will be replaced with the category/forum's ID. -```php +```cc $eventChannelParent ``` @@ -18,7 +18,7 @@ $eventChannelParent Let's say you have a channel trigger that runs when a new channel is created. You can use `$eventChannelParent` to send a message to a specific log channel informing administrators which category the new channel was created under: -```php +```cc $channelSendMessage[LogChannelID;A new channel ($eventChannelName) was created under category ID: $eventChannelParent] ``` diff --git a/content/docs/(functions)/Channel/findServerChannel.mdx b/content/docs/(functions)/Channel/findServerChannel.mdx index ac8dee14..45005db2 100644 --- a/content/docs/(functions)/Channel/findServerChannel.mdx +++ b/content/docs/(functions)/Channel/findServerChannel.mdx @@ -8,7 +8,7 @@ The last parameter determines what the function returns: the channel's ID or `un ## Syntax -```php +```cc $findServerChannel[query;returnCurrentChannel (yes/no) (optional)] ``` diff --git a/content/docs/(functions)/Channel/getChannelMessages.mdx b/content/docs/(functions)/Channel/getChannelMessages.mdx index baf76516..f2a5e459 100644 --- a/content/docs/(functions)/Channel/getChannelMessages.mdx +++ b/content/docs/(functions)/Channel/getChannelMessages.mdx @@ -6,7 +6,7 @@ Retrieves the most recent messages from a specified channel. ## Usage -```php +```cc $getChannelMessages[Channel ID;userID or everyone (default is everyone);ids/contents;separator;amount (max 50);reverse (yes/no, default is no)] ``` diff --git a/content/docs/(functions)/Channel/getChannelSlowmode.mdx b/content/docs/(functions)/Channel/getChannelSlowmode.mdx index 17ab5818..21f6cef9 100644 --- a/content/docs/(functions)/Channel/getChannelSlowmode.mdx +++ b/content/docs/(functions)/Channel/getChannelSlowmode.mdx @@ -6,7 +6,7 @@ Retrieves the slow mode duration (in seconds) of a specified channel. If no slow ## Syntax -```php +```cc $getChannelSlowmode or $getChannelSlowmode[channelID] ``` diff --git a/content/docs/(functions)/Channel/latestMessage.mdx b/content/docs/(functions)/Channel/latestMessage.mdx index 36120f15..16de47e7 100644 --- a/content/docs/(functions)/Channel/latestMessage.mdx +++ b/content/docs/(functions)/Channel/latestMessage.mdx @@ -6,7 +6,7 @@ Retrieves the most recent message content or ID from a channel, utilizing the ca ## Usage -```php +```cc $latestMessage[Channel ID (defaults to current channel);User ID (defaults to all users);Return Message ID instead (yes/no, defaults to no)] ``` diff --git a/content/docs/(functions)/Channel/mentionChannel.mdx b/content/docs/(functions)/Channel/mentionChannel.mdx index db0c7ac5..1cc61abe 100644 --- a/content/docs/(functions)/Channel/mentionChannel.mdx +++ b/content/docs/(functions)/Channel/mentionChannel.mdx @@ -6,17 +6,17 @@ mention a channel, threads by name or id ## Usage -```php +```cc $mentionChannel[Name/ID] ``` ### Example: -```php +```cc $mentionChannel[chat] ``` ### Example: -```php +```cc $mentionChannel[1234567898765431] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index 1fcfbd10..6e3c70e7 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -16,7 +16,7 @@ Create a new support ticket. This function allows users to easily open tickets f **Example:** -```sh +```cc !!exec $newTicket[$userTag-Ticket;Hello World!] ``` diff --git a/content/docs/(functions)/Channel/removeContains.mdx b/content/docs/(functions)/Channel/removeContains.mdx index cde01928..f0dff8b7 100644 --- a/content/docs/(functions)/Channel/removeContains.mdx +++ b/content/docs/(functions)/Channel/removeContains.mdx @@ -6,7 +6,7 @@ This function allows you to delete messages within a specified channel that cont ## Syntax -```php +```cc $removeContains[channelID;limit;word1;word2;...] ``` @@ -20,7 +20,7 @@ $removeContains[channelID;limit;word1;word2;...] Let's say you want to delete messages in channel `123456789012345678` containing either the word "spam" or the word "advertisement", and you want to check the last 100 messages. You would use: -```php +```cc $removeContains[123456789012345678;100;spam;advertisement] ``` diff --git a/content/docs/(functions)/Channel/serverChannels.mdx b/content/docs/(functions)/Channel/serverChannels.mdx index 0ae0c06a..b75b3c58 100644 --- a/content/docs/(functions)/Channel/serverChannels.mdx +++ b/content/docs/(functions)/Channel/serverChannels.mdx @@ -6,7 +6,7 @@ This function retrieves a list of all channels within the current server (guild) ## Usage -```php +```cc $serverChannels[info (optional, default: name); type (optional, default: all); separator (optional, default: ", ")] ``` diff --git a/content/docs/(functions)/Channel/setChannelTopic.mdx b/content/docs/(functions)/Channel/setChannelTopic.mdx index 8498d5d5..dca9ab10 100644 --- a/content/docs/(functions)/Channel/setChannelTopic.mdx +++ b/content/docs/(functions)/Channel/setChannelTopic.mdx @@ -6,7 +6,7 @@ This command allows you to change the topic (also known as the channel descripti ## Usage -```php +```cc $setChannelTopic[channelID;topic] ``` @@ -19,7 +19,7 @@ $setChannelTopic[channelID;topic] Let's say you want to set the topic of the current channel to "This channel is for memes only!". You would use the following command: -```php +```cc $setChannelTopic[$channelID;This channel is for memes only!] ``` diff --git a/content/docs/(functions)/Channel/slowmode.mdx b/content/docs/(functions)/Channel/slowmode.mdx index f7135950..ea4ae6a8 100644 --- a/content/docs/(functions)/Channel/slowmode.mdx +++ b/content/docs/(functions)/Channel/slowmode.mdx @@ -13,7 +13,7 @@ The `$slowmode` command takes two arguments: ## Usage Example -```php +```cc $slowmode[123456789012345678;10s] ``` @@ -23,7 +23,7 @@ This example sets the slowmode in the channel with ID `123456789012345678` to 10 To remove slowmode from a channel, use `0` as the time argument: -```php +```cc $slowmode[123456789012345678;0] ``` diff --git a/content/docs/(functions)/Channel/transcriptChannel.mdx b/content/docs/(functions)/Channel/transcriptChannel.mdx index f48fe988..3891c045 100644 --- a/content/docs/(functions)/Channel/transcriptChannel.mdx +++ b/content/docs/(functions)/Channel/transcriptChannel.mdx @@ -8,7 +8,7 @@ This function generates an HTML file containing a transcript of the latest 100 m ## Usage -```php +```cc $transcriptChannel[Channel ID;Send to Channel ID;Message (optional);file name (optional);return message id or undefined.if message could not be send(yes/no default=no)] ``` @@ -26,7 +26,7 @@ $transcriptChannel[Channel ID;Send to Channel ID;Message (optional);file name (o ### Example -```php +```cc $transcriptChannel[123456789012345678;987654321098765432;Here is the channel transcript;my_transcript;yes] ``` diff --git a/content/docs/(functions)/Channel/vcBefore.mdx b/content/docs/(functions)/Channel/vcBefore.mdx index c3d1334c..5e039d97 100644 --- a/content/docs/(functions)/Channel/vcBefore.mdx +++ b/content/docs/(functions)/Channel/vcBefore.mdx @@ -15,7 +15,7 @@ This function retrieves the voice channel ID associated with a "before" state in ## Usage -```php +```cc $vcBefore ``` diff --git a/content/docs/(functions)/Channel/voiceChannelID.mdx b/content/docs/(functions)/Channel/voiceChannelID.mdx index c722bd36..489ec386 100644 --- a/content/docs/(functions)/Channel/voiceChannelID.mdx +++ b/content/docs/(functions)/Channel/voiceChannelID.mdx @@ -16,7 +16,7 @@ Returns the ID of the voice channel a user joined or left in a voice trigger eve ## Usage -```php +```cc $voiceChannelID ``` diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index 3cf2e48b..d0b77c6a 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown for a command in channel. ## Usage -```php +```cc $channelCooldown[time;error message] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx index 478f79da..db62bd80 100644 --- a/content/docs/(functions)/Cooldown/clearCoolDown.mdx +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -8,7 +8,7 @@ Clears a cooldown set by cooldown function. ## Usage -```php +```cc $clearCooldown[type;id;token] ``` 1. **type** - (Optional) default value: `user`. Can be `user`, `channel` or `server`. The type of cooldown to clear. diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index 558ffde2..f35fe37c 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown in a command for user. ## Usage -```php +```cc $cooldown[time;error message;userID] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Cooldown/getCooldownTime.mdx b/content/docs/(functions)/Cooldown/getCooldownTime.mdx index b9bd9919..d20b8910 100644 --- a/content/docs/(functions)/Cooldown/getCooldownTime.mdx +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -6,7 +6,7 @@ Returns remaining time of a cooldown in miliseconds. ## Usage -```php +```cc $getCooldownTime[time;type;id;token] ``` 1. **time** - (Optional) default value: (last cooldown set). The time your cooldown was set to. diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index 866784a8..8cadfbb3 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -6,7 +6,7 @@ Sets a cooldown in a command for the whole server. ## Usage -```php +```cc $serverCooldown[time;error message] ``` 1. **time** - (Optional) default value: `5s`. The cooldown duration. Example times: `10s`, `1m`, `2h`, `1d` diff --git a/content/docs/(functions)/Date/dateToTime.mdx b/content/docs/(functions)/Date/dateToTime.mdx index 51ed172b..07b80fb5 100644 --- a/content/docs/(functions)/Date/dateToTime.mdx +++ b/content/docs/(functions)/Date/dateToTime.mdx @@ -6,7 +6,7 @@ Converts a human-readable date string to milliseconds since the Unix epoch (Janu ## Usage -```php +```cc $dateToTime[Date] ``` diff --git a/content/docs/(functions)/Date/memberJoinedCode.mdx b/content/docs/(functions)/Date/memberJoinedCode.mdx index 46e3402d..9fba4491 100644 --- a/content/docs/(functions)/Date/memberJoinedCode.mdx +++ b/content/docs/(functions)/Date/memberJoinedCode.mdx @@ -6,7 +6,7 @@ retrieve the invite code, which the user join from ## Usage -```php +```cc $memberJoinedCode[User ID;Info Type (default code)] ``` diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx index e641004b..32a6f3eb 100644 --- a/content/docs/(functions)/Date/minute.mdx +++ b/content/docs/(functions)/Date/minute.mdx @@ -6,7 +6,7 @@ Returns the current minute (0-59). #### Usage: -```php +```cc $minute ``` diff --git a/content/docs/(functions)/Date/parseTime.mdx b/content/docs/(functions)/Date/parseTime.mdx index 406463a6..4c43a7ba 100644 --- a/content/docs/(functions)/Date/parseTime.mdx +++ b/content/docs/(functions)/Date/parseTime.mdx @@ -6,7 +6,7 @@ Convert human-readable time strings into a duration. This function accepts a sin ## Usage -```php +```cc $parseTime[time;unit?] ``` diff --git a/content/docs/(functions)/Date/timeToDate.mdx b/content/docs/(functions)/Date/timeToDate.mdx index 64801d3e..3774fdf5 100644 --- a/content/docs/(functions)/Date/timeToDate.mdx +++ b/content/docs/(functions)/Date/timeToDate.mdx @@ -6,7 +6,7 @@ Convert a Unix timestamp (milliseconds since January 1, 1970 UTC) into a formatt ## Usage -```php +```cc $timeToDate[Timestamp;Format (optional)] ``` diff --git a/content/docs/(functions)/Date/upvoteTime.mdx b/content/docs/(functions)/Date/upvoteTime.mdx index 06966e45..179a0fec 100644 --- a/content/docs/(functions)/Date/upvoteTime.mdx +++ b/content/docs/(functions)/Date/upvoteTime.mdx @@ -6,7 +6,7 @@ Returns the time when the current upvote was received. ## Usage -```php +```cc $upvoteTime ``` diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx index 43bfe0f1..5444b238 100644 --- a/content/docs/(functions)/Date/year.mdx +++ b/content/docs/(functions)/Date/year.mdx @@ -8,7 +8,7 @@ This command returns the current year based on the configured timezone (default #### Usage: -```php +```cc $year ``` diff --git a/content/docs/(functions)/Events/eventCreate.mdx b/content/docs/(functions)/Events/eventCreate.mdx index 2e3b07c0..99cdc5b5 100644 --- a/content/docs/(functions)/Events/eventCreate.mdx +++ b/content/docs/(functions)/Events/eventCreate.mdx @@ -8,7 +8,7 @@ Creates a scheduled event on your server. The `$eventCreate` function allows you to schedule events with various types, including voice, stage, and external events. Here's how to use it: -```php +```cc $eventCreate[ {name=Your event name} {type=Your event type i.e. voice, stage, or external} @@ -61,7 +61,7 @@ When creating `external` events, ensure you specify: This example creates a voice channel event called "Anime Watch!" in the channel "AnimeWatchVC", starting in 10 minutes and lasting for 1 day. -```php +```cc $eventCreate[ {name=Anime Watch!} {start=$math[$timestamp+$parseTime[10m]]} diff --git a/content/docs/(functions)/Events/eventDelete.mdx b/content/docs/(functions)/Events/eventDelete.mdx index eed34cfd..b90ff6ee 100644 --- a/content/docs/(functions)/Events/eventDelete.mdx +++ b/content/docs/(functions)/Events/eventDelete.mdx @@ -6,7 +6,7 @@ Deletes an existing scheduled event. ## Usage -```php +```cc $eventDelete[event ID] ``` @@ -28,6 +28,6 @@ The `$eventDelete` function deletes a scheduled event using its unique event ID. Let's say you have an event with the ID `1234567890`. To delete this event, you would use: -```php +```cc $eventDelete[1234567890] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Events/eventEdit.mdx b/content/docs/(functions)/Events/eventEdit.mdx index 8b71fcbe..972e0424 100644 --- a/content/docs/(functions)/Events/eventEdit.mdx +++ b/content/docs/(functions)/Events/eventEdit.mdx @@ -8,7 +8,7 @@ Edit an existing scheduled event using its ID. This function allows you to modify various aspects of a scheduled event, such as its name, type, start and end times, description, and more. -```php +```cc $eventEdit[ {event=Event ID to edit} {name=New event name} @@ -45,7 +45,7 @@ $eventEdit[ This example demonstrates changing the name of an event with the ID `12345` to "My event new name!". -```php +```cc $eventEdit[ {event=12345} {name=My event new name!} diff --git a/content/docs/(functions)/Events/eventEnd.mdx b/content/docs/(functions)/Events/eventEnd.mdx index 65ad2129..875cbc9c 100644 --- a/content/docs/(functions)/Events/eventEnd.mdx +++ b/content/docs/(functions)/Events/eventEnd.mdx @@ -10,7 +10,7 @@ The `$eventEnd` function allows you to terminate a currently running event. You ## Usage -```php +```cc $eventEnd[Event ID] ``` @@ -22,7 +22,7 @@ $eventEnd[Event ID] To end an event with the ID `12345`, you would use: -```php +```cc $eventEnd[12345] ``` diff --git a/content/docs/(functions)/Events/eventExists.mdx b/content/docs/(functions)/Events/eventExists.mdx index bbd3a6db..d9f2b46e 100644 --- a/content/docs/(functions)/Events/eventExists.mdx +++ b/content/docs/(functions)/Events/eventExists.mdx @@ -6,7 +6,7 @@ Checks if an event with the specified ID exists. ## Usage -```php +```cc $eventExists[event id] ``` diff --git a/content/docs/(functions)/Events/eventStart.mdx b/content/docs/(functions)/Events/eventStart.mdx index 44c729f1..fc11b619 100644 --- a/content/docs/(functions)/Events/eventStart.mdx +++ b/content/docs/(functions)/Events/eventStart.mdx @@ -10,7 +10,7 @@ This function allows you to initiate a scheduled event immediately. You'll need ## Usage -```php +```cc $eventStart[Event ID] ``` @@ -22,7 +22,7 @@ $eventStart[Event ID] To start a scheduled event with the ID `my_event_123`, you would use the following: -```php +```cc $eventStart[my_event_123] ``` diff --git a/content/docs/(functions)/Events/getEventInfo.mdx b/content/docs/(functions)/Events/getEventInfo.mdx index eb4b06b5..974ccf22 100644 --- a/content/docs/(functions)/Events/getEventInfo.mdx +++ b/content/docs/(functions)/Events/getEventInfo.mdx @@ -6,7 +6,7 @@ Retrieves information about a specific event within a guild (server). ## Usage -```php +```cc $getEventInfo[event id;info type] ``` diff --git a/content/docs/(functions)/Events/getEventUsers.mdx b/content/docs/(functions)/Events/getEventUsers.mdx index 2c684a2e..6254adc6 100644 --- a/content/docs/(functions)/Events/getEventUsers.mdx +++ b/content/docs/(functions)/Events/getEventUsers.mdx @@ -6,7 +6,7 @@ Retrieves a list of users who have expressed interest in a specific event. ## Usage -```php +```cc $getEventUsers[event id;separator (default is ', ')] ``` diff --git a/content/docs/(functions)/Events/guildEvents.mdx b/content/docs/(functions)/Events/guildEvents.mdx index 650e10e0..65b44173 100644 --- a/content/docs/(functions)/Events/guildEvents.mdx +++ b/content/docs/(functions)/Events/guildEvents.mdx @@ -18,7 +18,7 @@ You can specify what information you want to retrieve about the events (`info ty ## Usage -```php +```cc $guildEvents[info type;filter;separator] ``` diff --git a/content/docs/(functions)/Image/imageBorderRad.mdx b/content/docs/(functions)/Image/imageBorderRad.mdx index b93bf597..098264c8 100644 --- a/content/docs/(functions)/Image/imageBorderRad.mdx +++ b/content/docs/(functions)/Image/imageBorderRad.mdx @@ -8,11 +8,11 @@ Control the border radius of a filled box created with $imageFill. This allows y You can specify a single radius value to apply to all corners, or provide individual values for each corner for more precise control. -```php +```cc $imageBorderRad[border radius for all corners] ``` -```php +```cc $imageBorderRad[top-left corner radius; top-right corner radius; bottom-right corner radius; bottom-left corner radius] ``` diff --git a/content/docs/(functions)/Image/imageCreate.mdx b/content/docs/(functions)/Image/imageCreate.mdx index c74255fd..d41a66fa 100644 --- a/content/docs/(functions)/Image/imageCreate.mdx +++ b/content/docs/(functions)/Image/imageCreate.mdx @@ -6,7 +6,7 @@ Creates a new, blank image with specified dimensions. ## Usage -```php +```cc $imageCreate[width;height] ``` diff --git a/content/docs/(functions)/Image/imageCrop.mdx b/content/docs/(functions)/Image/imageCrop.mdx index b556a461..bdc6a8d5 100644 --- a/content/docs/(functions)/Image/imageCrop.mdx +++ b/content/docs/(functions)/Image/imageCrop.mdx @@ -6,7 +6,7 @@ Crop a defined image from image builder ## Usage -```php +```cc $imageCrop[image name;x;y;width;height] ``` diff --git a/content/docs/(functions)/Image/imageDraw.mdx b/content/docs/(functions)/Image/imageDraw.mdx index ead88c05..012b5bf3 100644 --- a/content/docs/(functions)/Image/imageDraw.mdx +++ b/content/docs/(functions)/Image/imageDraw.mdx @@ -6,7 +6,7 @@ Draws a loaded image onto the current image. This allows you to composite images ## Usage -```php +```cc $imageDraw[image name;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageDrawBack.mdx b/content/docs/(functions)/Image/imageDrawBack.mdx index 38bea6d2..5df6237b 100644 --- a/content/docs/(functions)/Image/imageDrawBack.mdx +++ b/content/docs/(functions)/Image/imageDrawBack.mdx @@ -6,7 +6,7 @@ Draws a loaded image behind the current image. This allows you to layer images a ## Usage -```php +```cc $imageDrawBack[image name;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageFill.mdx b/content/docs/(functions)/Image/imageFill.mdx index 7721ab55..189f4374 100644 --- a/content/docs/(functions)/Image/imageFill.mdx +++ b/content/docs/(functions)/Image/imageFill.mdx @@ -6,7 +6,7 @@ Fill a portion of an image with a specified color. ## Usage -```php +```cc $imageFill[color;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageHeight.mdx b/content/docs/(functions)/Image/imageHeight.mdx index 0e9dad40..0704f4e4 100644 --- a/content/docs/(functions)/Image/imageHeight.mdx +++ b/content/docs/(functions)/Image/imageHeight.mdx @@ -6,7 +6,7 @@ Retrieves the height of an image stored within the bot's memory. This function a ## Usage -```php +```cc $imageHeight[image name] ``` @@ -16,7 +16,7 @@ $imageHeight[image name] ### Example 1: Get the height of the last loaded image -```php +```cc $imageHeight ``` @@ -24,6 +24,6 @@ This will return the height of the most recently loaded image. If no image has ### Example 2: Get the height of an image named "avatar" -```php +```cc $imageHeight[avatar] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageLineHeight.mdx b/content/docs/(functions)/Image/imageLineHeight.mdx index 7b8297cb..fd0b1e11 100644 --- a/content/docs/(functions)/Image/imageLineHeight.mdx +++ b/content/docs/(functions)/Image/imageLineHeight.mdx @@ -6,7 +6,7 @@ Adjust the line height used when drawing text within the image builder. The defa ## Usage -```php +```cc $imageLineHeight[New Value (optional)] ``` @@ -23,7 +23,7 @@ $imageLineHeight[New Value (optional)] To set the line height to `1.3`, use the following command: -```php +```cc $imageLineHeight[1.3] ``` diff --git a/content/docs/(functions)/Image/imageLoadEmoji.mdx b/content/docs/(functions)/Image/imageLoadEmoji.mdx index c00c5bab..0b605c19 100644 --- a/content/docs/(functions)/Image/imageLoadEmoji.mdx +++ b/content/docs/(functions)/Image/imageLoadEmoji.mdx @@ -6,7 +6,7 @@ Loads an emoji (either a standard Unicode emoji or a custom Discord emoji) for u ## Usage -```php +```cc $imageLoadEmoji[id;Emoji] ``` diff --git a/content/docs/(functions)/Image/imageLoadFromURL.mdx b/content/docs/(functions)/Image/imageLoadFromURL.mdx index ff2ad499..b17dc504 100644 --- a/content/docs/(functions)/Image/imageLoadFromURL.mdx +++ b/content/docs/(functions)/Image/imageLoadFromURL.mdx @@ -6,7 +6,7 @@ Loads an image from a URL and saves it with a reference name for later use in ot ## Usage -```php +```cc $imageLoadFromURL[name;URL] ``` diff --git a/content/docs/(functions)/Image/imageOutput.mdx b/content/docs/(functions)/Image/imageOutput.mdx index 754cdc59..84a035ec 100644 --- a/content/docs/(functions)/Image/imageOutput.mdx +++ b/content/docs/(functions)/Image/imageOutput.mdx @@ -8,7 +8,7 @@ This function saves the current image being drawn into a file and returns the fi ## Usage -```php +```cc $imageOutput[type] ``` @@ -22,7 +22,7 @@ These examples assume you've already used functions like `$imageCreate` and othe **Example 1: Sending the image directly using `$image`** -```php +```cc $imageCreate[...] // Create the initial image (replace [...] with actual parameters) // ... Building the image using other $image functions ... $image[$imageOutput[png]] // Save as PNG and send the image using $image function @@ -37,7 +37,7 @@ $image[$imageOutput[png]] // Save as PNG and send the image using $image functio **Example 2: Sending the image using `{image:...}` in `$sendMessage`** -```php +```cc $imageCreate[...] // Create the initial image (replace [...] with actual parameters) // ... Building the image using other $image functions ... $sendMessage[{image:$imageOutput[jpg]}] // Save as JPG and send the image using $sendMessage function diff --git a/content/docs/(functions)/Image/imagePositionBase.mdx b/content/docs/(functions)/Image/imagePositionBase.mdx index 21d10994..a1d68792 100644 --- a/content/docs/(functions)/Image/imagePositionBase.mdx +++ b/content/docs/(functions)/Image/imagePositionBase.mdx @@ -6,7 +6,7 @@ Control the base position for drawing images or objects. By default, the base po ## Usage -```php +```cc $imagePositionBase[Base] ``` diff --git a/content/docs/(functions)/Image/imageSetOpacity.mdx b/content/docs/(functions)/Image/imageSetOpacity.mdx index b42bd866..788e6566 100644 --- a/content/docs/(functions)/Image/imageSetOpacity.mdx +++ b/content/docs/(functions)/Image/imageSetOpacity.mdx @@ -6,7 +6,7 @@ Sets the global opacity for all subsequent drawing operations performed by the i ## Usage -```php +```cc $imageSetOpacity[opacity] ``` @@ -22,7 +22,7 @@ $imageSetOpacity[opacity] This example sets the opacity to 50%, making subsequent drawings semi-transparent. -```php +```cc $imageSetOpacity[50] ``` @@ -30,7 +30,7 @@ $imageSetOpacity[50] This example demonstrates how to use `$imageSetOpacity` to draw two avatars with different opacities. It fetches the author's avatar, loads it into the image builder, draws it once at full opacity, then sets the opacity to 50% and draws it again. -```php +```cc !!exec $let[avatar;$replaceText[$authoravatar;.webp;.png]] $imageCreate[300;300] $imageLoadFromURL[avatar;$avatar] diff --git a/content/docs/(functions)/Image/imageStroke.mdx b/content/docs/(functions)/Image/imageStroke.mdx index 8da08594..700db49c 100644 --- a/content/docs/(functions)/Image/imageStroke.mdx +++ b/content/docs/(functions)/Image/imageStroke.mdx @@ -6,7 +6,7 @@ Draws a rectangle outline (stroke) on the canvas. ## Usage -```php +```cc $imageStroke[color;x;y;width;height;opacity] ``` diff --git a/content/docs/(functions)/Image/imageStrokeWidth.mdx b/content/docs/(functions)/Image/imageStrokeWidth.mdx index 2734f989..630231e8 100644 --- a/content/docs/(functions)/Image/imageStrokeWidth.mdx +++ b/content/docs/(functions)/Image/imageStrokeWidth.mdx @@ -6,7 +6,7 @@ Controls the thickness of the stroke line used by the `$imageStroke` function. T ## Usage -```php +```cc $imageStrokeWidth[width] ``` diff --git a/content/docs/(functions)/Image/imageTextAlign.mdx b/content/docs/(functions)/Image/imageTextAlign.mdx index b63f6aa2..8686a799 100644 --- a/content/docs/(functions)/Image/imageTextAlign.mdx +++ b/content/docs/(functions)/Image/imageTextAlign.mdx @@ -8,7 +8,7 @@ In essence, `$imageTextAlign` determines the reference point for positioning you ## Usage -```php +```cc $imageTextAlign[Alignment] ``` @@ -26,7 +26,7 @@ The `Alignment` parameter accepts the following values: Let's say you want to center the text "Hello World" at coordinates (100, 50) on your image. You would use the following commands: -```php +```cc $imageTextAlign[center] $imageText[100,50,Hello World] ``` diff --git a/content/docs/(functions)/Image/imageTextBaseline.mdx b/content/docs/(functions)/Image/imageTextBaseline.mdx index d99077f1..577bd103 100644 --- a/content/docs/(functions)/Image/imageTextBaseline.mdx +++ b/content/docs/(functions)/Image/imageTextBaseline.mdx @@ -6,7 +6,7 @@ This function allows you to control the vertical alignment (baseline) of text wi ## Usage -```php +```cc $imageTextBaseline[Baseline] ``` diff --git a/content/docs/(functions)/Image/imageTextColor.mdx b/content/docs/(functions)/Image/imageTextColor.mdx index ed031eb9..239f1ab9 100644 --- a/content/docs/(functions)/Image/imageTextColor.mdx +++ b/content/docs/(functions)/Image/imageTextColor.mdx @@ -8,7 +8,7 @@ Specifies the fill and stroke color of the text in your image. This command allo The `$imageTextColor` command takes a single argument: the color you want to use for the text. -```php +```cc $imageTextColor[Color name] ``` @@ -24,13 +24,13 @@ $imageTextColor[Color name] To set the text color to blue: -```php +```cc $imageTextColor[blue] ``` To set the text color to a specific shade of green using a hexadecimal code: -```php +```cc $imageTextColor[#008000] ``` diff --git a/content/docs/(functions)/Image/imageTextFill.mdx b/content/docs/(functions)/Image/imageTextFill.mdx index 25387107..c6d472bc 100644 --- a/content/docs/(functions)/Image/imageTextFill.mdx +++ b/content/docs/(functions)/Image/imageTextFill.mdx @@ -6,7 +6,7 @@ Add filled text to an image. ## Usage -```php +```cc $imageTextFill[Text;position x;position y;color;opacity] ``` diff --git a/content/docs/(functions)/Image/imageTextFillColor.mdx b/content/docs/(functions)/Image/imageTextFillColor.mdx index b059f5cc..0e7fe6f4 100644 --- a/content/docs/(functions)/Image/imageTextFillColor.mdx +++ b/content/docs/(functions)/Image/imageTextFillColor.mdx @@ -8,7 +8,7 @@ This function allows you to control the color of the text you add to images. Yo ## Syntax -```php +```cc $imageTextFillColor[Color name] ``` @@ -23,13 +23,13 @@ $imageTextFillColor[Color name] To set the text fill color to blue: -```php +```cc $imageTextFillColor[blue] ``` To set the text fill color to a specific shade of green using a hex code: -```php +```cc $imageTextFillColor[#008000] ``` diff --git a/content/docs/(functions)/Image/imageTextSize.mdx b/content/docs/(functions)/Image/imageTextSize.mdx index a0938a9d..2c460824 100644 --- a/content/docs/(functions)/Image/imageTextSize.mdx +++ b/content/docs/(functions)/Image/imageTextSize.mdx @@ -8,7 +8,7 @@ This tag allows you to control the size of text used in image manipulation funct ## Usage -```php +```cc $imageTextSize[font size] ``` @@ -20,7 +20,7 @@ $imageTextSize[font size] To set the text size to 20 pixels: -```php +```cc $imageTextSize[20] ``` diff --git a/content/docs/(functions)/Image/imageTextStroke.mdx b/content/docs/(functions)/Image/imageTextStroke.mdx index 51b30328..18e1148a 100644 --- a/content/docs/(functions)/Image/imageTextStroke.mdx +++ b/content/docs/(functions)/Image/imageTextStroke.mdx @@ -6,7 +6,7 @@ Add a stroke (border) to text on an image. This effect can enhance the visibilit ## Usage -```php +```cc $imageTextStroke[Text;position x;position y;color (optional);opacity (optional)] ``` @@ -30,7 +30,7 @@ While not directly used in `$imageTextStroke`, understanding how to set image di This example creates an image, sets the text size and alignment, and then adds stroked text to the image. -```php +```cc !!exec $imageCreate[300;300] $imageTextSize[30] $imageTextAlign[center] diff --git a/content/docs/(functions)/Image/imageTextStrokeColor.mdx b/content/docs/(functions)/Image/imageTextStrokeColor.mdx index a8aa09e4..077827d0 100644 --- a/content/docs/(functions)/Image/imageTextStrokeColor.mdx +++ b/content/docs/(functions)/Image/imageTextStrokeColor.mdx @@ -10,7 +10,7 @@ The `$imageTextStrokeColor` function allows you to define the color of the outli ## Usage -```php +```cc $imageTextStrokeColor[Color name] ``` @@ -22,13 +22,13 @@ $imageTextStrokeColor[Color name] To set the text stroke color to blue, you would use: -```php +```cc $imageTextStrokeColor[blue] ``` To set the text stroke color to a specific shade of green using a hex code, you would use: -```php +```cc $imageTextStrokeColor[#00FF00] ``` diff --git a/content/docs/(functions)/Image/imageTextWeight.mdx b/content/docs/(functions)/Image/imageTextWeight.mdx index 91065c69..34642880 100644 --- a/content/docs/(functions)/Image/imageTextWeight.mdx +++ b/content/docs/(functions)/Image/imageTextWeight.mdx @@ -6,7 +6,7 @@ Controls the font weight (thickness) and style of text rendered on your images. ## Usage -```php +```cc $imageTextWeight[Weight Type] ``` @@ -28,6 +28,6 @@ Here's a breakdown of the allowed values for `[Weight Type]`: To make your image text appear in bold, you would use: -```php +```cc $imageTextWeight[bold] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageUseFont.mdx b/content/docs/(functions)/Image/imageUseFont.mdx index eab01474..7d7350fa 100644 --- a/content/docs/(functions)/Image/imageUseFont.mdx +++ b/content/docs/(functions)/Image/imageUseFont.mdx @@ -6,7 +6,7 @@ Sets the font type for text rendered on images. ## Usage -```php +```cc $imageUseFont[font name] ``` diff --git a/content/docs/(functions)/Image/imageWidth.mdx b/content/docs/(functions)/Image/imageWidth.mdx index 479290f0..d196aef6 100644 --- a/content/docs/(functions)/Image/imageWidth.mdx +++ b/content/docs/(functions)/Image/imageWidth.mdx @@ -6,7 +6,7 @@ Retrieves the width of an image. This function allows you to dynamically get the ## Usage -```php +```cc $imageWidth[image name] ``` @@ -18,7 +18,7 @@ $imageWidth[image name] This example shows how to get the width of the currently loaded image. -```php +```cc $imageWidth ``` @@ -28,7 +28,7 @@ This will return the width (in pixels) of the image currently being processed. This example shows how to get the width of an image that was loaded and assigned the name "avatar". -```php +```cc $imageWidth[avatar] ``` diff --git a/content/docs/(functions)/Interaction/commandName.mdx b/content/docs/(functions)/Interaction/commandName.mdx index d97c07ff..d9755a8d 100644 --- a/content/docs/(functions)/Interaction/commandName.mdx +++ b/content/docs/(functions)/Interaction/commandName.mdx @@ -12,7 +12,7 @@ This function only works within the context of a [slash command](/Trigger/slash) ## Usage -```php +```cc $commandName ``` @@ -22,7 +22,7 @@ This example demonstrates how to use `$commandName` to display the name of the c ### Code -```php +```cc $interactionReply[:game_die: $random[1;6]] $interactionReply[Command ran: `$commandName`] ``` diff --git a/content/docs/(functions)/Interaction/getOption.mdx b/content/docs/(functions)/Interaction/getOption.mdx index d7388d88..607ab98f 100644 --- a/content/docs/(functions)/Interaction/getOption.mdx +++ b/content/docs/(functions)/Interaction/getOption.mdx @@ -6,7 +6,7 @@ Retrieves the value of a user-provided option from an interaction, such as a sla ## Usage -```php +```cc $getOption[Option name] ``` diff --git a/content/docs/(functions)/Interaction/interactionDelete.mdx b/content/docs/(functions)/Interaction/interactionDelete.mdx index 857ee092..402fdb22 100644 --- a/content/docs/(functions)/Interaction/interactionDelete.mdx +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -20,13 +20,13 @@ This function allows you to remove an interaction reply. If you don't specify a To delete the previous interaction reply: -```php +```cc $interactionDelete ``` To delete a specific interaction reply by its ID: -```php +```cc $interactionDelete[123456789012345678] ``` diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx index 777a486b..d2deaeb9 100644 --- a/content/docs/(functions)/Interaction/interactionEdit.mdx +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -19,7 +19,7 @@ This function only works within interaction-based triggers (e.g., slash commands -```php +```cc $interactionreply[Hello world!;yes] $wait[2s] $interactionedit[Bye World!] diff --git a/content/docs/(functions)/Interaction/interactionId.mdx b/content/docs/(functions)/Interaction/interactionId.mdx index 46a07aab..945be3b5 100644 --- a/content/docs/(functions)/Interaction/interactionId.mdx +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -11,7 +11,7 @@ This function returns the unique identifier associated with a user interaction l -```php +```cc $interactionReply[$interactionId;yes] /* Returns the interaction ID */ ``` diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 71e2db87..0bca422a 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -22,7 +22,7 @@ Ephemeral messages are only visible to the user who triggered the interaction. U -```php +```cc $interactionReply[Hello World;yes] ``` diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx index da0e655a..cacaf1b6 100644 --- a/content/docs/(functions)/Member/authorAvatar.mdx +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -6,7 +6,7 @@ Returns the avatar (profile picture) URL of the user who executed the command. ## Usage -```php +```cc $authorAvatar[serverAvatar] ``` 1. **serverAvatar** - (Optional) default value: `no`. Can be `yes` or `no`. Discord does have two types of avatars, global and per-server (custom avatar in each server). If no server avatar is set, the global avatar will be used. diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index cd8f939d..3da5166a 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -6,7 +6,7 @@ Returns the ID of the user who executed the command. ## Usage -```php +```cc $authorID ``` diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index aeb742f0..d54090f7 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -6,7 +6,7 @@ Bans a user from the server. ## Usage -```php +```cc $ban[userID;reason;messages to delete] ``` 1. **userID** - The ID of the user to ban. diff --git a/content/docs/(functions)/Member/blackListIDs.mdx b/content/docs/(functions)/Member/blackListIDs.mdx index 0643f89c..a0ac45b9 100644 --- a/content/docs/(functions)/Member/blackListIDs.mdx +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -8,7 +8,7 @@ Prevent users from using a command by blacklisting their IDs. The `$blackListIDs` function allows you to restrict access to a command for a specified list of users. If a blacklisted user attempts to use the command, the function will return a custom error message. -```php +```cc $blackListIDs[userID;userID;...;error message] ``` 1. **userID** - This makes user not able to run this command. You can add as many userIDs as you want, separated with semicolon (`;`). diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx index 743d0cf4..6e2998f4 100644 --- a/content/docs/(functions)/Member/boostingSince.mdx +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -6,7 +6,7 @@ Returns the date a user started boosting the server. ## Usage -```php +```cc $boostingSince[userID;date/ms] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to return boosting date diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 5cd8bd47..3789188c 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -6,7 +6,7 @@ Changes the nickname of a specified member in the server. ## Usage: -```php +```cc $changeNickname[userID;nickname] ``` 1. **userID** - The ID of the member whose nickname you want to change. diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx index 16660a87..a88870b7 100644 --- a/content/docs/(functions)/Member/discriminator.mdx +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -6,7 +6,7 @@ Returns the discriminator of the user who executed the command, or a specified m ## Usage: -```php +```cc $discriminator[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user you want to return the discriminator from. diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx index 08f6a209..3c5069e3 100644 --- a/content/docs/(functions)/Member/displayName.mdx +++ b/content/docs/(functions)/Member/displayName.mdx @@ -6,7 +6,7 @@ Returns the display name of a specified user. This is the name that's shown for ## Usage -```php +```cc $displayName[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return display name from. diff --git a/content/docs/(functions)/Member/eventNewNickname.mdx b/content/docs/(functions)/Member/eventNewNickname.mdx index 07b0d1ac..090d9813 100644 --- a/content/docs/(functions)/Member/eventNewNickname.mdx +++ b/content/docs/(functions)/Member/eventNewNickname.mdx @@ -6,7 +6,7 @@ Returns the new nickname of a member when their nickname is updated. Works in `O ## Usage -```php +```cc $eventNewNickname ``` @@ -16,7 +16,7 @@ $eventNewNickname Imagine you have a Nickname Change command that logs the new nickname to a channel -```php +```cc $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` diff --git a/content/docs/(functions)/Member/eventOldNickname.mdx b/content/docs/(functions)/Member/eventOldNickname.mdx index 4355e9dc..3f07e26d 100644 --- a/content/docs/(functions)/Member/eventOldNickname.mdx +++ b/content/docs/(functions)/Member/eventOldNickname.mdx @@ -6,7 +6,7 @@ Returns the old nickname of a member when their nickname is updated. Works in `O ## Usage -```php +```cc $eventOldNickname ``` @@ -16,7 +16,7 @@ $eventOldNickname Imagine you have a Nickname Change command that logs the new nickname to a channel -```php +```cc $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx index 0a9ee090..303d110e 100644 --- a/content/docs/(functions)/Member/findMember.mdx +++ b/content/docs/(functions)/Member/findMember.mdx @@ -6,7 +6,7 @@ Searches for a user in the current server by their nickname, ID, mention, userna ## Usage: -```php +```cc $findMember[query;returnCurrentUser] ``` 1. **query** - Can be userID, nickname, mention, username, username#descriminator. diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx index c1040f95..db8c8d0f 100644 --- a/content/docs/(functions)/Member/getUserBadges.mdx +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -6,7 +6,7 @@ Returns the Discord badges from specified user. If none found, returns `none`. I ## Usage -```php +```cc $getUserBadges[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. Which user to return badges from. diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx index c0e061c6..36ab8bc7 100644 --- a/content/docs/(functions)/Member/globalName.mdx +++ b/content/docs/(functions)/Member/globalName.mdx @@ -6,7 +6,7 @@ Returns the global name of the user ## Usage -```php +```cc $globalName[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The user ID of the user you want to return global name from. diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx index e436e5cc..f81c7e64 100644 --- a/content/docs/(functions)/Member/hasAnyPerm.mdx +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -6,7 +6,7 @@ Checks if a user has one of the given permissions. Returns `true` or `false`. ## Usage -```php +```cc $hasAnyPerm[userID;permission1;permission2;...] ``` 1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx index aa871bf4..8ad0ec01 100644 --- a/content/docs/(functions)/Member/hasAnyRole.mdx +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -6,7 +6,7 @@ Checks if a user has one of the given roles. Returns `true` or `false`. ## Usage -```php +```cc $hasAnyRole[userID;roleID1;roleID2;...] ``` 1. **userID** - (Optional) default value: `$authorID`. If not included or left empty, $authorID will be used. diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx index dc67faa4..58e15acb 100644 --- a/content/docs/(functions)/Member/hasPerms.mdx +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -6,7 +6,7 @@ Checks if user has all of the given permissions. Returns `true` or `false`. ## Usage: -```php +```cc $hasPerms[userID;perm1;perm2;...] ``` 1. **userID** - User you want to check for permissions. diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx index 39c09ad5..eaaa8781 100644 --- a/content/docs/(functions)/Member/hasRoles.mdx +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -6,7 +6,7 @@ Checks if user has all of the given roles. Returns `true` or `false`. ## Usage: -```php +```cc $hasRoles[userID;role1;role2;...] ``` 1. **userID** - User you want to check for roles. diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index f57506d2..6ce106b7 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -6,7 +6,7 @@ Checks if a user is banned from the guild. Returns `true` or `false`. ## Usage -```php +```cc $isBanned[userID] ``` 1. **userID** - The ID of the user to check if it's banned. diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx index d3092d5f..c30261b9 100644 --- a/content/docs/(functions)/Member/isUserDMEnabled.mdx +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -6,7 +6,7 @@ This function checks if a user has direct messages (DMs) enabled. It returns `t ## Usage -```php +```cc $isUserDMEnabled[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of the user you want to check. diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index 73f90dee..c575482a 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -6,7 +6,7 @@ Kicks a user from the server. ## Usage -```php +```cc $kick[userID;reason] ``` 1. **userID** - The ID of the user to kick. diff --git a/content/docs/(functions)/Member/memberSearch.mdx b/content/docs/(functions)/Member/memberSearch.mdx index a5ba781c..5438795e 100644 --- a/content/docs/(functions)/Member/memberSearch.mdx +++ b/content/docs/(functions)/Member/memberSearch.mdx @@ -6,7 +6,7 @@ Search for members with username or nickname in the server and get their informa ## Usage -```php +```cc $memberSearch[username/nickname;amount to return (Default is 1);separator (Default is ,);info to return (Default is id)] ``` diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx index da4ac0dd..e3be0b6e 100644 --- a/content/docs/(functions)/Member/membersWithStatus.mdx +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -6,7 +6,7 @@ Returns a list of member IDs who have specified status within the server separat ## Usage -```php +```cc $membersWithStatus[Status1;Status2;...] ``` 1. **Status N** - You can add multiple statuses. Can be `online`, `idle`, `dnd` (Do Not Disturb), `offline` (Includes invisible users), `streaming` (only valid for activities), `mobile` (only valid for platforms), `desktop` (only valid for platforms), `web` (only valid for platforms) diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index c642ae2c..4a5c9c88 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -6,7 +6,7 @@ Returns a mention of a user. ## Usage -```php +```cc $mention[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to get mentioned. diff --git a/content/docs/(functions)/Member/moveUser.mdx b/content/docs/(functions)/Member/moveUser.mdx index c95ffb62..af02f4e9 100644 --- a/content/docs/(functions)/Member/moveUser.mdx +++ b/content/docs/(functions)/Member/moveUser.mdx @@ -6,7 +6,7 @@ Moves a user to a different voice channel, or disconnects them from their curren ## Usage -```php +```cc $moveUser[userID;channelID;reason] ``` 1. **userID** - The ID of user to be moved. diff --git a/content/docs/(functions)/Member/muteUser.mdx b/content/docs/(functions)/Member/muteUser.mdx index 2f6a903a..b09214b5 100644 --- a/content/docs/(functions)/Member/muteUser.mdx +++ b/content/docs/(functions)/Member/muteUser.mdx @@ -6,7 +6,7 @@ Mutes or unmutes a user in a voice channel. ## Usage -```php +```cc $muteUser[userID;mute;reason] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to mute diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 781ab232..9f3c1a99 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -6,7 +6,7 @@ Returns the nickname of the user or the display name if you specified the 2nd in ## Usage -```php +```cc $nickname[User ID;Return Display name if no nickname exists (yes/no, default is no)] ``` 1. **User ID** - (Optional) default value: `$authorID`. The ID of user to return nickname from. diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index 683a3183..bc1726f2 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -8,7 +8,7 @@ Returns the status of a user. Can be `online`, `offline`, `idle` or `dnd`. ## Usage -```php +```cc $status[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of user to return the status from. diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index 223d7fb3..f793895e 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -6,7 +6,7 @@ Unbans a user from the server. ## Usage -```php +```cc $unban[userID/username;reason] ``` 1. **userID/username** - The ID or username of user to unban. diff --git a/content/docs/(functions)/Member/upvoteReferralUserID.mdx b/content/docs/(functions)/Member/upvoteReferralUserID.mdx index f4cce14b..b2ab4013 100644 --- a/content/docs/(functions)/Member/upvoteReferralUserID.mdx +++ b/content/docs/(functions)/Member/upvoteReferralUserID.mdx @@ -6,7 +6,7 @@ Returns the ID of the user whose referral link was used for the current upvote. ## Usage -```php +```cc $upvoteReferralUserID ``` diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 7cd59b4d..8a17d176 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -7,7 +7,7 @@ Retrieve an information about user given his user id, like his username. Multiple options to retrive informations from user. ## Usage -```php +```cc $user[userID;option] ``` diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx index feec253f..4c00742b 100644 --- a/content/docs/(functions)/Member/userAvatar.mdx +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -5,7 +5,7 @@ title: "$userAvatar" Returns the avatar (profile picture) URL of the user who was specified. ## Usage -```php +```cc $userAvatar[userID;size;dynamic;serverAvatar] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return avatar URL from. diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx index 7d5a092d..83ac31e8 100644 --- a/content/docs/(functions)/Member/userBanner.mdx +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -6,7 +6,7 @@ Returns the banner URL of a user. ## Usage -```php +```cc $userBanner[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return banner URL from. If no banner is found, returns `undefined`. diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx index b52d9161..c9de28ff 100644 --- a/content/docs/(functions)/Member/userConnectedVC.mdx +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -6,7 +6,7 @@ Returns the ID of a voice channel the user is currently connected to. ## Usage -```php +```cc $userConnectedVC[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return voice channel they are connected to. diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index fd2eb3bd..655412e2 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -6,7 +6,7 @@ Checks if a user exists in the server. Returns `true` if the user exists, and `f ## Usage -```php +```cc $userExists[userID] ``` 1. **userID** - The ID of the user to check. If left empty, false will be returned. diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index 23bbd416..50626282 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -5,7 +5,7 @@ title: "$userID" Returns a user ID based on the given username. ## Usage -```php +```cc $userID[username] ``` 1. **username** - (Optional) if not provided, $authorID will be returned. The username of a user you want to return ID of. diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index d9495f75..0b38765e 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -6,7 +6,7 @@ Returns a list of permissions a user has across the server based on their roles. ## Usage -```php +```cc $userPerms[userID;separator] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return permissions from. diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index dd07b4a6..c2f67363 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -6,7 +6,7 @@ Checks if a user has reacted to a message with the given emoji. Returns `true` o ## Usage -```php +```cc $userReacted[channelID;messageID;userID;reaction] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to check reaction in. diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index 3017930a..8be14f40 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -6,7 +6,7 @@ Returns the hex color code of the users highest role. ## Usage -```php +```cc $userRoleColor[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return top role color from. diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index c3f9b8dd..5e5d0c20 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -6,7 +6,7 @@ Returns the list of roles from a user. ## Usage -```php +```cc $userRoles[userID;type;separator] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return roles from. diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index 441b58eb..b8183941 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -6,7 +6,7 @@ Returns the username and tag (discriminator) of a user. ## Usage -```php +```cc $userTag[userID] ``` 1. **userID** - (Opional) default value: `$authorID`. The ID of a user you want to return username and tag from. diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index 9dcd4284..5ea9666a 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -6,7 +6,7 @@ Returns the username of the given user. ## Usage -```php +```cc $username[userID] ``` 1. **userID** - (Optional) default value: `$authorID`. The ID of a user you want to return nickname from. diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index ee61ae50..5db1d749 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -6,7 +6,7 @@ Returns a list of users banned from the current server. ## Usage -```php +```cc $usersBanned[type;separator] ``` 1. **type** - (Optional) default value: `username`. Can be `id`, `username` or `mention`. What format of returned users do you want. diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index e09d13eb..95598dfb 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -6,7 +6,7 @@ Returns a list of users in given text or voice channel. ## Usage -```php +```cc $usersInChannel[channelID;type;separator] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to return list of users from. diff --git a/content/docs/(functions)/Member/usersTyping.mdx b/content/docs/(functions)/Member/usersTyping.mdx index 11fed9e8..7fce1512 100644 --- a/content/docs/(functions)/Member/usersTyping.mdx +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -6,7 +6,7 @@ Returns a list of users currently typing in a channel. If no users are typing, r ## Usage -```php +```cc $usersTyping[channelID;type;separator] ``` 1. **channelID** - (Optional) default value: `$channelID`. The ID of a channel you want to check users typing in. diff --git a/content/docs/(functions)/Member/usersWithRole.mdx b/content/docs/(functions)/Member/usersWithRole.mdx index e3571706..efdf5d37 100644 --- a/content/docs/(functions)/Member/usersWithRole.mdx +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -6,7 +6,7 @@ Returns a list of users who have the given role. ## Usage -```php +```cc $usersWithRole[roleID;separator;type] ``` 1. **roleID** - (Optional) default value: (users without any roles). The ID of a role you want to retrive users with. diff --git a/content/docs/(functions)/Message/addCmdReactions.mdx b/content/docs/(functions)/Message/addCmdReactions.mdx index fa852941..e023e088 100644 --- a/content/docs/(functions)/Message/addCmdReactions.mdx +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -19,7 +19,7 @@ This function allows you to add multiple reactions to the message that triggered This example adds a checkmark and a cross emoji as reactions to the user's command message. -```php +```cc $addCmdReactions[✅;❌] ``` diff --git a/content/docs/(functions)/Message/argsCheck.mdx b/content/docs/(functions)/Message/argsCheck.mdx index ceae1c0b..b083351b 100644 --- a/content/docs/(functions)/Message/argsCheck.mdx +++ b/content/docs/(functions)/Message/argsCheck.mdx @@ -10,7 +10,7 @@ This function checks if the user has provided the correct number of arguments. I ## Syntax -```php +```cc $argsCheck[(>//1;You need to provide at least two arguments!] ``` @@ -43,7 +43,7 @@ This ensures the user provides more than one argument (e.g., 2, 3, 4, etc.). If **3. Checking for Less Than 3 Arguments:** -```php +```cc $argsCheck[<3;Please provide fewer than three arguments.] ``` @@ -51,7 +51,7 @@ This checks if the user provides less than three arguments (e.g., 0, 1, or 2 arg **4. Checking for Exactly 1 Argument with No Error Message:** -```php +```cc $argsCheck[1;] ``` diff --git a/content/docs/(functions)/Message/argsCount.mdx b/content/docs/(functions)/Message/argsCount.mdx index 295cb5e8..612f467c 100644 --- a/content/docs/(functions)/Message/argsCount.mdx +++ b/content/docs/(functions)/Message/argsCount.mdx @@ -6,6 +6,6 @@ This function returns the number of arguments a user has provided to your bot's ## Usage -```php +```cc $argsCount ``` diff --git a/content/docs/(functions)/Message/awaitMessage.mdx b/content/docs/(functions)/Message/awaitMessage.mdx index 820dff39..b2345efa 100644 --- a/content/docs/(functions)/Message/awaitMessage.mdx +++ b/content/docs/(functions)/Message/awaitMessage.mdx @@ -6,7 +6,7 @@ The `$awaitMessage` function allows your bot to wait for a specific user's messa ## Usage -```php +```cc $awaitMessage[message;userid / everyone;timeout;return message ID instead of content] ``` @@ -35,7 +35,7 @@ The `timeout` parameter specifies how long the bot will wait for a user's messag This example sends the message "Are you tall?" and waits for the user who executed the command to respond. It then displays the user's answer. -```php +```cc !!exec Your answer is: $awaitMessage[Are you tall?;$authorID] ``` diff --git a/content/docs/(functions)/Message/clearReactions.mdx b/content/docs/(functions)/Message/clearReactions.mdx index be796816..4fa6b363 100644 --- a/content/docs/(functions)/Message/clearReactions.mdx +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -16,13 +16,13 @@ This function allows you to clear reactions from a specific message. You can eit Clearing all reactions from a message: -```php +```cc $clearReactions[8372387429384729;9483749283749283;all] ``` Clearing only the 👍 reactions from a message: -```php +```cc $clearReactions[8372387429384729;9483749283749283;👍] ``` diff --git a/content/docs/(functions)/Message/deleteCommand.mdx b/content/docs/(functions)/Message/deleteCommand.mdx index a865c413..4e4317ea 100644 --- a/content/docs/(functions)/Message/deleteCommand.mdx +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -6,19 +6,19 @@ deletes the user's message that triggered the command ## Usage -```php +```cc $deleteCommand[Time Delete After (optional, i.e 30s)] ``` ### Example (Delete User Message Immediately): -```php +```cc $deleteCommand ``` ### Example (Delete Message After Certain Time): -```php +```cc $deleteCommand[1m] ``` diff --git a/content/docs/(functions)/Message/disableChannelMentions.mdx b/content/docs/(functions)/Message/disableChannelMentions.mdx index aa0767f4..4ecfdd77 100644 --- a/content/docs/(functions)/Message/disableChannelMentions.mdx +++ b/content/docs/(functions)/Message/disableChannelMentions.mdx @@ -8,7 +8,7 @@ This function prevents the bot from mentioning any channels within a message. Th Simply include `$disableChannelMentions` in your code. It doesn't require any arguments. -```php +```cc $disableChannelMentions ``` @@ -16,7 +16,7 @@ $disableChannelMentions Let's say you have a command that echoes back a user's input. If the user includes a channel mention (`#general`), normally the bot would ping that channel. By using `$disableChannelMentions`, the bot will send the message, but the channel mention will be rendered as plain text and *won't* send a notification. -```php +```cc $disableChannelMentions $message ``` diff --git a/content/docs/(functions)/Message/disableEveryoneMentions.mdx b/content/docs/(functions)/Message/disableEveryoneMentions.mdx index 96c92b3b..710ed49a 100644 --- a/content/docs/(functions)/Message/disableEveryoneMentions.mdx +++ b/content/docs/(functions)/Message/disableEveryoneMentions.mdx @@ -8,7 +8,7 @@ This command disables the ability for users to mention everyone in the channel u Simply use the command: -```php +```cc $disableEveryoneMentions ``` diff --git a/content/docs/(functions)/Message/disableRoleMentions.mdx b/content/docs/(functions)/Message/disableRoleMentions.mdx index 285db502..e4c7911d 100644 --- a/content/docs/(functions)/Message/disableRoleMentions.mdx +++ b/content/docs/(functions)/Message/disableRoleMentions.mdx @@ -12,7 +12,7 @@ This function prevents the bot from mentioning any roles in its messages. This i Simply include `$disableRoleMentions` in your command response or any message where you want to disable role mentions. -```php +```cc $disableRoleMentions ``` @@ -20,7 +20,7 @@ $disableRoleMentions Let's say you have a command that sends a welcome message, but you don't want to mention any roles in that message: -```php +```cc $disableRoleMentions Hello and Welcome! ``` diff --git a/content/docs/(functions)/Message/editEmbed.mdx b/content/docs/(functions)/Message/editEmbed.mdx index 0c6e1332..4b8822cf 100644 --- a/content/docs/(functions)/Message/editEmbed.mdx +++ b/content/docs/(functions)/Message/editEmbed.mdx @@ -6,7 +6,7 @@ Edit an existing embed within a specified message. ## Usage -```php +```cc $editEmbed[channel id (optional);message id (optional);New data (curl);Embed Number (optional, default 1)] ``` diff --git a/content/docs/(functions)/Message/editIn.mdx b/content/docs/(functions)/Message/editIn.mdx index 2fb398fe..16a64fcd 100644 --- a/content/docs/(functions)/Message/editIn.mdx +++ b/content/docs/(functions)/Message/editIn.mdx @@ -6,7 +6,7 @@ Edits a bot's message after a specified delay. This function allows you to updat ## Usage -```php +```cc $editIn[time;new message] ``` @@ -17,7 +17,7 @@ $editIn[time;new message] ## Example: -```php +```cc Rolling the dice... $editIn[3s;You got $random[1;6]] ``` diff --git a/content/docs/(functions)/Message/editMessage.mdx b/content/docs/(functions)/Message/editMessage.mdx index b24b3b0d..f2b1d378 100644 --- a/content/docs/(functions)/Message/editMessage.mdx +++ b/content/docs/(functions)/Message/editMessage.mdx @@ -12,7 +12,7 @@ Edits a message previously sent by the bot. This function allows you to modify t ## Example -```php +```cc $editMessage[123456789012345678;This is the updated message content!] ``` diff --git a/content/docs/(functions)/Message/editWebhookMessage.mdx b/content/docs/(functions)/Message/editWebhookMessage.mdx index eda02d9a..6e626d85 100644 --- a/content/docs/(functions)/Message/editWebhookMessage.mdx +++ b/content/docs/(functions)/Message/editWebhookMessage.mdx @@ -6,7 +6,7 @@ This command allows you to edit a message that was sent by a webhook. You'll nee ## Syntax -```php +```cc $editWebhookMessage[Webhook ID;Webhook Token;Message ID;New Content;Thread ID (Optional)] ``` @@ -22,12 +22,12 @@ $editWebhookMessage[Webhook ID;Webhook Token;Message ID;New Content;Thread ID (O Let's say you have a webhook with the ID `123456789012345678`, the token `abcdefg1234567890abcdefg1234567890`, and you want to edit a message with the ID `987654321098765432`. You want to change the message to "Hello, world! This message has been edited." -```php +```cc $editWebhookMessage[123456789012345678;abcdefg1234567890abcdefg1234567890;987654321098765432;Hello, world! This message has been edited.] ``` If the message was in a thread with the ID `555555555555555555`, the command would look like this: -```php +```cc $editWebhookMessage[123456789012345678;abcdefg1234567890abcdefg1234567890;987654321098765432;Hello, world! This message has been edited.;555555555555555555] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Message/emoji.mdx b/content/docs/(functions)/Message/emoji.mdx index f12e9908..4b50a0ec 100644 --- a/content/docs/(functions)/Message/emoji.mdx +++ b/content/docs/(functions)/Message/emoji.mdx @@ -8,7 +8,7 @@ This function packs a punch with **11 different functionalities** related to emo The syntax is simple and powerful: -```php +```cc $emoji[emojiID;option] ``` diff --git a/content/docs/(functions)/Message/emojiID.mdx b/content/docs/(functions)/Message/emojiID.mdx index e1ddc8df..c6376648 100644 --- a/content/docs/(functions)/Message/emojiID.mdx +++ b/content/docs/(functions)/Message/emojiID.mdx @@ -10,6 +10,6 @@ This variable returns the unique ID of the emoji that a user reacted with. This Simply use `$emojiID` within your command or script where you need to access the emoji's ID. -```php +```cc $emojiID ``` \ No newline at end of file diff --git a/content/docs/(functions)/Message/emojiName.mdx b/content/docs/(functions)/Message/emojiName.mdx index 626398da..8b3bc5cf 100644 --- a/content/docs/(functions)/Message/emojiName.mdx +++ b/content/docs/(functions)/Message/emojiName.mdx @@ -8,6 +8,6 @@ This function, `$emojiName`, returns the name of the emoji a user used in a reac The function is very straightforward. Simply use `$emojiName` within your code. -```php +```cc $emojiName ``` \ No newline at end of file diff --git a/content/docs/(functions)/Message/emojiToString.mdx b/content/docs/(functions)/Message/emojiToString.mdx index dae8db9f..e8d816ab 100644 --- a/content/docs/(functions)/Message/emojiToString.mdx +++ b/content/docs/(functions)/Message/emojiToString.mdx @@ -10,7 +10,7 @@ This function returns the actual emoji that a user reacted with in a reaction ad ## Usage -```php +```cc $emojiToString ``` @@ -18,7 +18,7 @@ $emojiToString Let's say a user reacts to a message with the 👍 emoji. In a reaction add event, you might use `$emojiToString` to get the actual "👍" emoji: -```php +```cc $emojiToString ``` diff --git a/content/docs/(functions)/Message/emojisFromMessage.mdx b/content/docs/(functions)/Message/emojisFromMessage.mdx index 6c6a6d6b..b3b7c537 100644 --- a/content/docs/(functions)/Message/emojisFromMessage.mdx +++ b/content/docs/(functions)/Message/emojisFromMessage.mdx @@ -10,7 +10,7 @@ You can use `$emojisFromMessage` in two ways: **1. From User Message (Default):** -```php +```cc $emojisFromMessage ``` @@ -18,7 +18,7 @@ This will extract emojis from the message that triggered the command. **2. From Custom Text:** -```php +```cc $emojisFromMessage[text;separator (optional)] ``` @@ -35,7 +35,7 @@ Then consider these usages: **Example 1: Extracting emojis from the user's message using the default usage.** -```php +```cc $emojisFromMessage ``` @@ -45,7 +45,7 @@ This would return: **Example 2: Extracting emojis from the user's message, separated by a comma and a space.** -```php +```cc $emojisFromMessage[;, ] ``` @@ -55,7 +55,7 @@ This would return: **Example 3: Extracting emojis from specific text with a dash as a separator.** -```php +```cc $emojisFromMessage[This has 🎉 one and 😁 two emojis; - ] ``` diff --git a/content/docs/(functions)/Message/enableEveryoneMentions.mdx b/content/docs/(functions)/Message/enableEveryoneMentions.mdx index cebf69e1..403904cb 100644 --- a/content/docs/(functions)/Message/enableEveryoneMentions.mdx +++ b/content/docs/(functions)/Message/enableEveryoneMentions.mdx @@ -8,7 +8,7 @@ This command allows you to enable the use of `@everyone` mentions in your Discor Simply run the `$enableEveryoneMentions` command. -```php +```cc $enableEveryoneMentions ``` diff --git a/content/docs/(functions)/Message/forwardMessage.mdx b/content/docs/(functions)/Message/forwardMessage.mdx index 639adb8d..66f1d1b7 100644 --- a/content/docs/(functions)/Message/forwardMessage.mdx +++ b/content/docs/(functions)/Message/forwardMessage.mdx @@ -8,6 +8,6 @@ forward a message to another channel #### Example Forwarding a message with ID `1234` to another channel called `Target Channel` -```php +```cc $forwardMessage[$channelID;1234;Target Channel] ``` diff --git a/content/docs/(functions)/Message/getEmbed.mdx b/content/docs/(functions)/Message/getEmbed.mdx index 4c8cce2c..8b3ecba4 100644 --- a/content/docs/(functions)/Message/getEmbed.mdx +++ b/content/docs/(functions)/Message/getEmbed.mdx @@ -6,7 +6,7 @@ Retrieves information from an embed within a specific message. This function all ## Usage -```php +```cc $getEmbed[Channel ID (optional);Message ID (optional);Info (optional, default is description);Embed Number (optional, default is 1)] ``` diff --git a/content/docs/(functions)/Message/getMessage.mdx b/content/docs/(functions)/Message/getMessage.mdx index ec28ef5c..c0ce039e 100644 --- a/content/docs/(functions)/Message/getMessage.mdx +++ b/content/docs/(functions)/Message/getMessage.mdx @@ -6,7 +6,7 @@ Retrieves information about a specific message using its ID. This function allow ## Syntax -```php +```cc $getMessage[channelID;messageID;attribute] ``` @@ -26,7 +26,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 1. **Getting the message content:** - ```php + ```cc $getMessage[987654321098765432;123456789012345678;content] ``` @@ -34,7 +34,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 2. **Getting the user ID of the message sender:** - ```php + ```cc $getMessage[987654321098765432;123456789012345678;userID] ``` @@ -42,7 +42,7 @@ Let's say you have a message with the ID `123456789012345678` in channel `987654 3. **Getting the embed description (if the message contains an embed):** - ```php + ```cc $getMessage[987654321098765432;123456789012345678;desc] ``` diff --git a/content/docs/(functions)/Message/getMessageReactions.mdx b/content/docs/(functions)/Message/getMessageReactions.mdx index 3e6e47e6..f2da4684 100644 --- a/content/docs/(functions)/Message/getMessageReactions.mdx +++ b/content/docs/(functions)/Message/getMessageReactions.mdx @@ -10,7 +10,7 @@ The `$getMessageReactions` command allows you to list the reactions (emojis) tha ## Usage -```php +```cc $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (optional)] ``` @@ -24,7 +24,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from the current message in the current channel (most common use):** - ```php + ```cc $getMessageReactions ``` @@ -32,7 +32,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in the current channel:** - ```php + ```cc $getMessageReactions[$messageID] ``` @@ -40,7 +40,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in a specific channel:** - ```php + ```cc $getMessageReactions[123456789012345678;987654321098765432] ``` @@ -48,7 +48,7 @@ $getMessageReactions[Channel ID (optional);Message ID (optional);Separator (opti * **Get reactions from a specific message in a specific channel, using a custom separator:** - ```php + ```cc $getMessageReactions[123456789012345678;987654321098765432; | ] ``` diff --git a/content/docs/(functions)/Message/getReactionCount.mdx b/content/docs/(functions)/Message/getReactionCount.mdx index 2920cb74..e64af618 100644 --- a/content/docs/(functions)/Message/getReactionCount.mdx +++ b/content/docs/(functions)/Message/getReactionCount.mdx @@ -6,7 +6,7 @@ Get the number of reactions for a specific emoji on a message. ## Usage -```php +```cc $getReactionCount[channelID;messageID;reaction] ``` diff --git a/content/docs/(functions)/Message/getReactions.mdx b/content/docs/(functions)/Message/getReactions.mdx index a94bbc5a..f5122a0c 100644 --- a/content/docs/(functions)/Message/getReactions.mdx +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -25,7 +25,7 @@ Retrieve a list of users who reacted with a specific emoji to a message. **Code:** -```php +```cc $getReactions[832894131844128888;940739445487988807;👍;mention] ``` diff --git a/content/docs/(functions)/Message/hasEmbeds.mdx b/content/docs/(functions)/Message/hasEmbeds.mdx index a1b848a1..5b2a0e31 100644 --- a/content/docs/(functions)/Message/hasEmbeds.mdx +++ b/content/docs/(functions)/Message/hasEmbeds.mdx @@ -10,7 +10,7 @@ It returns `true` if the message contains at least one embed, and `false` otherw ## Syntax -```php +```cc $hasEmbeds[channelID;messageID] ``` @@ -23,7 +23,7 @@ $hasEmbeds[channelID;messageID] Let's say you want to check if a message with ID `1234567890` in channel `9876543210` has any embeds. You would use the following: -```php +```cc $hasEmbeds[9876543210;1234567890] ``` diff --git a/content/docs/(functions)/Message/hyperlink.mdx b/content/docs/(functions)/Message/hyperlink.mdx index 5a8e6f1e..3f9e7862 100644 --- a/content/docs/(functions)/Message/hyperlink.mdx +++ b/content/docs/(functions)/Message/hyperlink.mdx @@ -6,7 +6,7 @@ The `$hyperlink` function allows you to create hyperlinks specifically designed ## Usage -```php +```cc $hyperlink[url;title] ``` @@ -17,7 +17,7 @@ $hyperlink[url;title] Let's say you want to create a Discord embed with a description that includes a link to your Discord server. You could use the following: -```php +```cc $description[$hyperlink[https://discord.com;Join us on Discord!]] ``` diff --git a/content/docs/(functions)/Message/message.mdx b/content/docs/(functions)/Message/message.mdx index fa25c171..efb27616 100644 --- a/content/docs/(functions)/Message/message.mdx +++ b/content/docs/(functions)/Message/message.mdx @@ -15,7 +15,7 @@ When used in a **Forward Message** trigger, `$message` instead returns the **con ## Usage -```php +```cc $message $message[index] $message[startIndex+] diff --git a/content/docs/(functions)/Message/messageAttachment.mdx b/content/docs/(functions)/Message/messageAttachment.mdx index 76b846a1..0a6cd73a 100644 --- a/content/docs/(functions)/Message/messageAttachment.mdx +++ b/content/docs/(functions)/Message/messageAttachment.mdx @@ -6,7 +6,7 @@ This function retrieves the URL of the first attachment found in a message. If a #### Usage: -```php +```cc $messageAttachment ``` diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index ed11cff6..f2663d88 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -14,7 +14,7 @@ To use the `$msg` function, you need to provide the channel ID, the message ID, #### Example: -```php +```cc $msg[1234567890;9876543210;authorname] ``` diff --git a/content/docs/(functions)/Message/pinMessage.mdx b/content/docs/(functions)/Message/pinMessage.mdx index abee60d0..f335e48d 100644 --- a/content/docs/(functions)/Message/pinMessage.mdx +++ b/content/docs/(functions)/Message/pinMessage.mdx @@ -14,7 +14,7 @@ There are two ways to use `$pinMessage`: **1. Pin the Command Message:** - ```php + ```cc $pinMessage ``` @@ -22,7 +22,7 @@ There are two ways to use `$pinMessage`: **2. Pin a Specific Message:** - ```php + ```cc $pinMessage[channelID;messageID] ``` @@ -33,7 +33,7 @@ There are two ways to use `$pinMessage`: To pin a message with the ID `123456789012345678` in the channel with the ID `987654321098765432`, you would use: - ```php + ```cc $pinMessage[987654321098765432;123456789012345678] ``` diff --git a/content/docs/(functions)/Message/poll.mdx b/content/docs/(functions)/Message/poll.mdx index 8cf42622..9c3f4309 100644 --- a/content/docs/(functions)/Message/poll.mdx +++ b/content/docs/(functions)/Message/poll.mdx @@ -6,7 +6,7 @@ retrieve information about a poll in a message ## Usage -```php +```cc $poll[Channel ID (default $channelID);Message ID (default $messageID);data] ``` diff --git a/content/docs/(functions)/Message/referenceChannelID.mdx b/content/docs/(functions)/Message/referenceChannelID.mdx index 033ea9b3..93cf8d34 100644 --- a/content/docs/(functions)/Message/referenceChannelID.mdx +++ b/content/docs/(functions)/Message/referenceChannelID.mdx @@ -8,7 +8,7 @@ This variable is useful when you need to know the channel where the original mes ## Syntax -```php +```cc $referenceChannelID ``` diff --git a/content/docs/(functions)/Message/reply.mdx b/content/docs/(functions)/Message/reply.mdx index a436e10d..ee447f3a 100644 --- a/content/docs/(functions)/Message/reply.mdx +++ b/content/docs/(functions)/Message/reply.mdx @@ -6,7 +6,7 @@ This command allows your bot to reply to a specific message within a channel. I ## Usage -```php +```cc $reply[messageID (optional); mention on reply (yes/no, default is no)] ``` @@ -24,7 +24,7 @@ $reply[messageID (optional); mention on reply (yes/no, default is no)] This example demonstrates how to reply to the user's message and ping them in the reply. -```php +```cc Hello $username! $reply[$messageID;yes] ``` @@ -42,7 +42,7 @@ $reply[$messageID;yes] This example shows how to reply to the user's message without mentioning them. -```php +```cc Hello $username! $reply[$messageID;no] ``` diff --git a/content/docs/(functions)/Message/sendCrosspostingMessage.mdx b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx index afffb1c5..72b9d0da 100644 --- a/content/docs/(functions)/Message/sendCrosspostingMessage.mdx +++ b/content/docs/(functions)/Message/sendCrosspostingMessage.mdx @@ -6,7 +6,7 @@ Send a message to multiple channels simultaneously. This function is useful for ## Syntax -```php +```cc $sendCrosspostingMessage[message;channel1;channel2;...] ``` @@ -22,7 +22,7 @@ $sendCrosspostingMessage[message;channel1;channel2;...] This example demonstrates sending the message "Hello World!" to the channels named `#general` and `#off-topics`. -```php +```cc $sendCrosspostingMessage[Hello World!;general;off-topics] ``` @@ -30,7 +30,7 @@ $sendCrosspostingMessage[Hello World!;general;off-topics] To use Channel IDs instead of names, you'll need to enable Developer Mode in Discord. Go to User Settings -> Advanced, and toggle Developer Mode on. Then, right-click on the channel you want to use and select "Copy ID." You can then paste this ID into the `$sendCrosspostingMessage` function. For example: -```php +```cc $sendCrosspostingMessage[Hello World!;123456789012345678;987654321098765432] ``` diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index be68ef5d..984d5280 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -15,7 +15,7 @@ Sends a message to the channel where the command was executed. **Example:** -```php +```cc !!exec $sendMessage[This is a fantastic message!;no] ``` diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index af464a69..99e39401 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -15,11 +15,11 @@ Sends a message via a Discord webhook using its ID and token. #### Example: -```php +```cc !!exec $sendWebhook[98723xxxx...;K9oJxxxx...;Hello world!] ``` -```php +```cc Webhook: Hello world! ``` diff --git a/content/docs/(functions)/Message/sentMessageID.mdx b/content/docs/(functions)/Message/sentMessageID.mdx index ad85db71..0f131e52 100644 --- a/content/docs/(functions)/Message/sentMessageID.mdx +++ b/content/docs/(functions)/Message/sentMessageID.mdx @@ -10,7 +10,7 @@ This function allows you to retrieve the message ID of the most recently sent me Simply use `$sentMessageID` in your commands to reference the last message's ID. -```php +```cc $sentMessageID ``` @@ -18,7 +18,7 @@ $sentMessageID This example demonstrates how to send a message, wait for 3 seconds, and then delete the message using its ID obtained with `$sentMessageID`. -```php +```cc $sendMessage[Hello World] $wait[3s] $deleteMessage[$sentMessageID] diff --git a/content/docs/(functions)/Message/unpinMessage.mdx b/content/docs/(functions)/Message/unpinMessage.mdx index 70d21c9e..7cf8c59a 100644 --- a/content/docs/(functions)/Message/unpinMessage.mdx +++ b/content/docs/(functions)/Message/unpinMessage.mdx @@ -6,7 +6,7 @@ Unpins a specific message from a channel. You can either unpin the message that ## Syntax -```php +```cc $unpinMessage $unpinMessage[channelID;messageID] ``` @@ -27,7 +27,7 @@ $unpinMessage[channelID;messageID] This will unpin the message the user sent that triggered the command (e.g., a command like `$unpinMessage`). -```php +```cc $unpinMessage ``` @@ -35,7 +35,7 @@ $unpinMessage This will unpin the message with ID `987654321098765432` from the channel with ID `123456789012345678`. Replace these with the actual Channel and Message IDs you wish to unpin. -```php +```cc $unpinMessage[123456789012345678;987654321098765432] ``` diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index d454155c..403d7199 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -22,7 +22,7 @@ This function returns a random number within a specified range. **Example:** -```php +```cc !!exec $random[1;6] ``` diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index 36ff4c19..e5c35318 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -12,13 +12,13 @@ Simply use `$randomChannelID` in your command or custom function. **Example:** -```php +```cc !!exec $randomChannelID ``` **Result:** -```php +```cc 37907890789087988 ``` diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index 4dd70537..4fa0a081 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -6,7 +6,7 @@ Returns a random mention from the current server. This function is useful for th #### Usage: -```php +```cc $randomMention ``` diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx index 897220c1..09c9db03 100644 --- a/content/docs/(functions)/Random/randomRoleID.mdx +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -6,7 +6,7 @@ This function returns a random Role ID from a Role present in the server. It's #### Usage: -```php +```cc $randomRoleID ``` diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index 1a8418f9..f06844fa 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -14,7 +14,7 @@ Returns a random text from a list of provided texts. This function is useful for **Example:** -```php +```cc $randomText[Hello;Hi;Hey] ``` diff --git a/content/docs/(functions)/Random/randomTextBiased.mdx b/content/docs/(functions)/Random/randomTextBiased.mdx index 0f3776e2..325ce6f9 100644 --- a/content/docs/(functions)/Random/randomTextBiased.mdx +++ b/content/docs/(functions)/Random/randomTextBiased.mdx @@ -6,7 +6,7 @@ Similar to `$randomText`, but with weighted randomness! This allows you to influ ## Usage -```php +```cc $randomTextBiased[Text1,Weight1;Text2,Weight2;Text3,Weight3] ``` diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index 94b6c790..2a0dafc3 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -6,7 +6,7 @@ Retrieves a random user ID from a user within the server. #### Usage: -```php +```cc $randomUserID ``` diff --git a/content/docs/(functions)/Request/httpRequest.mdx b/content/docs/(functions)/Request/httpRequest.mdx index 6ede0fe4..45f7c78e 100644 --- a/content/docs/(functions)/Request/httpRequest.mdx +++ b/content/docs/(functions)/Request/httpRequest.mdx @@ -6,7 +6,7 @@ Performs an HTTP request with the specified content and headers, then returns th ## Usage -```php +```cc $httpRequest[URL;Method;Content;Header 1;Header 2;...] ``` diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx index 1d202cd7..ed376028 100644 --- a/content/docs/(functions)/Request/httpRequestHeader.mdx +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -6,7 +6,7 @@ Returns the value of a given header from the last request. ## Usage -```php +```cc $httpRequestHeader[header name] ``` 1. **header name** - The header name to return value from. (case-insensitive) diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx index 2e5aad04..92dfdb30 100644 --- a/content/docs/(functions)/Request/httpRequestStatus.mdx +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -6,7 +6,7 @@ Returns the $httpRequest status code of the last request. ## Usage -```php +```cc $httpRequestStatus ``` diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index d4a4e730..dbf3c7ac 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -15,7 +15,7 @@ This function prevents users with specific roles from using a command. You speci Let's say you have a command `!ban` and you want to prevent users with a specific role from using it. -```php +```cc $blackListRoleIds[9872xx..;You are not authorized to use this command!] $ban[$mentioned[1]] Successfully banned user. diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx index 51d2c9d7..272c0d05 100644 --- a/content/docs/(functions)/Role/colorRole.mdx +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -7,12 +7,12 @@ Changes the color of given role ID #### Usage: `$colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)]` ### Example (Primary Color) -```php +```cc $colorRole[Role name;green] ``` ### Example (Gradient) -```php +```cc $colorRole[Role name;green;red] ``` diff --git a/content/docs/(functions)/Role/getRoleColor.mdx b/content/docs/(functions)/Role/getRoleColor.mdx index 2d0e9bfd..0e3cd3c7 100644 --- a/content/docs/(functions)/Role/getRoleColor.mdx +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -16,7 +16,7 @@ Retrieves the hexadecimal color code of a role. Let's say you want to get the color of the role with the ID `123456789012345678`. You would use: -```php +```cc $getRoleColor[123456789012345678] ``` diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx index bad9c201..5192d609 100644 --- a/content/docs/(functions)/Role/highestRole.mdx +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -16,7 +16,7 @@ Retrieves the highest role (in terms of hierarchy) a user has in the current gui This example shows how to use `$highestRole` with `$roleName` to output the role's name. -```php +```cc !!exec $roleName[$highestRole] ``` @@ -24,7 +24,7 @@ This example shows how to use `$highestRole` with `$roleName` to output the role (Assuming the user's highest role is "Admin") -```php +```cc Admin ``` diff --git a/content/docs/(functions)/Role/lowestRole.mdx b/content/docs/(functions)/Role/lowestRole.mdx index 5b0d915f..42f08047 100644 --- a/content/docs/(functions)/Role/lowestRole.mdx +++ b/content/docs/(functions)/Role/lowestRole.mdx @@ -15,7 +15,7 @@ Returns the user's lowest role in the current guild. You can specify a user ID, This example retrieves the role ID of the user's lowest role and displays it. -```php +```cc !!exec $roleName[$lowestRole] ``` @@ -27,7 +27,7 @@ This example retrieves the role ID of the user's lowest role and displays it. **Discord Output:** -```php +```cc Member ``` diff --git a/content/docs/(functions)/Role/mentionRole.mdx b/content/docs/(functions)/Role/mentionRole.mdx index cb3c9d95..75d7994e 100644 --- a/content/docs/(functions)/Role/mentionRole.mdx +++ b/content/docs/(functions)/Role/mentionRole.mdx @@ -6,18 +6,18 @@ mention a role by name or id ## Usage -```php +```cc $mentionRole[Name/ID] ``` ### Example: -```php +```cc $mentionRole[Member] ``` ### Example: -```php +```cc $mentionRole[1234567898765431] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Role/modifyUserRoles.mdx b/content/docs/(functions)/Role/modifyUserRoles.mdx index e8bde9c7..2c5c8732 100644 --- a/content/docs/(functions)/Role/modifyUserRoles.mdx +++ b/content/docs/(functions)/Role/modifyUserRoles.mdx @@ -12,7 +12,7 @@ This function allows you to modify a user's roles by adding, removing, or toggli ## Usage -```php +```cc $modifyUserRoles[User ID;[op]Role 1;[op]Role 2;...] ``` @@ -25,7 +25,7 @@ $modifyUserRoles[User ID;[op]Role 1;[op]Role 2;...] Let's say you want to add the "VIP" role and remove the "Newbie" role from a user. Here's how you would do it: -```php +```cc $modifyUserRoles[$authorID;+VIP;-Newbie] ``` diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index 7efb25c8..9b8d4df3 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -16,7 +16,7 @@ Checks if a role exists within the server and returns a boolean value (true or f **Example:** -```php +```cc !!exec $roleExists[$roleID[muted]] diff --git a/content/docs/(functions)/Role/roleIcon.mdx b/content/docs/(functions)/Role/roleIcon.mdx index f63dd5d0..cfb2b5b1 100644 --- a/content/docs/(functions)/Role/roleIcon.mdx +++ b/content/docs/(functions)/Role/roleIcon.mdx @@ -6,7 +6,7 @@ This function allows you to either retrieve or set the icon of a role within a g ## Usage -```php +```cc $roleIcon[role; icon (optional)] ``` @@ -21,7 +21,7 @@ $roleIcon[role; icon (optional)] This example demonstrates how to retrieve the icon of a role named "Support". -```php +```cc $roleIcon[Support] ``` @@ -33,7 +33,7 @@ $roleIcon[Support] This example sets the icon of a role named "Member" using an image URL. -```php +```cc $roleIcon[Member;https://cdn-icons-png.flaticon.com/512/6080/6080057.png] ``` @@ -43,7 +43,7 @@ $roleIcon[Member;https://cdn-icons-png.flaticon.com/512/6080/6080057.png] This example sets the icon of a role named "Member" using a custom emoji. -```php +```cc $roleIcon[Member;<:happy:862641528890851328>] ``` diff --git a/content/docs/(functions)/Role/setRoles.mdx b/content/docs/(functions)/Role/setRoles.mdx index 12439623..2a8fa4c4 100644 --- a/content/docs/(functions)/Role/setRoles.mdx +++ b/content/docs/(functions)/Role/setRoles.mdx @@ -6,7 +6,7 @@ Gives a user specific roles, removing all other roles. This is useful for settin #### Usage: -```php +```cc $setRoles[userID;roleID 1;roleID 2;roleID 3;...] ``` @@ -19,7 +19,7 @@ $setRoles[userID;roleID 1;roleID 2;roleID 3;...] Sets the command executor's roles to only the "Muted" role. -```php +```cc !!exec $setRoles[$authorID;$roleID[Muted]] ``` diff --git a/content/docs/(functions)/Server/createAutomodKeyword.mdx b/content/docs/(functions)/Server/createAutomodKeyword.mdx index 376c43b2..17478d79 100644 --- a/content/docs/(functions)/Server/createAutomodKeyword.mdx +++ b/content/docs/(functions)/Server/createAutomodKeyword.mdx @@ -6,7 +6,7 @@ Creates a new auto-moderation rule based on keywords within the server. This all ## Usage -```php +```cc $createAutomodKeyword[ {name=Rule name} {keyword=Keyword to trigger on} @@ -63,7 +63,7 @@ $createAutomodKeyword[ ### Example: -```php +```cc $createAutomodKeyword[ {name=Block Fatty Words} {keyword=fat} diff --git a/content/docs/(functions)/Server/deleteAutomod.mdx b/content/docs/(functions)/Server/deleteAutomod.mdx index 12b02975..2c2e9955 100644 --- a/content/docs/(functions)/Server/deleteAutomod.mdx +++ b/content/docs/(functions)/Server/deleteAutomod.mdx @@ -6,7 +6,7 @@ Deletes an automod rule from the server. ## Usage -```php +```cc $deleteAutomod[Rule ID] ``` @@ -14,7 +14,7 @@ $deleteAutomod[Rule ID] ## Example -```php +```cc $deleteAutomod[123456789] ``` diff --git a/content/docs/(functions)/Server/deleteEmojis.mdx b/content/docs/(functions)/Server/deleteEmojis.mdx index f9300fb4..7fcb9858 100644 --- a/content/docs/(functions)/Server/deleteEmojis.mdx +++ b/content/docs/(functions)/Server/deleteEmojis.mdx @@ -6,7 +6,7 @@ Delete a custom emoji(s) from the server. ## Usage -```php +```cc $deleteEmojis[emoji1;emoji2;...] ``` @@ -18,7 +18,7 @@ This function allows you to delete one or more custom emojis from your Discord s **Example:** -```php +```cc $deleteEmojis[customEmoji1;customEmoji2] ``` diff --git a/content/docs/(functions)/Server/editAutomodKeyword.mdx b/content/docs/(functions)/Server/editAutomodKeyword.mdx index 47b728d5..32c5e0d6 100644 --- a/content/docs/(functions)/Server/editAutomodKeyword.mdx +++ b/content/docs/(functions)/Server/editAutomodKeyword.mdx @@ -6,7 +6,7 @@ Modify an AutoMod rule of type "keywords" in the server. This function allows yo ## Usage -```php +```cc $editAutomodKeyword[ {id=Rule ID} {name=Rule name} @@ -79,7 +79,7 @@ $editAutomodKeyword[ ### Example: -```php +```cc $editAutomodKeyword[ {id=1234567} {name=Block Fatty Words Improved} diff --git a/content/docs/(functions)/Server/emojiCount.mdx b/content/docs/(functions)/Server/emojiCount.mdx index e324168d..a40d3e80 100644 --- a/content/docs/(functions)/Server/emojiCount.mdx +++ b/content/docs/(functions)/Server/emojiCount.mdx @@ -6,7 +6,7 @@ Returns the amount of emojis in this server ## Usage -```php +```cc $emojiCount ``` diff --git a/content/docs/(functions)/Server/emojiExists.mdx b/content/docs/(functions)/Server/emojiExists.mdx index 549fda42..5c34f648 100644 --- a/content/docs/(functions)/Server/emojiExists.mdx +++ b/content/docs/(functions)/Server/emojiExists.mdx @@ -6,7 +6,7 @@ Checks if a given emoji ID is available to the bot. ## Usage -```php +```cc $emojiExists[emojiID] ``` @@ -16,7 +16,7 @@ $emojiExists[emojiID] ## Example -```php +```cc $emojiExists[123456789012345678] ``` diff --git a/content/docs/(functions)/Server/getInviteInfo.mdx b/content/docs/(functions)/Server/getInviteInfo.mdx index c65744e4..c8bfccd0 100644 --- a/content/docs/(functions)/Server/getInviteInfo.mdx +++ b/content/docs/(functions)/Server/getInviteInfo.mdx @@ -6,7 +6,7 @@ Gets invite info from a given invite code. ## Usage -```php +```cc $getInviteInfo[code/url;Property] ``` @@ -47,7 +47,7 @@ If you leave the `Property` parameter empty (e.g., `$getInviteInfo[ZFQNZA4Ekz]`) ### Example -```php +```cc !!exec $getInviteInfo[ZFQNZA4Ekz;servername] ``` diff --git a/content/docs/(functions)/Server/getServerInvite.mdx b/content/docs/(functions)/Server/getServerInvite.mdx index cfb8554f..ad649065 100644 --- a/content/docs/(functions)/Server/getServerInvite.mdx +++ b/content/docs/(functions)/Server/getServerInvite.mdx @@ -6,7 +6,7 @@ Creates an invite link to the current server. ## Usage -```php +```cc $getServerInvite ``` diff --git a/content/docs/(functions)/Server/resolveEmojiID.mdx b/content/docs/(functions)/Server/resolveEmojiID.mdx index 57543d30..d25cee9c 100644 --- a/content/docs/(functions)/Server/resolveEmojiID.mdx +++ b/content/docs/(functions)/Server/resolveEmojiID.mdx @@ -6,7 +6,7 @@ Resolves a full emoji, emoji name, or emoji ID into its ID. This function is use ## Usage -```php +```cc $resolveEmojiID[emoji string/name/id] ``` @@ -18,12 +18,12 @@ $resolveEmojiID[emoji string/name/id] Let's say you have a custom emoji named `cool_emoji` in your server. -```php +```cc $resolveEmojiID[cool_emoji] ``` This would return the unique ID associated with the `cool_emoji` emoji. -```php +```cc $resolveEmojiID[<:cool_emoji:123456789012345678>] ``` diff --git a/content/docs/(functions)/Server/securityPause.mdx b/content/docs/(functions)/Server/securityPause.mdx index d88a0dee..60ef5e89 100644 --- a/content/docs/(functions)/Server/securityPause.mdx +++ b/content/docs/(functions)/Server/securityPause.mdx @@ -6,7 +6,7 @@ a beta feature, where discord allow you to pause invites and DMs for a period of ## Usage -```php +```cc $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No)] ``` @@ -14,16 +14,16 @@ $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No The value determines how much time a pause should be applied, maximum allowed duration is `24h` ### Example (Pause invites for 24 hours): -```php +```cc $securityPause[24h;yes;no] ``` ### Example (Pause DMs for 12 hours): -```php +```cc $securityPause[12h;no;yes] ``` ### Example (Pause invites and DMs for 24 hours): -```php +```cc $securityPause[24h;yes;yes] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Stickers/createSticker.mdx b/content/docs/(functions)/Stickers/createSticker.mdx index 6c53579a..7c8cf02c 100644 --- a/content/docs/(functions)/Stickers/createSticker.mdx +++ b/content/docs/(functions)/Stickers/createSticker.mdx @@ -6,12 +6,12 @@ create a new sticker in the server ## Usage -```php +```cc $createSticker[name;image url;emoji;description (optional);return sticker id (yes/no)] ``` ### Example: -```php +```cc $createSticker[Happy Earth;https://media.discordapp.net/attachments/951590503370063872/1028690645222690867/happy_earth.png;😄;I'm happy when earth is happy] ``` diff --git a/content/docs/(functions)/Stickers/deleteSticker.mdx b/content/docs/(functions)/Stickers/deleteSticker.mdx index af9aae4c..eee7e819 100644 --- a/content/docs/(functions)/Stickers/deleteSticker.mdx +++ b/content/docs/(functions)/Stickers/deleteSticker.mdx @@ -6,7 +6,7 @@ To delete a sticker inside the server ## Usage -```php +```cc $deleteSticker[Sticker ID] ``` diff --git a/content/docs/(functions)/Stickers/editSticker.mdx b/content/docs/(functions)/Stickers/editSticker.mdx index 53da2c5e..e541c3af 100644 --- a/content/docs/(functions)/Stickers/editSticker.mdx +++ b/content/docs/(functions)/Stickers/editSticker.mdx @@ -7,11 +7,11 @@ To edit a sticker inside the server\ ## Usage -```php +```cc $editSticker[Sticker ID;Info;New Value] ``` ### Example: -```php +```cc $editSticker[992974663099629588;name;MyNewSmily] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Stickers/messageStickers.mdx b/content/docs/(functions)/Stickers/messageStickers.mdx index 15f3d5b7..a2b924ad 100644 --- a/content/docs/(functions)/Stickers/messageStickers.mdx +++ b/content/docs/(functions)/Stickers/messageStickers.mdx @@ -7,7 +7,7 @@ To return the user message stickers (id)\ ## Usage -```php +```cc $messageStickers[Index] ``` diff --git a/content/docs/(functions)/Stickers/serverStickers.mdx b/content/docs/(functions)/Stickers/serverStickers.mdx index 1de551fe..b4238dbe 100644 --- a/content/docs/(functions)/Stickers/serverStickers.mdx +++ b/content/docs/(functions)/Stickers/serverStickers.mdx @@ -6,7 +6,7 @@ To return all server stickers's id ## Usage -```php +```cc $serverStickers[Separator] Example: $serverStickers[, ] diff --git a/content/docs/(functions)/Stickers/sticker.mdx b/content/docs/(functions)/Stickers/sticker.mdx index 33084c21..2b20883f 100644 --- a/content/docs/(functions)/Stickers/sticker.mdx +++ b/content/docs/(functions)/Stickers/sticker.mdx @@ -7,7 +7,7 @@ To return an information about a sticker using ID\ ## Usage -```php +```cc $sticker[Sticker ID;name;Info] ``` diff --git a/content/docs/(functions)/Text/Array/arrayClear.mdx b/content/docs/(functions)/Text/Array/arrayClear.mdx index 6c00ff32..34aa3daf 100644 --- a/content/docs/(functions)/Text/Array/arrayClear.mdx +++ b/content/docs/(functions)/Text/Array/arrayClear.mdx @@ -6,7 +6,7 @@ Deletes an array. ## Usage -```php +```cc $arrayClear[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayConcat.mdx b/content/docs/(functions)/Text/Array/arrayConcat.mdx index a8bfebe6..4b79e5ba 100644 --- a/content/docs/(functions)/Text/Array/arrayConcat.mdx +++ b/content/docs/(functions)/Text/Array/arrayConcat.mdx @@ -6,7 +6,7 @@ Merge new array with the current array ## Usage -```php +```cc $arrayConcat[List;separator;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayCount.mdx b/content/docs/(functions)/Text/Array/arrayCount.mdx index 071ed9f1..99795bbb 100644 --- a/content/docs/(functions)/Text/Array/arrayCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayCount.mdx @@ -6,7 +6,7 @@ An alias for `$arrayLength`. ## Usage -```php +```cc $arrayCount[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayCreate.mdx b/content/docs/(functions)/Text/Array/arrayCreate.mdx index 750c6ed9..f9aba555 100644 --- a/content/docs/(functions)/Text/Array/arrayCreate.mdx +++ b/content/docs/(functions)/Text/Array/arrayCreate.mdx @@ -6,7 +6,7 @@ Creates an array from a list. ## Usage -```php +```cc $arrayCreate[List;separator;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayElementCount.mdx b/content/docs/(functions)/Text/Array/arrayElementCount.mdx index b19bf300..83af2790 100644 --- a/content/docs/(functions)/Text/Array/arrayElementCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayElementCount.mdx @@ -7,7 +7,7 @@ This function is used to count the number of times a specific element appears in ## Usage -```php +```cc $arrayElementCount[Element To Count;Trim before compare (yes/no);array name] ``` diff --git a/content/docs/(functions)/Text/Array/arrayFilter.mdx b/content/docs/(functions)/Text/Array/arrayFilter.mdx index 915f4f4f..1d5ec96c 100644 --- a/content/docs/(functions)/Text/Array/arrayFilter.mdx +++ b/content/docs/(functions)/Text/Array/arrayFilter.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```php +```cc $arrayFilter[Element Value;Element Index;array name]{ CODE... } diff --git a/content/docs/(functions)/Text/Array/arrayGet.mdx b/content/docs/(functions)/Text/Array/arrayGet.mdx index 6d63a4b3..66a88260 100644 --- a/content/docs/(functions)/Text/Array/arrayGet.mdx +++ b/content/docs/(functions)/Text/Array/arrayGet.mdx @@ -6,7 +6,7 @@ Returns the value of an element at the specified index in an array. ## Usage -```php +```cc $arrayGet[index;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayInclude.mdx b/content/docs/(functions)/Text/Array/arrayInclude.mdx index 754acb93..9849decb 100644 --- a/content/docs/(functions)/Text/Array/arrayInclude.mdx +++ b/content/docs/(functions)/Text/Array/arrayInclude.mdx @@ -6,7 +6,7 @@ To check if a value exists in the array. Returns `true` if the value exists, oth ## Usage -```php +```cc $arrayInclude[Value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayJoin.mdx b/content/docs/(functions)/Text/Array/arrayJoin.mdx index 1708f07f..9f722dd1 100644 --- a/content/docs/(functions)/Text/Array/arrayJoin.mdx +++ b/content/docs/(functions)/Text/Array/arrayJoin.mdx @@ -6,7 +6,7 @@ Joins an array created using `$textSplit` with a specific separator. ## Usage -```php +```cc $arrayJoin[Separator (optional);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayLength.mdx b/content/docs/(functions)/Text/Array/arrayLength.mdx index 3718f537..9fbc8212 100644 --- a/content/docs/(functions)/Text/Array/arrayLength.mdx +++ b/content/docs/(functions)/Text/Array/arrayLength.mdx @@ -6,7 +6,7 @@ Returns the number of elements in an array. ## Usage -```php +```cc $arrayLength[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayLoop.mdx b/content/docs/(functions)/Text/Array/arrayLoop.mdx index 60f17993..329f7762 100644 --- a/content/docs/(functions)/Text/Array/arrayLoop.mdx +++ b/content/docs/(functions)/Text/Array/arrayLoop.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```php +```cc $arrayLoop[varName;index;array name (optional)]{ CODE... } diff --git a/content/docs/(functions)/Text/Array/arrayMap.mdx b/content/docs/(functions)/Text/Array/arrayMap.mdx index 161d4d21..17cb45e3 100644 --- a/content/docs/(functions)/Text/Array/arrayMap.mdx +++ b/content/docs/(functions)/Text/Array/arrayMap.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```php +```cc $arrayMap[Element Value;Element Index;array name (optional)]{ CODE } diff --git a/content/docs/(functions)/Text/Array/arrayPop.mdx b/content/docs/(functions)/Text/Array/arrayPop.mdx index ce5f265f..e67d0fda 100644 --- a/content/docs/(functions)/Text/Array/arrayPop.mdx +++ b/content/docs/(functions)/Text/Array/arrayPop.mdx @@ -6,7 +6,7 @@ Removes, and returns the last element in an array. ## Usage -```php +```cc $arrayPop[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayPush.mdx b/content/docs/(functions)/Text/Array/arrayPush.mdx index cfe2e80b..55272e74 100644 --- a/content/docs/(functions)/Text/Array/arrayPush.mdx +++ b/content/docs/(functions)/Text/Array/arrayPush.mdx @@ -6,7 +6,7 @@ Adds an element to the end of an array. ## Usage -```php +```cc $arrayPush[Value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayRemove.mdx b/content/docs/(functions)/Text/Array/arrayRemove.mdx index 74bd7a54..f6d778ce 100644 --- a/content/docs/(functions)/Text/Array/arrayRemove.mdx +++ b/content/docs/(functions)/Text/Array/arrayRemove.mdx @@ -6,7 +6,7 @@ Removes something from an array, using the index, and returns nothing. ## Usage -```php +```cc $arrayRemove[Index;Index... (optional);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayReverse.mdx b/content/docs/(functions)/Text/Array/arrayReverse.mdx index 3c6d256d..cf5a028d 100644 --- a/content/docs/(functions)/Text/Array/arrayReverse.mdx +++ b/content/docs/(functions)/Text/Array/arrayReverse.mdx @@ -6,7 +6,7 @@ Reverses an array. ## Usage -```php +```cc $arrayReverse[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySearch.mdx b/content/docs/(functions)/Text/Array/arraySearch.mdx index dbc8617a..e63dcbdd 100644 --- a/content/docs/(functions)/Text/Array/arraySearch.mdx +++ b/content/docs/(functions)/Text/Array/arraySearch.mdx @@ -6,7 +6,7 @@ To search for a value in an array. If it exists, it will return the position of ## Usage -```php +```cc $arraySearch[Value to search;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySet.mdx b/content/docs/(functions)/Text/Array/arraySet.mdx index da6621f1..f78ebee1 100644 --- a/content/docs/(functions)/Text/Array/arraySet.mdx +++ b/content/docs/(functions)/Text/Array/arraySet.mdx @@ -6,7 +6,7 @@ Sets the value of an index in an array. ## Usage -```php +```cc $arraySet[index;value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayShift.mdx b/content/docs/(functions)/Text/Array/arrayShift.mdx index d3bd9eb9..e79d18a5 100644 --- a/content/docs/(functions)/Text/Array/arrayShift.mdx +++ b/content/docs/(functions)/Text/Array/arrayShift.mdx @@ -6,7 +6,7 @@ Removes and returns the first element in an array. ## Usage -```php +```cc $arrayShift[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayShuffle.mdx b/content/docs/(functions)/Text/Array/arrayShuffle.mdx index a84f15ff..44924d17 100644 --- a/content/docs/(functions)/Text/Array/arrayShuffle.mdx +++ b/content/docs/(functions)/Text/Array/arrayShuffle.mdx @@ -6,7 +6,7 @@ To shuffle an existing array. ## Usage -```php +```cc $arrayShuffle[array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySlice.mdx b/content/docs/(functions)/Text/Array/arraySlice.mdx index 09d57c53..35a8a87a 100644 --- a/content/docs/(functions)/Text/Array/arraySlice.mdx +++ b/content/docs/(functions)/Text/Array/arraySlice.mdx @@ -6,7 +6,7 @@ To keep only a part of the array, *slicing* it. ## Usage -```php +```cc $arraySlice[from;to;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arraySort.mdx b/content/docs/(functions)/Text/Array/arraySort.mdx index e0260c31..3c8277dd 100644 --- a/content/docs/(functions)/Text/Array/arraySort.mdx +++ b/content/docs/(functions)/Text/Array/arraySort.mdx @@ -7,7 +7,7 @@ Can be sorted numerically or alphabetically, or depending on occurrences. ## Usage -```php +```cc $arraySort[Ascending (yes/no, default is no);Sort Type;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayUnique.mdx b/content/docs/(functions)/Text/Array/arrayUnique.mdx index 3791d88e..8e7a4eb4 100644 --- a/content/docs/(functions)/Text/Array/arrayUnique.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnique.mdx @@ -6,7 +6,7 @@ Return the unique elements in the array, glued with the separator. ## Usage -```php +```cc $arrayUnique[Separator (default ', ');Trim Element before check? (default is yes);array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Array/arrayUnshift.mdx b/content/docs/(functions)/Text/Array/arrayUnshift.mdx index 162eab4f..2038f746 100644 --- a/content/docs/(functions)/Text/Array/arrayUnshift.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnshift.mdx @@ -6,7 +6,7 @@ Adds an element to the start of the array. ## Usage -```php +```cc $arrayUnshift[value;array name (optional)] ``` diff --git a/content/docs/(functions)/Text/Components/addMenu.mdx b/content/docs/(functions)/Text/Components/addMenu.mdx index b3f0f13e..b2dfd9c1 100644 --- a/content/docs/(functions)/Text/Components/addMenu.mdx +++ b/content/docs/(functions)/Text/Components/addMenu.mdx @@ -5,7 +5,7 @@ title: "$addMenu" Add a menu to existing message ## Usage -```php +```cc $addMenu[ {channel=channel id} {message=message id} @@ -26,7 +26,7 @@ $addMenu[ ``` ### Example: -```php +```cc $addMenu[ {chid=$channelID} {mid=1151607052007907449} diff --git a/content/docs/(functions)/Text/Components/awaitButton.mdx b/content/docs/(functions)/Text/Components/awaitButton.mdx index f9361b1e..29bc9e41 100644 --- a/content/docs/(functions)/Text/Components/awaitButton.mdx +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -26,7 +26,7 @@ The max time is `60 x (bot tier + 1)` seconds, for example for tier 3 it would b ![](https://cdn.discordapp.com/attachments/914682255346118687/938556903116652594/Screenshot_20220202190956.jpg) (Usage example) -```php +```cc $let[pressedButton;$awaitButton[Which color is my favorite? {button:Green:GREEN::green} {button:Blue:BLUE::blue} diff --git a/content/docs/(functions)/Text/Components/awaitMenu.mdx b/content/docs/(functions)/Text/Components/awaitMenu.mdx index 1f73129b..f9666457 100644 --- a/content/docs/(functions)/Text/Components/awaitMenu.mdx +++ b/content/docs/(functions)/Text/Components/awaitMenu.mdx @@ -8,7 +8,7 @@ If multiple values are selected, all of them will be returned, separated with `, ## Usage -```php +```cc $awaitMenu[Message (optional);user id (optional, default:author);timeout (optional, default:15s);menu id1 (optional);menu id2...] ``` ### Timeout diff --git a/content/docs/(functions)/Text/Components/button.mdx b/content/docs/(functions)/Text/Components/button.mdx index 8a454c19..f8de207b 100644 --- a/content/docs/(functions)/Text/Components/button.mdx +++ b/content/docs/(functions)/Text/Components/button.mdx @@ -5,14 +5,14 @@ title: "$button" Creates a discord button. ## Usage -```php +```cc $button[label;style;link/id;emoji (optional);disabled (yes/no, optional);new line (yes/no, optional)] ``` ## Basic button The simplest button possible, has a label and ID. -```php +```cc $button[Click me!;;verySimpleButton] ``` ![](https://cdn.discordapp.com/attachments/957286111250624552/1126652117373964338/basic-button.png) @@ -28,7 +28,7 @@ Keep in mind, that there can't be two buttons with the same ID in one message. There are four button colors discord allows you to use: `blurple`, `grey`, `green`, and `red`. -```php +```cc $button[Blurple;blurple;blurpleButton] $button[Grey;grey;greyButton] $button[Green;green;greenButton] @@ -39,14 +39,14 @@ $button[Red;red;redButton] ## Links You can also create buttons that open a link when clicked. To make one, you have to set the style to `url`, and put the link as ID. -```php +```cc $button[Check out our website!;url;https://ccommandbot.com] ``` ![](https://cdn.discordapp.com/attachments/957286111250624552/1126655903555399781/url-button.png) ## Emojis Both interaction and url buttons can have emojis. -```php +```cc Please verify! $button[Verify;grey;heartButton;:detective:] $button[Server rules;url;https://discord.com/channels/772051119538176021/772051119923789847/818136570896449577;📜] @@ -57,7 +57,7 @@ $button[Leave server;grey;leaveServer;$customEmoji[no]] ## Disabled You can disable any button by adding `yes` after the emoji. -```php +```cc We are not looking for new staff members at the moment. $button[Apply;blurple;applyButton;;yes] $button[View requirements;blurple;viewRequirements;;no] @@ -67,7 +67,7 @@ $button[View requirements;blurple;viewRequirements;;no] ## New lines By default, buttons are placed in one line. You can change that by adding `yes` after the disabled parameter. -```php +```cc $button[Button in the first line;grey;button1;;;no] $button[Button in a new line;grey;button2;;;yes] ``` @@ -84,7 +84,7 @@ Mind that the order of `emoji` and `id` is reversed in this case, and the separa ``` ### Example: -```php +```cc $sendmessage[How's your day going? {button:Fine:grey:😀:fine} {button:Bad:grey:😢:bad} diff --git a/content/docs/(functions)/Text/Components/buttonEmoji.mdx b/content/docs/(functions)/Text/Components/buttonEmoji.mdx index 02da6e05..04981933 100644 --- a/content/docs/(functions)/Text/Components/buttonEmoji.mdx +++ b/content/docs/(functions)/Text/Components/buttonEmoji.mdx @@ -6,7 +6,7 @@ Return the clicked button's emoji in the [Button trigger](/Trigger/button.html). ## Usage -```php +```cc $buttonEmoji ``` diff --git a/content/docs/(functions)/Text/Components/buttonID.mdx b/content/docs/(functions)/Text/Components/buttonID.mdx index 0595aedd..527e642b 100644 --- a/content/docs/(functions)/Text/Components/buttonID.mdx +++ b/content/docs/(functions)/Text/Components/buttonID.mdx @@ -6,7 +6,7 @@ Returns the Button ID that triggered the command. Returns `undefined` if the tri ## Usage -```php +```cc $buttonID ``` diff --git a/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx index 4c7d6b41..2357bb14 100644 --- a/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx +++ b/content/docs/(functions)/Text/Components/buttonIsDisabled.mdx @@ -7,7 +7,7 @@ Returns true if the button is disabled, otherwise returns `false`. ## Usage -```php +```cc $buttonIsDisabled ``` diff --git a/content/docs/(functions)/Text/Components/buttonLabel.mdx b/content/docs/(functions)/Text/Components/buttonLabel.mdx index 2a69f137..6673cfb8 100644 --- a/content/docs/(functions)/Text/Components/buttonLabel.mdx +++ b/content/docs/(functions)/Text/Components/buttonLabel.mdx @@ -6,7 +6,7 @@ Return the clicked button's label in the Button trigger. If the button doesn't h ## Usage -```php +```cc $buttonLabel ``` diff --git a/content/docs/(functions)/Text/Components/buttonStyle.mdx b/content/docs/(functions)/Text/Components/buttonStyle.mdx index 46a737b6..89ee7783 100644 --- a/content/docs/(functions)/Text/Components/buttonStyle.mdx +++ b/content/docs/(functions)/Text/Components/buttonStyle.mdx @@ -6,7 +6,7 @@ Return the clicked button's style, e.g. `blurple`/`red`/`url` in the Button trig ## Usage -```php +```cc $buttonStyle ``` diff --git a/content/docs/(functions)/Text/Components/buttonURL.mdx b/content/docs/(functions)/Text/Components/buttonURL.mdx index 469ecf72..1744f7a9 100644 --- a/content/docs/(functions)/Text/Components/buttonURL.mdx +++ b/content/docs/(functions)/Text/Components/buttonURL.mdx @@ -6,7 +6,7 @@ Return the clicked button's URL in Button trigger if it exists. Else, returns `u ## Usage -```php +```cc $buttonURL ``` diff --git a/content/docs/(functions)/Text/Components/disableButtons.mdx b/content/docs/(functions)/Text/Components/disableButtons.mdx index 7d9a5ad9..fc8aa1e5 100644 --- a/content/docs/(functions)/Text/Components/disableButtons.mdx +++ b/content/docs/(functions)/Text/Components/disableButtons.mdx @@ -6,7 +6,7 @@ Disable buttons in a message, not providing a Button ID will disable every butto ## Usage -```php +```cc $disableButtons[Message ID;Button ID 1;Button ID 2;....] ``` diff --git a/content/docs/(functions)/Text/Components/disableMenu.mdx b/content/docs/(functions)/Text/Components/disableMenu.mdx index 8816c8a7..9ebecbe5 100644 --- a/content/docs/(functions)/Text/Components/disableMenu.mdx +++ b/content/docs/(functions)/Text/Components/disableMenu.mdx @@ -6,7 +6,7 @@ Disable menus in the given message, not providing a Menu ID will disable every m ## Usage -```php +```cc $disableMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Components/editMenu.mdx b/content/docs/(functions)/Text/Components/editMenu.mdx index 8a378b9e..c8776c39 100644 --- a/content/docs/(functions)/Text/Components/editMenu.mdx +++ b/content/docs/(functions)/Text/Components/editMenu.mdx @@ -7,11 +7,11 @@ Edits a menu in given message.\ ## Usage -```php +```cc $editMenu[message id;menu id;type;new value] ``` ### Example: -```php +```cc $editMenu[$messageID;menu_id;placeholder;A new placeholder] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Components/enableButtons.mdx b/content/docs/(functions)/Text/Components/enableButtons.mdx index 798a18a6..34059870 100644 --- a/content/docs/(functions)/Text/Components/enableButtons.mdx +++ b/content/docs/(functions)/Text/Components/enableButtons.mdx @@ -6,7 +6,7 @@ Enable buttons in a message, not providing a Button ID will enable every button ## Usage -```php +```cc $enableButtons[Message ID;Button ID 1;Button ID 2;....] ``` diff --git a/content/docs/(functions)/Text/Components/enableMenu.mdx b/content/docs/(functions)/Text/Components/enableMenu.mdx index 3c4fc148..513c6ee0 100644 --- a/content/docs/(functions)/Text/Components/enableMenu.mdx +++ b/content/docs/(functions)/Text/Components/enableMenu.mdx @@ -6,7 +6,7 @@ Enables menus in a given message, not providing a Menu ID will enable every menu ## Usage -```php +```cc $enableMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Components/eventSelected.mdx b/content/docs/(functions)/Text/Components/eventSelected.mdx index 8fad25d6..0f6ed934 100644 --- a/content/docs/(functions)/Text/Components/eventSelected.mdx +++ b/content/docs/(functions)/Text/Components/eventSelected.mdx @@ -6,7 +6,7 @@ Returns values that were selected by the user using `$selectMenu`. ## Usage -```php +```cc $eventSelected or $eventSelected[position;seperator] ``` diff --git a/content/docs/(functions)/Text/Components/eventTargetID.mdx b/content/docs/(functions)/Text/Components/eventTargetID.mdx index f77f40f9..ebd8c1dd 100644 --- a/content/docs/(functions)/Text/Components/eventTargetID.mdx +++ b/content/docs/(functions)/Text/Components/eventTargetID.mdx @@ -6,7 +6,7 @@ Returns the ID of the target selected by the user when using a **context menu co ## Usage -```php +```cc $eventTargetID ``` @@ -16,7 +16,7 @@ For a **User Command (Context Menu)**, `$eventTargetID` returns the **User ID** For a **Message Command (Context Menu)**, `$eventTargetID` returns the **Message ID** of the message selected from the context menu. -```php +```cc $interactionReply[Target ID: $eventTargetID] ``` diff --git a/content/docs/(functions)/Text/Components/menuId.mdx b/content/docs/(functions)/Text/Components/menuId.mdx index c46877c7..e1287c23 100644 --- a/content/docs/(functions)/Text/Components/menuId.mdx +++ b/content/docs/(functions)/Text/Components/menuId.mdx @@ -6,7 +6,7 @@ Return the Menu ID of the menu triggered with the [Select Menu Trigger](/Trigger ## Usage -```php +```cc $menuID ``` diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx index 29e80d53..e3651e27 100644 --- a/content/docs/(functions)/Text/Components/removeButton.mdx +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -11,12 +11,12 @@ Removes a button from an existing message using its `(ID/label/Emoji/URL)`. (Remove Button using its label) -```php +```cc $removeButton[863xxxxxxxxxx21130;Visit example.com] ``` (Remove the Last button) -```php +```cc $removeButton[863xxxxxxxxxx21130] ``` diff --git a/content/docs/(functions)/Text/Components/removeEmbed.mdx b/content/docs/(functions)/Text/Components/removeEmbed.mdx index 9ed8ebb1..a20b7538 100644 --- a/content/docs/(functions)/Text/Components/removeEmbed.mdx +++ b/content/docs/(functions)/Text/Components/removeEmbed.mdx @@ -6,7 +6,7 @@ remove an embed or all embeds from a message ## Usage -```php +```cc $removeEmbed[Channel ID (default is $channelID);Message ID (default is $messageID);Embed Number (default is 1)] ``` @@ -14,6 +14,6 @@ $removeEmbed[Channel ID (default is $channelID);Message ID (default is $messageI You can remove all embeds by setting embed number to `all` ### Example: -```php +```cc $removeEmbed[$channelID;$messageID;1] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Text/Components/removeMenu.mdx b/content/docs/(functions)/Text/Components/removeMenu.mdx index dca1a113..3eb47df4 100644 --- a/content/docs/(functions)/Text/Components/removeMenu.mdx +++ b/content/docs/(functions)/Text/Components/removeMenu.mdx @@ -6,7 +6,7 @@ Removes menus in a given message, not providing a Menu ID will remove every menu ## Usage -```php +```cc $removeMenu[message id;Menu ID 1;Menu ID 2;Menu ID 3;....] ``` diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index 0211ce83..d81b40e3 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -39,7 +39,7 @@ Info: ## Examples ### Sending a menu with some options with $selectMenu -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the option} @@ -60,7 +60,7 @@ $selectMenu[ ![](https://i.imgur.com/pSIYauj.png) ### Sending a menu with some options and selected some of them -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the option} @@ -85,7 +85,7 @@ $selectMenu[ ### Sending a menu to select user with $selectMenu -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the user} @@ -97,7 +97,7 @@ $selectMenu[ ![](https://i.imgur.com/TuXQ5nN.png) ### Sending a menu to select user with $sendMessage -```php +```cc $sendMessage[ {menu: {id=my_menu} @@ -111,7 +111,7 @@ $sendMessage[ ![](https://i.imgur.com/EXOYY1k.png) ### Sending a menu with selected user -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the user} @@ -124,7 +124,7 @@ $selectMenu[ ![](https://i.imgur.com/UmFu9Of.png) ### Sending a menu with selected role -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the role} @@ -137,7 +137,7 @@ $selectMenu[ ![](https://i.imgur.com/XldvSKC.png) ### Sending a menu with selected channel -```php +```cc $selectMenu[ {id=my_menu} {ph=Select the channel} @@ -150,7 +150,7 @@ $selectMenu[ ![](https://i.imgur.com/gNDtTWP.png) ### Sending a menu with selected mentionable (user / role) -```php +```cc $selectMenu[ {id=my_menu} {ph=Select user or role} diff --git a/content/docs/(functions)/Text/Condition/checkCondition.mdx b/content/docs/(functions)/Text/Condition/checkCondition.mdx index a5f15d3c..505b28e8 100644 --- a/content/docs/(functions)/Text/Condition/checkCondition.mdx +++ b/content/docs/(functions)/Text/Condition/checkCondition.mdx @@ -6,7 +6,7 @@ Checks if given expression is true or false. ## Usage -```php +```cc $checkCondition[Expression] ``` diff --git a/content/docs/(functions)/Text/Condition/conditional.mdx b/content/docs/(functions)/Text/Condition/conditional.mdx index 00ebe389..7788636e 100644 --- a/content/docs/(functions)/Text/Condition/conditional.mdx +++ b/content/docs/(functions)/Text/Condition/conditional.mdx @@ -6,7 +6,7 @@ return A if condition is true, B if condition is false ## Usage -```php +```cc $conditional[condition;A;B] ``` diff --git a/content/docs/(functions)/Text/Condition/else.mdx b/content/docs/(functions)/Text/Condition/else.mdx index ebcdd00b..54fb0e40 100644 --- a/content/docs/(functions)/Text/Condition/else.mdx +++ b/content/docs/(functions)/Text/Condition/else.mdx @@ -6,7 +6,7 @@ is used in case $if and $elseIf is not true ## Usage -```php +```cc $if[1==2] CODE BLOCk $elseIf[3==4] diff --git a/content/docs/(functions)/Text/Condition/elseif.mdx b/content/docs/(functions)/Text/Condition/elseif.mdx index 10e17dd0..53964632 100644 --- a/content/docs/(functions)/Text/Condition/elseif.mdx +++ b/content/docs/(functions)/Text/Condition/elseif.mdx @@ -6,7 +6,7 @@ will be checked if $if was false, should be ended with $endelseif ## Usage -```php +```cc $elseIf[EXPRESSION] CODE BLOCK $endelseif diff --git a/content/docs/(functions)/Text/Condition/endIf.mdx b/content/docs/(functions)/Text/Condition/endIf.mdx index a4d0c92a..6358ce9c 100644 --- a/content/docs/(functions)/Text/Condition/endIf.mdx +++ b/content/docs/(functions)/Text/Condition/endIf.mdx @@ -6,7 +6,7 @@ is used to end the whole $if block ## Usage -```php +```cc $if[EXPRESSION] CODE BLOCK $endIf diff --git a/content/docs/(functions)/Text/Condition/endelseif.mdx b/content/docs/(functions)/Text/Condition/endelseif.mdx index f94a9a17..08dd4f42 100644 --- a/content/docs/(functions)/Text/Condition/endelseif.mdx +++ b/content/docs/(functions)/Text/Condition/endelseif.mdx @@ -6,7 +6,7 @@ is used to close $elseIf ## Usage -```php +```cc $elseIf[EXPR] CODE BLOCK $endelseif diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index 6c7c2f7d..83bbf8c6 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -5,7 +5,7 @@ title: "$if" Checks An expression and executes code Only if that expression is true ## Shortest Syntax -```php +```cc $if[EXPRESSION] CODE $endIf @@ -97,7 +97,7 @@ Expression can accept multiple conditions, use `||` or `&&` as separators
    `&&` is for AND Example: -```php +```cc $username==Mido&&$country==Egypt ``` Condition 1: `$username==Mido` diff --git a/content/docs/(functions)/Text/Embed/attachment.mdx b/content/docs/(functions)/Text/Embed/attachment.mdx index 8bd86ac9..22227f69 100644 --- a/content/docs/(functions)/Text/Embed/attachment.mdx +++ b/content/docs/(functions)/Text/Embed/attachment.mdx @@ -8,7 +8,7 @@ If the name field is given, you must specify the extension for the attachment (p ## Usage -```php +```cc $attachment[data;name (optional);type (url or buffer) (optional);spoiler (yes/no, default is no) (optional)] ``` diff --git a/content/docs/(functions)/Text/Embed/example.mdx b/content/docs/(functions)/Text/Embed/example.mdx index 03c8fc16..fe0faade 100644 --- a/content/docs/(functions)/Text/Embed/example.mdx +++ b/content/docs/(functions)/Text/Embed/example.mdx @@ -5,7 +5,7 @@ title: "Complete Embed" Here is a code example for a complete embed in both function and curl format. ## Function Format -```php +```cc $author[name;avatar;link] $title[title;url] $color[hex/colorname/random] @@ -28,7 +28,7 @@ $selectMenu[id;placeholder;min value(optional);max value;(optional);label;desc;v ## Curl Format Here are all curl embed components you can use in any function containing `message` field. -``` +```cc {content:text} {author:name:avatar:link url} {title:title} @@ -58,7 +58,8 @@ Here are all curl embed components you can use in any function containing `messa ### Only for interactions These arguments can be used in interaction trigger commands. -``` + +```cc {interaction} {ephemeral=yes/no} {message=content, curl embed, menus, buttons...} // Only in $interactionReply @@ -83,7 +84,7 @@ If you created a command with the following code, the bot would: 1. First change author's 2. Send an embed confirming the change, -```php +```cc $title[Nickname changed] $description[Your nickname has been changed to lowercase ($toLowercase[$username])] @@ -101,7 +102,7 @@ The following code would: 2. Edit user's nickname, 3. Edit the previously sent message to confirm the change. -```php +```cc $sendMessage[ {title: Nickname change} {description: Your nickname is going to be changed to lowercase ($toLowercase[$username])} diff --git a/content/docs/(functions)/Text/Math/abs.mdx b/content/docs/(functions)/Text/Math/abs.mdx index 9aea35bd..42ff0e72 100644 --- a/content/docs/(functions)/Text/Math/abs.mdx +++ b/content/docs/(functions)/Text/Math/abs.mdx @@ -6,7 +6,7 @@ Return the absolute value of a number. Basically forces a number to be positive ## Usage -```php +```cc $abs[Number] ``` diff --git a/content/docs/(functions)/Text/Math/ceil.mdx b/content/docs/(functions)/Text/Math/ceil.mdx index 30e5fcb8..77c2548d 100644 --- a/content/docs/(functions)/Text/Math/ceil.mdx +++ b/content/docs/(functions)/Text/Math/ceil.mdx @@ -6,7 +6,7 @@ rounds a number up to the next largest integer ## Usage -```php +```cc $ceil[Number] ``` diff --git a/content/docs/(functions)/Text/Math/floor.mdx b/content/docs/(functions)/Text/Math/floor.mdx index 15b423fd..0ed4fd16 100644 --- a/content/docs/(functions)/Text/Math/floor.mdx +++ b/content/docs/(functions)/Text/Math/floor.mdx @@ -6,7 +6,7 @@ return the largest integer less than or equal to a given number ## Usage -```php +```cc $floor[Number] ``` diff --git a/content/docs/(functions)/Text/Math/mathMax.mdx b/content/docs/(functions)/Text/Math/mathMax.mdx index 12cc51bf..79790d4b 100644 --- a/content/docs/(functions)/Text/Math/mathMax.mdx +++ b/content/docs/(functions)/Text/Math/mathMax.mdx @@ -6,7 +6,7 @@ Return the largest number from a list of numbers ## Usage -```php +```cc $MathMax[Number 1;Number 2;Number 3;...] ``` diff --git a/content/docs/(functions)/Text/Math/mathMin.mdx b/content/docs/(functions)/Text/Math/mathMin.mdx index 30d52da2..84d1d919 100644 --- a/content/docs/(functions)/Text/Math/mathMin.mdx +++ b/content/docs/(functions)/Text/Math/mathMin.mdx @@ -6,7 +6,7 @@ Return the smallest number from a list of numbers ## Usage -```php +```cc $mathMin[Number 1;Number 2;Number 3;...] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/ObjectCreate.mdx index 0b4fbfb5..0fdd03e1 100644 --- a/content/docs/(functions)/Text/Object/ObjectCreate.mdx +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -20,7 +20,7 @@ Hi, my name is Wiki. Level 20. Am i expert? true. My user id is 3279967840120340 The example above shows how to save the object inside a variable and retrieve it later. - with an object you can save many properties inside a variable. -```sh +```cc $initvar[user;Data;{"Name":"none","Level":0,"isExpert":false,"userId":0}] $objectCreate[$getuservar[Data]] $objectSet[Name;Wiki] diff --git a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx index f4de11e6..1c0c92e6 100644 --- a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx +++ b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx @@ -6,7 +6,7 @@ To increase a key value, if the key doesn't exist, it will create one and set to ## Usage -```php +```cc $ObjectIncrease[Key;Amount] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index 54fde0e6..ed13f416 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -6,7 +6,7 @@ Checks if given key is present in the object. Returns `true` or `false`. ## Usage -```php +```cc $ObjectKeyExists[Key;...] ``` 1. **Key(s)** - Key to check it's existence. You can put as many nested keys as needed. diff --git a/content/docs/(functions)/Text/Object/ObjectKeys.mdx b/content/docs/(functions)/Text/Object/ObjectKeys.mdx index 02970a51..76118300 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeys.mdx @@ -6,7 +6,7 @@ Return the Object Keys with the seperator between each key ## Usage -```php +```cc $ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectLoop.mdx b/content/docs/(functions)/Text/Object/ObjectLoop.mdx index b9191386..d9c3b888 100644 --- a/content/docs/(functions)/Text/Object/ObjectLoop.mdx +++ b/content/docs/(functions)/Text/Object/ObjectLoop.mdx @@ -13,7 +13,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage -```php +```cc $ObjectLoop[key name;value name;index name;Nested Prroperty 1;Nested Property 2;...]{ CODE... } diff --git a/content/docs/(functions)/Text/Object/ObjectMerge.mdx b/content/docs/(functions)/Text/Object/ObjectMerge.mdx index 28f7eb7e..71c70334 100644 --- a/content/docs/(functions)/Text/Object/ObjectMerge.mdx +++ b/content/docs/(functions)/Text/Object/ObjectMerge.mdx @@ -6,7 +6,7 @@ Merge the current object with another object, it overwrites the conflicted keys ## Usage -```php +```cc $ObjectMerge[object] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectRemove.mdx b/content/docs/(functions)/Text/Object/ObjectRemove.mdx index 44c0eef5..f47da101 100644 --- a/content/docs/(functions)/Text/Object/ObjectRemove.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRemove.mdx @@ -6,7 +6,7 @@ To remove a key from the object ## Usage -```php +```cc $ObjectRemove[Key;Key...(Optional)] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx index bd9035eb..6286ccdb 100644 --- a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx @@ -6,7 +6,7 @@ allows you to rename a key in your object ## Usage -```php +```cc $objectRenameKey[old key;new key name] ``` diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index f73b9a25..0413a482 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -17,7 +17,7 @@ set an object property value by key -```php +```cc $objectCreate[{"type":0}] $objectset[version;2.5] diff --git a/content/docs/(functions)/Text/Object/ObjectValues.mdx b/content/docs/(functions)/Text/Object/ObjectValues.mdx index 336b9c89..5232c5a9 100644 --- a/content/docs/(functions)/Text/Object/ObjectValues.mdx +++ b/content/docs/(functions)/Text/Object/ObjectValues.mdx @@ -6,7 +6,7 @@ Return the Object values with seperator between each value ## Usage -```php +```cc $ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] ``` diff --git a/content/docs/(functions)/Text/Object/addObjectProperty.mdx b/content/docs/(functions)/Text/Object/addObjectProperty.mdx index 6c79bad0..1daa3f41 100644 --- a/content/docs/(functions)/Text/Object/addObjectProperty.mdx +++ b/content/docs/(functions)/Text/Object/addObjectProperty.mdx @@ -6,7 +6,7 @@ Adds a key with a value to the existing object. ## Usage -```php +```cc $addObjectProperty[key;value] ``` diff --git a/content/docs/(functions)/Text/Object/createObject.mdx b/content/docs/(functions)/Text/Object/createObject.mdx index 9e81e0cf..bc770c29 100644 --- a/content/docs/(functions)/Text/Object/createObject.mdx +++ b/content/docs/(functions)/Text/Object/createObject.mdx @@ -6,7 +6,7 @@ Creates an object that can be used later. ## Usage -```php +```cc $createObject[object string] ``` diff --git a/content/docs/(functions)/Text/Object/getObjectKeys.mdx b/content/docs/(functions)/Text/Object/getObjectKeys.mdx index 10ce504d..cc42c02e 100644 --- a/content/docs/(functions)/Text/Object/getObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/getObjectKeys.mdx @@ -6,7 +6,7 @@ Return the object keys with seperator (default is space if not provided) ## Usage -```php +```cc $getObjectKeys or $getObjectKeys[Seperator (optional)] ``` diff --git a/content/docs/(functions)/Text/Object/getObjectProperty.mdx b/content/docs/(functions)/Text/Object/getObjectProperty.mdx index 8c5ad7f9..fcb8764b 100644 --- a/content/docs/(functions)/Text/Object/getObjectProperty.mdx +++ b/content/docs/(functions)/Text/Object/getObjectProperty.mdx @@ -6,7 +6,7 @@ Gets a property value from given key. ## Usage -```php +```cc $getObjectProperty[key] ``` diff --git a/content/docs/(functions)/Text/Regex/regexCheck.mdx b/content/docs/(functions)/Text/Regex/regexCheck.mdx index 5e0050d4..b901f509 100644 --- a/content/docs/(functions)/Text/Regex/regexCheck.mdx +++ b/content/docs/(functions)/Text/Regex/regexCheck.mdx @@ -6,7 +6,7 @@ To check if a text matches a regex or not, returns true or false ## Usage -```php +```cc $regexCheck[Text;Regex;Flags] ``` diff --git a/content/docs/(functions)/Text/Regex/regexReplace.mdx b/content/docs/(functions)/Text/Regex/regexReplace.mdx index 5e00cf6d..c095ba82 100644 --- a/content/docs/(functions)/Text/Regex/regexReplace.mdx +++ b/content/docs/(functions)/Text/Regex/regexReplace.mdx @@ -6,7 +6,7 @@ Uses a regular expression to replace matching queries ## Usage -```php +```cc $regexReplace[text;regex;flags;new text] ``` diff --git a/content/docs/(functions)/Text/buffer.mdx b/content/docs/(functions)/Text/buffer.mdx index 027ea5b7..c382d8fc 100644 --- a/content/docs/(functions)/Text/buffer.mdx +++ b/content/docs/(functions)/Text/buffer.mdx @@ -6,12 +6,12 @@ It return the input (useful for some rare cases) ## Usage -```php +```cc $buffer[input] ``` ### Example: -```php +```cc $sendMessage[{footer:$buffer[Some :Breaking :Message]} ``` diff --git a/content/docs/(functions)/Text/checkContains.mdx b/content/docs/(functions)/Text/checkContains.mdx index 1b021890..e544b52b 100644 --- a/content/docs/(functions)/Text/checkContains.mdx +++ b/content/docs/(functions)/Text/checkContains.mdx @@ -6,7 +6,7 @@ checks if given message contains any of the texts ## Usage -```php +```cc $checkContains[message;text1;text2;...] ``` diff --git a/content/docs/(functions)/Text/customEmoji.mdx b/content/docs/(functions)/Text/customEmoji.mdx index 63e4b96c..d515f979 100644 --- a/content/docs/(functions)/Text/customEmoji.mdx +++ b/content/docs/(functions)/Text/customEmoji.mdx @@ -6,7 +6,7 @@ Returns a custom emoji ## Usage -```php +```cc $customEmoji[name or id] ``` diff --git a/content/docs/(functions)/Text/filterMessage.mdx b/content/docs/(functions)/Text/filterMessage.mdx index bce47342..a9f34c33 100644 --- a/content/docs/(functions)/Text/filterMessage.mdx +++ b/content/docs/(functions)/Text/filterMessage.mdx @@ -6,7 +6,7 @@ Removes letters or numbers from given text ## Usage -```php +```cc $filterMessage[message;letterOrSymbols] ``` diff --git a/content/docs/(functions)/Text/filterMessageWords.mdx b/content/docs/(functions)/Text/filterMessageWords.mdx index 9cfec3dd..3bee0b58 100644 --- a/content/docs/(functions)/Text/filterMessageWords.mdx +++ b/content/docs/(functions)/Text/filterMessageWords.mdx @@ -6,7 +6,7 @@ Removed words from the message. ## Usage -```php +```cc $filterMessageWords[text;caseSensitive (yes/no);...words] ``` diff --git a/content/docs/(functions)/Text/findChars.mdx b/content/docs/(functions)/Text/findChars.mdx index 97ff2ad0..2e7984b0 100644 --- a/content/docs/(functions)/Text/findChars.mdx +++ b/content/docs/(functions)/Text/findChars.mdx @@ -6,7 +6,7 @@ Takes all the letters from given string and returns them alone. ## Usage -```php +```cc $findChars[string] ``` diff --git a/content/docs/(functions)/Text/findNumbers.mdx b/content/docs/(functions)/Text/findNumbers.mdx index 65ca6a82..28cd038a 100644 --- a/content/docs/(functions)/Text/findNumbers.mdx +++ b/content/docs/(functions)/Text/findNumbers.mdx @@ -6,7 +6,7 @@ Find numbers from inside a text. ## Usage -```php +```cc $findNumbers[text;separator] ``` diff --git a/content/docs/(functions)/Text/findSpecialChars.mdx b/content/docs/(functions)/Text/findSpecialChars.mdx index da6b1f38..ad039450 100644 --- a/content/docs/(functions)/Text/findSpecialChars.mdx +++ b/content/docs/(functions)/Text/findSpecialChars.mdx @@ -6,7 +6,7 @@ Takes all the non number/letter from given string and returns the alone ## Usage -```php +```cc $findSpecialChars[string] ``` diff --git a/content/docs/(functions)/Text/indexOf.mdx b/content/docs/(functions)/Text/indexOf.mdx index 298c1b6a..09dc300a 100644 --- a/content/docs/(functions)/Text/indexOf.mdx +++ b/content/docs/(functions)/Text/indexOf.mdx @@ -7,7 +7,7 @@ Returns the position of \ in \.\ ## Usage -```php +```cc $indexOf[text;char] ``` diff --git a/content/docs/(functions)/Text/isChannelMention.mdx b/content/docs/(functions)/Text/isChannelMention.mdx index 13f0b5bc..801bb371 100644 --- a/content/docs/(functions)/Text/isChannelMention.mdx +++ b/content/docs/(functions)/Text/isChannelMention.mdx @@ -6,7 +6,7 @@ To check if text provided satisfy discord channel mention format or not ## Usage -```php +```cc $isChannelMention[Text] ``` diff --git a/content/docs/(functions)/Text/isUserMention.mdx b/content/docs/(functions)/Text/isUserMention.mdx index 0abdae3f..7e96fc09 100644 --- a/content/docs/(functions)/Text/isUserMention.mdx +++ b/content/docs/(functions)/Text/isUserMention.mdx @@ -6,7 +6,7 @@ To check if text provided satisfy discord user mention format or not ## Usage -```php +```cc $isUserMention[Text] ``` diff --git a/content/docs/(functions)/Text/isandhas/isConnected.mdx b/content/docs/(functions)/Text/isandhas/isConnected.mdx index b0a7a482..874a35ec 100644 --- a/content/docs/(functions)/Text/isandhas/isConnected.mdx +++ b/content/docs/(functions)/Text/isandhas/isConnected.mdx @@ -6,7 +6,7 @@ To check whether user is connected to voice channel or not (only cached users) ## Usage -```php +```cc $isConnected[User ID] ``` diff --git a/content/docs/(functions)/Text/isandhas/isStreaming.mdx b/content/docs/(functions)/Text/isandhas/isStreaming.mdx index f36f3053..6c49c72a 100644 --- a/content/docs/(functions)/Text/isandhas/isStreaming.mdx +++ b/content/docs/(functions)/Text/isandhas/isStreaming.mdx @@ -6,7 +6,7 @@ To check whether user is streaming in a voice channel or not (only cached users) ## Usage -```php +```cc $isStreaming[User ID] ``` diff --git a/content/docs/(functions)/Text/mentionType.mdx b/content/docs/(functions)/Text/mentionType.mdx index 4afe1382..871139a5 100644 --- a/content/docs/(functions)/Text/mentionType.mdx +++ b/content/docs/(functions)/Text/mentionType.mdx @@ -6,7 +6,7 @@ Uses an argument to determine the type of the mention (role, user, channel or no ## Usage -```php +```cc $mentionType[mention argument] ``` diff --git a/content/docs/(functions)/Text/mentioned.mdx b/content/docs/(functions)/Text/mentioned.mdx index a0a56f53..9314d429 100644 --- a/content/docs/(functions)/Text/mentioned.mdx +++ b/content/docs/(functions)/Text/mentioned.mdx @@ -6,7 +6,7 @@ Returns the ID of the mentioned user ## Usage -```php +```cc $mentioned[mention number or all;return author ID (yes/no)(optional)] ``` diff --git a/content/docs/(functions)/Text/numToWord.mdx b/content/docs/(functions)/Text/numToWord.mdx index 95841592..e81508d6 100644 --- a/content/docs/(functions)/Text/numToWord.mdx +++ b/content/docs/(functions)/Text/numToWord.mdx @@ -7,7 +7,7 @@ e 5 \> five, maximum number would be "nine hundred ninety-nine nonillion" ## Usage -```php +```cc $numToWord[Number] ``` diff --git a/content/docs/(functions)/Text/numberSeparator.mdx b/content/docs/(functions)/Text/numberSeparator.mdx index 6f628a86..7b0ba2f2 100644 --- a/content/docs/(functions)/Text/numberSeparator.mdx +++ b/content/docs/(functions)/Text/numberSeparator.mdx @@ -6,7 +6,7 @@ Separates a number in thousands ## Usage -```php +```cc $numberSeparator[number;separator (optional)] ``` diff --git a/content/docs/(functions)/Text/only/onlyForChannels.mdx b/content/docs/(functions)/Text/only/onlyForChannels.mdx index 961063e7..8b4f949c 100644 --- a/content/docs/(functions)/Text/only/onlyForChannels.mdx +++ b/content/docs/(functions)/Text/only/onlyForChannels.mdx @@ -6,7 +6,7 @@ The command will only be executable in the provided channel IDs. ## Usage -```php +```cc $onlyForChannels[channelID;channelID2;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx index dc62fe39..165144d1 100644 --- a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx +++ b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx @@ -6,7 +6,7 @@ Continues the execution only if 'text' contains all provided words, returns the ## Usage -```php +```cc $onlyIfMessageContains[text;word1;word2;...;error message] ``` diff --git a/content/docs/(functions)/Text/padLeft.mdx b/content/docs/(functions)/Text/padLeft.mdx index a5757131..a6b2218d 100644 --- a/content/docs/(functions)/Text/padLeft.mdx +++ b/content/docs/(functions)/Text/padLeft.mdx @@ -6,7 +6,7 @@ Adds a filling text at the start of text, depend on the maximum length ## Usage -```php +```cc $padLeft[Text;Max Length;Filling Text] ``` diff --git a/content/docs/(functions)/Text/padRight.mdx b/content/docs/(functions)/Text/padRight.mdx index 422815fe..496307d4 100644 --- a/content/docs/(functions)/Text/padRight.mdx +++ b/content/docs/(functions)/Text/padRight.mdx @@ -6,7 +6,7 @@ Adds a filling text at the end of text, depend on the maximum length ## Usage -```php +```cc $padRight[Text;Max Length;Filling Text] ``` diff --git a/content/docs/(functions)/Text/stringEndsWith.mdx b/content/docs/(functions)/Text/stringEndsWith.mdx index f555a90d..76d18a9e 100644 --- a/content/docs/(functions)/Text/stringEndsWith.mdx +++ b/content/docs/(functions)/Text/stringEndsWith.mdx @@ -6,7 +6,7 @@ Checks if given message ends with given text ## Usage -```php +```cc $stringEndsWith[message;text] ``` diff --git a/content/docs/(functions)/Text/stringStartsWith.mdx b/content/docs/(functions)/Text/stringStartsWith.mdx index 71b5166d..8c255357 100644 --- a/content/docs/(functions)/Text/stringStartsWith.mdx +++ b/content/docs/(functions)/Text/stringStartsWith.mdx @@ -6,7 +6,7 @@ Determines whether given message starts by another message or not ## Usage -```php +```cc $stringStartsWith[message;text] ``` diff --git a/content/docs/(functions)/Text/textLength.mdx b/content/docs/(functions)/Text/textLength.mdx index 45bba6f7..0d15d168 100644 --- a/content/docs/(functions)/Text/textLength.mdx +++ b/content/docs/(functions)/Text/textLength.mdx @@ -6,7 +6,7 @@ Counts character of a text, or the user's message. ## Usage -```php +```cc $textLength or $textLength[text] ``` diff --git a/content/docs/(functions)/Text/textShuffle.mdx b/content/docs/(functions)/Text/textShuffle.mdx index be765180..434f95c1 100644 --- a/content/docs/(functions)/Text/textShuffle.mdx +++ b/content/docs/(functions)/Text/textShuffle.mdx @@ -7,7 +7,7 @@ Shuffle a text\ ## Usage -```php +```cc $textShuffle[Text;Separator (optional)] ``` diff --git a/content/docs/(functions)/Text/textSlice.mdx b/content/docs/(functions)/Text/textSlice.mdx index 688f003f..86d0ee97 100644 --- a/content/docs/(functions)/Text/textSlice.mdx +++ b/content/docs/(functions)/Text/textSlice.mdx @@ -6,7 +6,7 @@ Returns \ after given position or text in between X and Y ## Usage -```php +```cc $textSlice[text;x;y (optional)] ``` diff --git a/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx index 7afa3e03..ee467c18 100644 --- a/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeSplitTextElement.mdx @@ -6,7 +6,7 @@ Removes an element or elements from $textSplit by using their indexes. ## Usage -```php +```cc $removeSplitTextElement[index;index2;...] ``` diff --git a/content/docs/(functions)/Text/textTrim.mdx b/content/docs/(functions)/Text/textTrim.mdx index 5dd0efee..20a08a6f 100644 --- a/content/docs/(functions)/Text/textTrim.mdx +++ b/content/docs/(functions)/Text/textTrim.mdx @@ -6,7 +6,7 @@ Removes useless spaces from given text. ## Usage -```php +```cc $textTrim[text] ``` diff --git a/content/docs/(functions)/Text/uri.mdx b/content/docs/(functions)/Text/uri.mdx index 6e81ce8f..5df117d8 100644 --- a/content/docs/(functions)/Text/uri.mdx +++ b/content/docs/(functions)/Text/uri.mdx @@ -6,7 +6,7 @@ Decodes or Encodes a url Example when you encode a url 'hello world' = 'hello%20 ## Usage -```php +```cc $uri[decode/encode;text] ``` diff --git a/content/docs/(functions)/Text/void.mdx b/content/docs/(functions)/Text/void.mdx index d9f7345a..57b5ad8d 100644 --- a/content/docs/(functions)/Text/void.mdx +++ b/content/docs/(functions)/Text/void.mdx @@ -6,7 +6,7 @@ A function that eats input but return nothing! ## Usage -```php +```cc $void[ANYTHING] ``` diff --git a/content/docs/(functions)/Threads/addUsersToThread.mdx b/content/docs/(functions)/Threads/addUsersToThread.mdx index 7c743313..21e416ce 100644 --- a/content/docs/(functions)/Threads/addUsersToThread.mdx +++ b/content/docs/(functions)/Threads/addUsersToThread.mdx @@ -2,22 +2,27 @@ title: "$addUsersToThread" --- -Add users to a thread +Adds one or more users to a thread. ## Usage -```php +```cc $addUsersToThread[Thread ID;User 1 ID;User 2 ID;User 3 ID....] ``` -### Example (Add the triggerer to a thread): -```php -$addUsersToThread[1024373454578917426;$authorID] +**Thread ID** - ID of the thread where you want to add the user. +**User ID** - User IDs to add. + +### Example +Add one user +```cc +$addUsersToThread[1024373454578917426;$authorID] ``` -### Example (add multiple users): -```php +Add multiple users + +```cc $addUsersToThread[1024373454578917426;$authorID;788361834360864808] -``` \ No newline at end of file +``` diff --git a/content/docs/(functions)/Threads/archiveThread.mdx b/content/docs/(functions)/Threads/archiveThread.mdx index 47c2f8e6..f2045cd9 100644 --- a/content/docs/(functions)/Threads/archiveThread.mdx +++ b/content/docs/(functions)/Threads/archiveThread.mdx @@ -6,18 +6,18 @@ archive/unarchive a thread ## Usage -```php +```cc $archiveThread[Thread ID;Archive? (yes/no)] ``` ### Example (Archiving a thread): -```php +```cc $archiveThread[1024373454578917426] ``` ### Example (Unarchiving a thread): -```php +```cc $archiveThread[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/closePost.mdx b/content/docs/(functions)/Threads/closePost.mdx index ccd2608f..28e2c300 100644 --- a/content/docs/(functions)/Threads/closePost.mdx +++ b/content/docs/(functions)/Threads/closePost.mdx @@ -6,18 +6,18 @@ Close/Open a post ## Usage -```php +```cc $closePost[Post ID;Close (yes/no)] ``` ### Example (Closing a post): -```php +```cc $closePost[1024373454578917426] ``` ### Example (Opening a post): -```php +```cc $closePost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/createPost.mdx b/content/docs/(functions)/Threads/createPost.mdx index 8949e14d..9806b51a 100644 --- a/content/docs/(functions)/Threads/createPost.mdx +++ b/content/docs/(functions)/Threads/createPost.mdx @@ -6,7 +6,7 @@ add a new post in forum channel ## Usage -```php +```cc $createPost[ {forum=Forum Name/ID} {title=Post title} diff --git a/content/docs/(functions)/Threads/createThread.mdx b/content/docs/(functions)/Threads/createThread.mdx index 942e1b88..30317123 100644 --- a/content/docs/(functions)/Threads/createThread.mdx +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -9,7 +9,7 @@ Create a thread, corresponding to the messageID specified in the function `$createThread[Channel ID;Message ID;Thread Name;Reason;Duration (1h/1d/3d/7d)(optional);Return ID (yes/no)(optional);Private Thread? (yes/no)]` #### Example (Create Thread on user message): -```php +```cc $createThread[ {channel=$channelID} {message=$messageID} @@ -18,7 +18,7 @@ $createThread[ ``` #### Example (Create A private thread): -```php +```cc $createThread[ {channel=$channelID} {message=$messageID} diff --git a/content/docs/(functions)/Threads/deletePost.mdx b/content/docs/(functions)/Threads/deletePost.mdx index 1c54a093..a8fcb6b8 100644 --- a/content/docs/(functions)/Threads/deletePost.mdx +++ b/content/docs/(functions)/Threads/deletePost.mdx @@ -6,11 +6,11 @@ delete a post ## Usage -```php +```cc $deletePost[Post ID] ``` ### Example: -```php +```cc $deletePost[1024373454578917426] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/deletePosts.mdx b/content/docs/(functions)/Threads/deletePosts.mdx index e356e7a5..466d01b4 100644 --- a/content/docs/(functions)/Threads/deletePosts.mdx +++ b/content/docs/(functions)/Threads/deletePosts.mdx @@ -6,11 +6,11 @@ delete posts up to 10 post ## Usage -```php +```cc $deletePost[Post 1;Post 2;...] ``` ### Example: -```php +```cc $deletePosts[1024373454578917426;1024373433578915132;1222373424378915555] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/editPost.mdx b/content/docs/(functions)/Threads/editPost.mdx index 50293365..e253db7b 100644 --- a/content/docs/(functions)/Threads/editPost.mdx +++ b/content/docs/(functions)/Threads/editPost.mdx @@ -6,7 +6,7 @@ edit an existing post in forum channel ## Usage -```php +```cc $editPost[ {post_id=Post ID} {title=New Post title} @@ -43,7 +43,7 @@ It accept embed and curl format like\ ``` ### Example (Lock , Add Tag Inactive, Remove Tag Active): -```php +```cc $editPost[ {id=1234} {locked=yes} diff --git a/content/docs/(functions)/Threads/lockPost.mdx b/content/docs/(functions)/Threads/lockPost.mdx index f230a5aa..a6f1ceeb 100644 --- a/content/docs/(functions)/Threads/lockPost.mdx +++ b/content/docs/(functions)/Threads/lockPost.mdx @@ -6,18 +6,18 @@ lock/unlock a post ## Usage -```php +```cc $lockPost[Post ID;Lock? (yes/no)] ``` ### Example (Locking a post): -```php +```cc $lockPost[1024373454578917426] ``` ### Example (Unlocking a post): -```php +```cc $lockPost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/lockThread.mdx b/content/docs/(functions)/Threads/lockThread.mdx index 0d0b33de..009c4de1 100644 --- a/content/docs/(functions)/Threads/lockThread.mdx +++ b/content/docs/(functions)/Threads/lockThread.mdx @@ -6,18 +6,18 @@ lock/unlock a thread ## Usage -```php +```cc $lockThread[Thread ID;Lock? (yes/no)] ``` ### Example (Locking a thread): -```php +```cc $lockThread[1024373454578917426] ``` ### Example (Unlocking a thread): -```php +```cc $lockThread[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/pinPost.mdx b/content/docs/(functions)/Threads/pinPost.mdx index 159c893a..2c1f97a7 100644 --- a/content/docs/(functions)/Threads/pinPost.mdx +++ b/content/docs/(functions)/Threads/pinPost.mdx @@ -6,18 +6,18 @@ pin/unpin a post ## Usage -```php +```cc $pinPost[Post ID;pin? (yes/no)] ``` ### Example (pining a post): -```php +```cc $pinPost[1024373454578917426] ``` ### Example (Unpining a post): -```php +```cc $pinPost[1024373454578917426;no] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Threads/removeUsersFromThread.mdx b/content/docs/(functions)/Threads/removeUsersFromThread.mdx index d8de79bd..dba7c6e4 100644 --- a/content/docs/(functions)/Threads/removeUsersFromThread.mdx +++ b/content/docs/(functions)/Threads/removeUsersFromThread.mdx @@ -6,18 +6,18 @@ remove users from a thread ## Usage -```php +```cc $removeUsersFromThread[Thread ID;User 1 ID;User 2 ID;User 3 ID....] ``` ### Example (remove the triggerer from a thread): -```php +```cc $removeUsersFromThread[1024373454578917426;$authorID] ``` ### Example (remove multiple users): -```php +```cc $removeUsersFromThread[1024373454578917426;$authorID;788361834360864808] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Timeout/timeoutAction.mdx b/content/docs/(functions)/Timeout/timeoutAction.mdx index df00cd57..edee4908 100644 --- a/content/docs/(functions)/Timeout/timeoutAction.mdx +++ b/content/docs/(functions)/Timeout/timeoutAction.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```php +```cc $timeoutAction ``` diff --git a/content/docs/(functions)/Timeout/timeoutBy.mdx b/content/docs/(functions)/Timeout/timeoutBy.mdx index dd8aac29..310e37b6 100644 --- a/content/docs/(functions)/Timeout/timeoutBy.mdx +++ b/content/docs/(functions)/Timeout/timeoutBy.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```php +```cc $timeoutBy ``` diff --git a/content/docs/(functions)/Timeout/timeoutReason.mdx b/content/docs/(functions)/Timeout/timeoutReason.mdx index c6621e80..43496741 100644 --- a/content/docs/(functions)/Timeout/timeoutReason.mdx +++ b/content/docs/(functions)/Timeout/timeoutReason.mdx @@ -7,7 +7,7 @@ This function only works in the Timeout trigger. ## Usage -```php +```cc $timeoutReason ``` diff --git a/content/docs/(functions)/Timeout/userGetTimeout.mdx b/content/docs/(functions)/Timeout/userGetTimeout.mdx index 8fa87ab6..66b73883 100644 --- a/content/docs/(functions)/Timeout/userGetTimeout.mdx +++ b/content/docs/(functions)/Timeout/userGetTimeout.mdx @@ -7,7 +7,7 @@ If user is not timed out, it will return 0. ## Usage -```php +```cc $userGetTimeout[user id] ``` diff --git a/content/docs/(functions)/Timeout/userRemoveTimeout.mdx b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx index ac344269..6e13e2d4 100644 --- a/content/docs/(functions)/Timeout/userRemoveTimeout.mdx +++ b/content/docs/(functions)/Timeout/userRemoveTimeout.mdx @@ -6,7 +6,7 @@ Removes a timeout from a user. ## Usage -```php +```cc $userRemoveTimeout[user id;reason (optional)] ``` diff --git a/content/docs/(functions)/Timeout/userSetTimeout.mdx b/content/docs/(functions)/Timeout/userSetTimeout.mdx index a98a4e9e..a8222aa2 100644 --- a/content/docs/(functions)/Timeout/userSetTimeout.mdx +++ b/content/docs/(functions)/Timeout/userSetTimeout.mdx @@ -6,7 +6,7 @@ Sets a user timeout, so the user cannot talk/interact in the server. ## Usage -```php +```cc $userSetTimeout[user id;time (optional, default:'10m');reason (optional)] ``` diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index 240943d5..17575b90 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -9,7 +9,7 @@ To call a user-defined function created with `$function` `$callFunction[Function Name;Argument 1 (optional);Argument 2....(optional)]` #### Example: -```php +```cc $callFunction[printHello;Mika] ``` diff --git a/content/docs/(functions)/Useful/commandCode.mdx b/content/docs/(functions)/Useful/commandCode.mdx index 31271e26..18a7aefb 100644 --- a/content/docs/(functions)/Useful/commandCode.mdx +++ b/content/docs/(functions)/Useful/commandCode.mdx @@ -6,12 +6,12 @@ Returns the code of the current command. ## Usage -```php +```cc $commandCode ``` ## Example -```php +```cc Emergency alert has been triggered! Please note that each use of this command is logged, and each unjustified use of this command will result in punishment. $channelSendMessage[$channelID[logs]; diff --git a/content/docs/(functions)/Useful/deleteTrigger.mdx b/content/docs/(functions)/Useful/deleteTrigger.mdx index 94271117..e72775c8 100644 --- a/content/docs/(functions)/Useful/deleteTrigger.mdx +++ b/content/docs/(functions)/Useful/deleteTrigger.mdx @@ -6,7 +6,7 @@ Delete a command using its token, **empty token = delete current command** ## Usage -```php +```cc $deleteTrigger[Token;Delete Current Trigger If Empty (yes/no, default yes)] ``` diff --git a/content/docs/(functions)/Useful/editTrigger.mdx b/content/docs/(functions)/Useful/editTrigger.mdx index 952a540b..411eca5b 100644 --- a/content/docs/(functions)/Useful/editTrigger.mdx +++ b/content/docs/(functions)/Useful/editTrigger.mdx @@ -8,12 +8,12 @@ Editable types: name, runonlyin, ignorerole, type, trigger, channelused, minper ## Usage -```php +```cc $editTrigger[InfoType;New value;Token (optional)] ``` ### Example: -```php +```cc $editTrigger[name;Edited Name] ``` @@ -21,6 +21,6 @@ $editTrigger[name;Edited Name] you change the trigger time, with `time` as type, and value to be the timestamp (in ms) of the next trigger time, make sure it's a time in future Example (Set the time to trigger after 10s) -```php +```cc $editTrigger[time;$math[$timestamp+10000];$token] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/endForEach.mdx b/content/docs/(functions)/Useful/endForEach.mdx index 0a962a8d..7f22df01 100644 --- a/content/docs/(functions)/Useful/endForEach.mdx +++ b/content/docs/(functions)/Useful/endForEach.mdx @@ -6,7 +6,7 @@ To close $foreach ## Usage -```php +```cc Example: $forEach[...] CODE diff --git a/content/docs/(functions)/Useful/endFunction.mdx b/content/docs/(functions)/Useful/endFunction.mdx index 24b22786..99d3da7c 100644 --- a/content/docs/(functions)/Useful/endFunction.mdx +++ b/content/docs/(functions)/Useful/endFunction.mdx @@ -6,12 +6,12 @@ To close $function ## Usage -```php +```cc $endFunction ``` ### Example: -```php +```cc $function[Function Name;Paramaters..] CODE $endFunction diff --git a/content/docs/(functions)/Useful/endTimeout.mdx b/content/docs/(functions)/Useful/endTimeout.mdx index d5120d2b..b6f12de3 100644 --- a/content/docs/(functions)/Useful/endTimeout.mdx +++ b/content/docs/(functions)/Useful/endTimeout.mdx @@ -6,7 +6,7 @@ To close $setTimeout ## Usage -```php +```cc $endTimeout ``` diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 9fb6b85b..8b4e77fa 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -5,7 +5,7 @@ title: "$forEach" Will loop over a list and every loop it will take an item and assign it inside varname accessible by $get[varname] or $varname ## Usage: -```php +```cc $forEach[varname;LIST (ex: mido rake azz);Separator (Optional, default is space)] ``` ## Loop Limits @@ -18,7 +18,7 @@ Loops in this function are limited to a certain number of cycles. These limits v | 5 (Ultra) | 60 | ## Example: -```php +```cc $forEach[member;Rake, Mido, Mika, Azz, Felix, Flinkz, Wiki, Ddk;, ] $get[member], is one of our Staff Members! $endForEach diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index e77ec854..f5c81bb5 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -9,7 +9,7 @@ Create a user-defined function that can be called by $callFunction or $functionN `$function[Function name;Param 1 (optional);Param 2...(optional)]` #### Example: -```php +```cc $function[printHello;name] Hello $name $endFunction diff --git a/content/docs/(functions)/Useful/getToken.mdx b/content/docs/(functions)/Useful/getToken.mdx index 355a07f0..090cd481 100644 --- a/content/docs/(functions)/Useful/getToken.mdx +++ b/content/docs/(functions)/Useful/getToken.mdx @@ -7,12 +7,12 @@ search for command name, and return the first matching command token.\ ## Usage -```php +```cc $getToken[Name] ``` ### Example: -```php +```cc $getToken[Welcomer] Output:dZK1x ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/getTrigger.mdx b/content/docs/(functions)/Useful/getTrigger.mdx index cb1e5553..02bf2e15 100644 --- a/content/docs/(functions)/Useful/getTrigger.mdx +++ b/content/docs/(functions)/Useful/getTrigger.mdx @@ -8,11 +8,11 @@ Valid InfoType: name, token, guild, code, runonlyin, ignorerole, type, typename, ## Usage -```php +```cc $getTrigger[InfoType;Token (optional)] ``` ### Example: -```php +```cc $getTrigger[name] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Useful/ignoreErrors.mdx b/content/docs/(functions)/Useful/ignoreErrors.mdx index 65ab92b7..6b28ee9a 100644 --- a/content/docs/(functions)/Useful/ignoreErrors.mdx +++ b/content/docs/(functions)/Useful/ignoreErrors.mdx @@ -6,7 +6,7 @@ It will tell the interpreter to ignore the errors and in case of error, the func ## Usage -```php +```cc $ignoreErrors[yes/no;placeholder (default: error)] ``` diff --git a/content/docs/(functions)/Useful/includeLibrary.mdx b/content/docs/(functions)/Useful/includeLibrary.mdx index c22f2122..45d93bbc 100644 --- a/content/docs/(functions)/Useful/includeLibrary.mdx +++ b/content/docs/(functions)/Useful/includeLibrary.mdx @@ -6,7 +6,7 @@ To include code created in Library trigger ## Usage -```php +```cc $includeLibrary[Library name] ``` diff --git a/content/docs/(functions)/Useful/jsonRequest.mdx b/content/docs/(functions)/Useful/jsonRequest.mdx index 3ff7eb95..4ef1e124 100644 --- a/content/docs/(functions)/Useful/jsonRequest.mdx +++ b/content/docs/(functions)/Useful/jsonRequest.mdx @@ -11,7 +11,7 @@ The URL must be whitelisted, you can check in our support server. ## Usage -```php +```cc $jsonRequest[url;property;error message;headerName:headerValue;headerName:headerValue;...] ``` @@ -28,6 +28,6 @@ Assume `my api url` return json reply like: ``` Code: -```php +```cc Your money is $jsonRequest[my api;money;failed to get the money] ``` diff --git a/content/docs/(functions)/Useful/return.mdx b/content/docs/(functions)/Useful/return.mdx index 1e5338b9..21cd24dd 100644 --- a/content/docs/(functions)/Useful/return.mdx +++ b/content/docs/(functions)/Useful/return.mdx @@ -9,12 +9,12 @@ It has no effect outside the user-defined function ## Usage -```php +```cc $return[Return Value(optional)] ``` ### Example: -```php +```cc $function[add;num1;num2] $return[$math[$num1+$num2]] $endFunction diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx index d11b6398..a8cb73e3 100644 --- a/content/docs/(functions)/Useful/stop.mdx +++ b/content/docs/(functions)/Useful/stop.mdx @@ -38,7 +38,7 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ Using plain text in your code, like below will **NOT** work!! This code doesn't work: -```php +```cc This is plain text before the stop function $stop This is plain text after the stop function diff --git a/content/docs/(functions)/Useful/triggerExists.mdx b/content/docs/(functions)/Useful/triggerExists.mdx index b823c87e..05cc658b 100644 --- a/content/docs/(functions)/Useful/triggerExists.mdx +++ b/content/docs/(functions)/Useful/triggerExists.mdx @@ -6,7 +6,7 @@ Check if a trigger with the specified token exists ## Usage -```php +```cc $triggerExists[Token] ``` diff --git a/content/docs/(functions)/Variables/increaseChannelVar.mdx b/content/docs/(functions)/Variables/increaseChannelVar.mdx index 361d58a0..743f33b1 100644 --- a/content/docs/(functions)/Variables/increaseChannelVar.mdx +++ b/content/docs/(functions)/Variables/increaseChannelVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```php +```cc $increaseChannelVar[variable name;amount/expression;channel id;default amount (default is 0)] ``` ### Example (increase channel messages by 1): -```php +```cc $increaseChannelVar[messages;1] diff --git a/content/docs/(functions)/Variables/increaseServerVar.mdx b/content/docs/(functions)/Variables/increaseServerVar.mdx index 2d822ce9..c40c9cc4 100644 --- a/content/docs/(functions)/Variables/increaseServerVar.mdx +++ b/content/docs/(functions)/Variables/increaseServerVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```php +```cc $increaseServerVar[variable name;amount/expression;default amount (default is 0)] ``` ### Example (increase ticket numbers by 1): -```php +```cc $increaseServerVar[ticket numbers;1] diff --git a/content/docs/(functions)/Variables/increaseUserVar.mdx b/content/docs/(functions)/Variables/increaseUserVar.mdx index 0c95253c..3a795590 100644 --- a/content/docs/(functions)/Variables/increaseUserVar.mdx +++ b/content/docs/(functions)/Variables/increaseUserVar.mdx @@ -7,12 +7,12 @@ If the variable doesn't exist it will be created and its value set to the answer ## Usage -```php +```cc $increaseUserVar[variable name;amount/expression;user id;default amount (default is 0)] ``` ### Example (increase user money by 1000): -```php +```cc $increaseUserVar[money;1000] diff --git a/content/docs/(functions)/Variables/initVar.mdx b/content/docs/(functions)/Variables/initVar.mdx index e79bf12a..3cde4a1a 100644 --- a/content/docs/(functions)/Variables/initVar.mdx +++ b/content/docs/(functions)/Variables/initVar.mdx @@ -6,7 +6,7 @@ Initializes a variable with a default value if the var is undefined or does not ## Usage -```php +```cc $initVar[type;varname;Default Value;Custom ID (optional)] ``` @@ -19,21 +19,21 @@ server, message, channel, user * For type 'user', it will be the user id. ### Example (Server Var): -```php +```cc $initVar[server;totalPolls;0] ``` ### Example (Channel Var): -```php +```cc $initVar[channel;ticket-owner;$authorID;$channelID] ``` ### Example (User Var): -```php +```cc $initVar[user;money;0;$userID] ``` ### Example (Message Var): -```php +```cc $initVar[message;reactions;0;$messageID] ``` \ No newline at end of file diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx index c340a38b..38c788aa 100644 --- a/content/docs/(functions)/Variables/userVarRank.mdx +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -6,7 +6,7 @@ Return user var rank returned by $userleaderboard for a single user ## Usage -```php +```cc $uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);User ID (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewChannelVars.mdx b/content/docs/(functions)/Variables/viewChannelVars.mdx index 73532228..e2d95548 100644 --- a/content/docs/(functions)/Variables/viewChannelVars.mdx +++ b/content/docs/(functions)/Variables/viewChannelVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for a specific channel, and se ## Usage -```php +```cc $viewChannelVars[Channel ID (default: $channelID);Separator;Query Regex (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewServerVars.mdx b/content/docs/(functions)/Variables/viewServerVars.mdx index 04d3f1d5..cccdc5e3 100644 --- a/content/docs/(functions)/Variables/viewServerVars.mdx +++ b/content/docs/(functions)/Variables/viewServerVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for the server, and search for ## Usage -```php +```cc $viewServerVars[Separator;Query Regex (optional)] ``` diff --git a/content/docs/(functions)/Variables/viewUserVars.mdx b/content/docs/(functions)/Variables/viewUserVars.mdx index c60d9beb..a9f3c7e7 100644 --- a/content/docs/(functions)/Variables/viewUserVars.mdx +++ b/content/docs/(functions)/Variables/viewUserVars.mdx @@ -6,7 +6,7 @@ View a list of all the variables that are defined for a specific user ## Usage -```php +```cc $viewUserVars[User ID;Separator] ``` diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 5f04ced9..166483ba 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -13,6 +13,7 @@ title: "v1.x (Current)" * Added a **Custom** option for Custom Bot status (Tier 4+) in **Dashboard > Premium**. * Improved the Word Trigger UI with more intuitive options such as **Starts With**. New commands use the updated system while maintaining backward compatibility. * Support for Forwarded Messages in the new Word Trigger. +* Support for User Mention/Ping in the new Word Trigger. * `$msg` now supports forward-related options such as `isforward`, `forwardmsgid`, `forwardsvid`, and `forwardchid`. * `$message` now returns the forwarded message content when the message is a forwarded message. * New trigger for User Commands (Context Menu), [learn more here](/Trigger/app_cmd_user). diff --git a/content/docs/Changelogs/v1.4.4.mdx b/content/docs/Changelogs/v1.4.4.mdx index f1d8a32e..c0fdadf3 100644 --- a/content/docs/Changelogs/v1.4.4.mdx +++ b/content/docs/Changelogs/v1.4.4.mdx @@ -11,7 +11,7 @@ title: "V1.4.4" An easy user-friendly way to mention a role or a channel with name or id. Example -```php +```cc $mentionRole[Member] $mentionChannel[updates-beta] ``` @@ -35,7 +35,7 @@ Usage ``` Example -```php +```cc $editMessage[ my new content {removebutton} @@ -53,12 +53,12 @@ Will help you to remove specific embed from a message or all embeds of a message Usage -```php +```cc $removeEmbed[Channel ID;Message ID;Embed Number (or all)] ``` Example (Remove all embeds of a message) -```php +```cc $removeEmbed[$channelID;$messageID;all] ``` @@ -127,7 +127,7 @@ As shown in the image a new image builder function, where it crop a loaded image. ##### Usage -```php +```cc $imageCrop[image name;offset x;offset y;width;height] ``` @@ -202,7 +202,7 @@ This new curl name, will help you send a new poll ``` ##### Example -```php +```cc $sendMessage[ {poll: {question=What is the biggest country in the world?} @@ -238,7 +238,7 @@ This new trigger will help you detect some useful actions of events like: when i This function gonna help you know which invite method and code the user used to join the server, it uses member search behind the scene to retrieve the value. #### Usage -```php +```cc $memberJoinedCode[User ID;Info Type] ``` @@ -252,7 +252,7 @@ You can pick from `code, code_url, type, inviter` #### Example -```php +```cc $memberJoinedCode[$userID;code] ``` @@ -269,22 +269,22 @@ XABCDEF This function allows you to pause invites/DMs for the server for a period of time (up to you). #### Usage -```php +```cc $securityPause[Duration of Pause (i.e 2h);Pause Invite (Yes/No);Pause DM (Yes/No)] ``` ##### Example (Pause invites for 24 hours) -```php +```cc $securityPause[24h;yes;no] ``` ##### Example (Pause DMs for 12 hours) -```php +```cc $securityPause[12h;no;yes] ``` ##### Example (Pause invites and DMs for 24 hours) -```php +```cc $securityPause[24h;yes;yes] ``` @@ -298,7 +298,7 @@ $securityPause[24h;yes;yes] This function allows you, to search for a member if his username/nickname started with a query. it does not rely on cache and instead use discord api. #### Usage -```php +```cc $memberSearch[Query;Amount to Return;separator;info to return] ``` @@ -324,7 +324,7 @@ It determines how many users it will return if they match the query, by default Added `displayname` property, that will help you know the user display name if exists ##### Usage -```php +```cc $user[12345678987654321;displayname] ``` @@ -398,7 +398,7 @@ So added new curl that allow you to shape them when sending a new messsage, here ##### Usage: -```php +```cc $modal[... {input: {type=menu} @@ -408,7 +408,7 @@ $modal[... ``` ##### Example: -```php +```cc $modal[ {title=Application} {id=modal_id} @@ -458,7 +458,7 @@ when sending a menu with curl, you can specify the selected options by default ( ``` ##### Example: -```php +```cc $sendMessage[ {menu: {id=menu_id} @@ -484,7 +484,7 @@ $forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return Mes ##### Example: -```php +```cc $forwardMessage[$channelID;$messageID;Another Channel] ``` @@ -496,7 +496,7 @@ $forwardMessage[$channelID;$messageID;Another Channel] You can add other types of menus like user selection in the modal ##### Usage: -```php +```cc $modal[... {input: {type=user/role/channel/mention} @@ -512,7 +512,7 @@ $modal[... ``` ##### Example: -```php +```cc $modal[ {title=Report Application} {id=modal_id} @@ -543,7 +543,7 @@ An update in $user, to allow you to get the equipped clan tag of the user, in ad `clantagserver`: get the tag server id ##### Example -```php +```cc $user[1234567;clantag] ``` @@ -557,7 +557,7 @@ $user[1234567;clantag] You can now ask the user to upload a file in the modal ##### Usage: -```php +```cc $modal[... {input: {type=attachment} @@ -571,7 +571,7 @@ $modal[... ``` ##### Example: -```php +```cc $modal[ {title=Report Application} {id=modal_id} @@ -606,7 +606,7 @@ You can now natively add interactive **Radio Groups** (select one option) and ** ##### Usage: -```php +```cc $modal[... {input: {type=radio/checkbox} @@ -630,7 +630,7 @@ $modal[... ##### Example: -```php +```cc $modal[ {title=Report Application} {id=modal_id} @@ -684,7 +684,7 @@ $modal[ Return the global name of a user using $globalName or $user ##### Usage -```php +```cc $globalName[User ID] Or @@ -718,7 +718,7 @@ Added alias in options: added `separator` input for it, to return all numbers with certain separator **Example** -```php +```cc $findNumbers[my name is mido, i'm 999 years old, living in the 1000th floor in heaven building.;, ] ``` @@ -736,7 +736,7 @@ $findNumbers[my name is mido, i'm 999 years old, living in the 1000th floor in h You can use user mention as acceptable user input for functions such as $giveRoles Example -```php +```cc $giveRoles[$mention;Role name] ``` will work as expected @@ -750,7 +750,7 @@ will work as expected A new input added to the function called `command token`, it allows you to specify which command cooldown you want to retrieve, instead of the running command New Usage -```php +```cc $getCooldownTime[time (i.e 5m);type (i.e user);id (i.e 123456);token (i.e xGhkd)] ``` @@ -808,7 +808,7 @@ Added a new optional input: `Command Token` Allows you to clear another command token instead of the running one New Usage -```php +```cc $clearCooldown[type;id;token] ``` @@ -821,7 +821,7 @@ $clearCooldown[type;id;token] `Mention Number` input accept `all` as input, which means return all mentioned users with `, ` as separator Example -```php +```cc $mentioned[all] ``` @@ -841,7 +841,7 @@ id1, id2, id3 Added `post name` as input, if you would like to create a post inside a forum using the webhook Example -```php +```cc $sendWebhook[Webhook ID;Webhook Token;Your message content;;;;;Post name] ``` @@ -856,7 +856,7 @@ $sendWebhook[Webhook ID;Webhook Token;Your message content;;;;;Post name] Added `Delete After` input, if you would like to wait a certain amount of time before deleting the message #### Example -```php +```cc $deleteCommand[5m] ``` @@ -869,7 +869,7 @@ $deleteCommand[5m] Added an input to control if you would like to skip deleting pinned messages or not. #### Example -```php +```cc $clear[amount;userid;channel;skip pinned messages (yes/no)] ``` @@ -914,7 +914,7 @@ After: $hour added `color_hex` property to get the color as hex instead of integer. ##### Example -```php +```cc $getEmbed[$channelID;12345;color_hex] ``` @@ -932,7 +932,7 @@ It behaved same as $displayName, so we added new option to control if you would ##### Usage -```php +```cc $nickname[User ID;Return Display name if no nickname set (yes/no, default is yes)] ``` @@ -953,7 +953,7 @@ Remove specific fields ``` ##### Example -```php +```cc $editEmbed[$channelID;$messageID;{removefields}] ``` @@ -965,7 +965,7 @@ $editEmbed[$channelID;$messageID;{removefields}] added a new optional option to set the separator of the returned list of numbers, by default it is space ##### Usage -```php +```cc $seq[Start;Stop;Step;Separator (default ' ')] ``` @@ -989,7 +989,7 @@ $role[Role name;ThirdColor] ##### Example: -```php +```cc $colorRole[Admin;green;red] ``` @@ -1001,7 +1001,7 @@ $colorRole[Admin;green;red] You can see the message components in form of curl property `components` in $msg ##### Usage: -```php +```cc $msg[channel ID;message ID;components] ``` @@ -1028,7 +1028,7 @@ You can get the voice channel user limit using `limit` in $channel it will return 0 when there is no limit. ##### Example -```php +```cc $channel[1234567;limit] ``` diff --git a/content/docs/CodeReferences/ref.expression.mdx b/content/docs/CodeReferences/ref.expression.mdx index 58126825..f3bb043d 100644 --- a/content/docs/CodeReferences/ref.expression.mdx +++ b/content/docs/CodeReferences/ref.expression.mdx @@ -31,7 +31,7 @@ Here's a breakdown of the available operators: **Example:** -```php +```cc $username==Mido ``` @@ -49,7 +49,7 @@ Often, you'll need to create more complex conditions by combining multiple expre ### Example 1: Using AND (`&&`) -```php +```cc $username==Mido&&$country==Egypt ``` @@ -62,7 +62,7 @@ The `&&` operator means that *both* condition 1 *AND* condition 2 must be true f ### Example 2: Using OR (`||`) -```php +```cc $username==Mido||$country==Egypt ``` @@ -92,7 +92,7 @@ The entire expression evaluates to `true` if either group 1 *OR* group 2 is true ### Example 2: Nested OR Grouping -```php +```cc $username==Mido||($country==Egypt||$country==Masr) ``` diff --git a/content/docs/CodeReferences/ref.imgbuild.position.mdx b/content/docs/CodeReferences/ref.imgbuild.position.mdx index a2678b39..34fe2959 100644 --- a/content/docs/CodeReferences/ref.imgbuild.position.mdx +++ b/content/docs/CodeReferences/ref.imgbuild.position.mdx @@ -51,7 +51,7 @@ The `$imagePositionBase` function allows us to change the origin point used for Its usage is: -```php +```cc $imagePositionBase[Base] ``` diff --git a/content/docs/CodeReferences/ref.imgbuild.size.mdx b/content/docs/CodeReferences/ref.imgbuild.size.mdx index fc6f3858..c9ac728a 100644 --- a/content/docs/CodeReferences/ref.imgbuild.size.mdx +++ b/content/docs/CodeReferences/ref.imgbuild.size.mdx @@ -12,7 +12,7 @@ The `Size` parameter in our functions is defined by two key components: **Width* Let's start with a simple example using the `$imageFill` function, which requires the size of the rectangle to be filled. We'll begin with a rectangle with `Width=100` and `Height=100`. -```php +```cc $imageFill([x=0, y=0, width=100, height=100, color=blue]) ``` @@ -22,7 +22,7 @@ $imageFill([x=0, y=0, width=100, height=100, color=blue]) Increasing the `Width` and `Height` proportionally scales the rectangle. Let's try `Width=200` and `Height=100`: -```php +```cc $imageFill([x=0, y=0, width=200, height=100, color=blue]) ``` @@ -32,7 +32,7 @@ $imageFill([x=0, y=0, width=200, height=100, color=blue]) Let's create two rectangles (White and Red) to construct a simple representation of the Polish flag. -```php +```cc $imageFill([x=0, y=0, width=width, height=height/2, color=white]) $imageFill([x=0, y=height/2, width=width, height=height/2, color=red]) ``` @@ -61,7 +61,7 @@ These placeholders allow you to dynamically determine the size of elements based We can now use `center` to simplify our Polish flag example, making the code more readable: -```php +```cc $imageFill([x=0, y=0, width=width, height=centery, color=white]) $imageFill([x=0, y=centery, width=width, height=centery, color=red]) ``` diff --git a/content/docs/CodeReferences/ref.permissions_list.mdx b/content/docs/CodeReferences/ref.permissions_list.mdx index cea4ef42..c28a70a6 100644 --- a/content/docs/CodeReferences/ref.permissions_list.mdx +++ b/content/docs/CodeReferences/ref.permissions_list.mdx @@ -68,7 +68,7 @@ Here's a breakdown of the permissions you can use: This example demonstrates how to use `$modifyChannelPerms` to deny the "send messages" permission for a role with the ID `muted` in a specific channel. -```php +```cc $modifyChannelPerms[$channelID;-sendmessages;$roleID[muted]] ``` diff --git a/content/docs/CodeReferences/ref.poll_data.mdx b/content/docs/CodeReferences/ref.poll_data.mdx index b709427f..d89e90e2 100644 --- a/content/docs/CodeReferences/ref.poll_data.mdx +++ b/content/docs/CodeReferences/ref.poll_data.mdx @@ -21,7 +21,7 @@ You can use \{poll:data} to send a message with a poll ``` ### Example -```php +```cc $sendMessage[ {poll: {question=What is the biggest country in the world?} diff --git a/content/docs/CodeReferences/ref.time_format.mdx b/content/docs/CodeReferences/ref.time_format.mdx index a88e3a2b..912636ee 100644 --- a/content/docs/CodeReferences/ref.time_format.mdx +++ b/content/docs/CodeReferences/ref.time_format.mdx @@ -33,7 +33,7 @@ The following table details the available time format macros and their descripti | `tz` | Timezone abbreviation | `UTC` | ### Example -```php +```cc $timeToDate[$timestamp;%y%-%m%-%d%] ``` Result: diff --git a/content/docs/CodeReferences/ref.v2_components.mdx b/content/docs/CodeReferences/ref.v2_components.mdx index 120f9b1e..a5fad45f 100644 --- a/content/docs/CodeReferences/ref.v2_components.mdx +++ b/content/docs/CodeReferences/ref.v2_components.mdx @@ -80,7 +80,7 @@ Spoiler, allow you to determine if the whole container will be marked as spoiler ``` ### Example -```php +```cc $sendMessage[ {container: @@ -110,7 +110,7 @@ $sendMessage[ ### Example (Not using a container) If you don't like how the container looks like, you can directly add components without it (only for text, section, gallery, file, separator) -```php +```cc $sendMessage[ {section: {text: a text inside section} diff --git a/content/docs/Contribution_Info/Templating.mdx b/content/docs/Contribution_Info/Templating.mdx index bf908732..649623c9 100644 --- a/content/docs/Contribution_Info/Templating.mdx +++ b/content/docs/Contribution_Info/Templating.mdx @@ -84,7 +84,7 @@ The `$onTemplate` function creates a user interface (UI) for interacting with co ### Usage -```php +```cc $onTemplate[type;field;title;help;default value] ``` @@ -140,7 +140,7 @@ Use the following escape sequences instead: **Ticket Code:** -```php +```cc $let[categoryID;$onTemplate[category;dropdown;Ticket Category;Choose the category where the ticket should be created;$channelCategoryID]] // Put the category ID Here $if[$buttonID==openTicket] $cooldown[1m;<@$authorID> Please Wait %time% to create a new ticket] @@ -172,7 +172,7 @@ $endelse **How to Spread Arrays:** -```php +```cc $let[input;input,from,template] $giveRoles[$authorID;$spread[,;$input]] ``` diff --git a/content/docs/Guide/5.comment.mdx b/content/docs/Guide/5.comment.mdx index b2cfcd72..043528b2 100644 --- a/content/docs/Guide/5.comment.mdx +++ b/content/docs/Guide/5.comment.mdx @@ -17,7 +17,7 @@ Single-Line comments are comments just on one line. You should use this for note ### Example -```php +```cc $let[userYear;2000] // User's age @@ -49,7 +49,7 @@ Multi-Line comments can comment multiple lines at once. You can also use this to ### Example -```php +```cc /* userYear -> Year the user was born in age -> User's age diff --git a/content/docs/Guide/6.variables.mdx b/content/docs/Guide/6.variables.mdx index 7e650521..e18eda0c 100644 --- a/content/docs/Guide/6.variables.mdx +++ b/content/docs/Guide/6.variables.mdx @@ -18,7 +18,7 @@ You can also access temporary variables directly by prefixing their name with a ### Example -```php +```cc $let[uid;$randomUserID] $let[name;$displayName[$uid]] @@ -58,15 +58,15 @@ Permanent variables are ideal for storing settings, progress, or any other data ### Example -```php title="Command 1" +```cc title="Command 1" $setUserVar[level;4] ``` -```php title="Command 2" +```cc title="Command 2" Your level: $getUserVar[level] // 4 ``` -```php title="Command 3" +```cc title="Command 3" $increaseUserVar[level;1] Your new level: $getUserVar[level] // 5 ``` diff --git a/content/docs/Guide/7.array.mdx b/content/docs/Guide/7.array.mdx index 5c934ff9..d0cd1ad3 100644 --- a/content/docs/Guide/7.array.mdx +++ b/content/docs/Guide/7.array.mdx @@ -12,7 +12,7 @@ Each element in an array has a unique index number that identifies its position. ## Example -```php +```cc $arrayCreate[Apple Banana Kiwi; ] // List split by space // Retrieve items diff --git a/content/docs/Guide/syntax.mdx b/content/docs/Guide/syntax.mdx index 6d188587..29e1d7e7 100644 --- a/content/docs/Guide/syntax.mdx +++ b/content/docs/Guide/syntax.mdx @@ -1,6 +1,5 @@ --- title: "Syntax" -weight: 2 --- Learning about the syntax used by this bot is necessary to understand how to write commands. @@ -18,7 +17,7 @@ Anything in the code that isn't a function is considered text. ### Example -```php +```cc Hello $username, how are you? ``` @@ -26,7 +25,7 @@ Hello $username, how are you? - `$username` - Function - `, how are you?` - Text -```php +```cc $interactionReply[Hello there] ``` @@ -40,16 +39,14 @@ All arguments are kept inside of square brackets (`[HERE]`). Function names are case insensitive. - -All functions can be either executed by writing a command in the dashboard, or using the built in `!!exec` command. - + All functions can be either executed by writing a command in the dashboard, or using the built in `!!exec` command. ### Example Function case insensitivity -```php +```cc $math[1+1] = $mAtH[1+1] = $MATH[1+1] ``` @@ -64,7 +61,7 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] Function doesn't have to be closed at the same line where it was opened: -```php +```cc $title[Math question] $description[What is 2^11? Click to reveal: ||$math[2^11]||] @@ -96,7 +93,7 @@ Functions performs one of these three actions: Some functions require multiple arguments. Arguments can also be required or optional. -```php +```cc $msg[Channel ID;Message ID;Option;Additional 1;Additional 2] ``` diff --git a/content/docs/Other/curl.mdx b/content/docs/Other/curl.mdx index 6ea6a828..c050dc65 100644 --- a/content/docs/Other/curl.mdx +++ b/content/docs/Other/curl.mdx @@ -16,7 +16,7 @@ Instead of using parameter arrays like `$randomText[one;two;three]`, curl argume Let's say you want to create a text channel. Using traditional parameters, you might need to include several empty values for optional settings. With curl arguments, it's much simpler: -```php +```cc $createChannel[ {name=channelName} {type=text} diff --git a/content/docs/Other/syntax.mdx b/content/docs/Other/syntax.mdx index 17b72681..679ae5c2 100644 --- a/content/docs/Other/syntax.mdx +++ b/content/docs/Other/syntax.mdx @@ -18,7 +18,7 @@ Anything in the code that isn't a function is considered text. ### Example -```php +```cc Hello $username, how are you? ``` @@ -26,7 +26,7 @@ Hello $username, how are you? - `$username` - Function - `, how are you?` - Text -```php +```cc $interactionReply[Hello there] ``` @@ -49,7 +49,7 @@ All functions can be either executed by writing a command in the dashboard, or u Function case insensitivity -```php +```cc $math[1+1] = $mAtH[1+1] = $MATH[1+1] ``` @@ -64,7 +64,7 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] Function doesn't have to be closed at the same line where it was opened: -```php +```cc $title[Math question] $description[What is 2^11? Click to reveal: ||$math[2^11]||] @@ -96,7 +96,7 @@ Functions performs one of these three actions: Some functions require multiple arguments. Arguments can also be required or optional. -```php +```cc $msg[Channel ID;Message ID;Option;Additional 1;Additional 2] ``` diff --git a/content/docs/Other/useful.mdx b/content/docs/Other/useful.mdx index 7c6ebb41..d10eb65a 100644 --- a/content/docs/Other/useful.mdx +++ b/content/docs/Other/useful.mdx @@ -45,7 +45,7 @@ Now that you understand the basic components, you need to choose a trigger. A tr | Trigger Type | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ | -| [Word](/Trigger/word) | Executes when a user sends a message containing a specific word or phrase. | +| [On User Message](/Trigger/word_new) | Executes when a user sends a message containing a specific word or phrase. | | [On Join/Leave](/Trigger/joinorleave) | Executes when a user joins or leaves your server. | | [On Reaction](/Trigger/reaction) | Executes when a user reacts to a message. | | [Voice](/Trigger/voicecondecon) | Executes when a user connects to or disconnects from a voice channel. | diff --git a/content/docs/Trigger/1.triggers.mdx b/content/docs/Trigger/1.triggers.mdx index 48a55965..bd4e1207 100644 --- a/content/docs/Trigger/1.triggers.mdx +++ b/content/docs/Trigger/1.triggers.mdx @@ -4,9 +4,9 @@ title: "Triggers showcase" Here's a quick preview of all available triggers: -## Word +## On User Message -[Triggers on specific words/patterns](/Trigger/word) +[Triggers on specific words/patterns](/Trigger/word_new) ![Word](https://i.imgur.com/zQtDgDM.png) ## Reaction diff --git a/content/docs/Trigger/app_cmd_message.mdx b/content/docs/Trigger/app_cmd_message.mdx index 3c717a4f..4e8e2b8d 100644 --- a/content/docs/Trigger/app_cmd_message.mdx +++ b/content/docs/Trigger/app_cmd_message.mdx @@ -40,7 +40,7 @@ You can then use the selected message's ID to retrieve information about the mes For example: -```php +```cc $interactionReply[Message reported successfully!] ``` @@ -50,7 +50,7 @@ You can also use `$msg` to get information about the selected message, such as i For example: -```php +```cc $interactionReply[Message by <@$msg[$eventTargetID;author]> has been reported!] ``` diff --git a/content/docs/Trigger/app_cmd_user.mdx b/content/docs/Trigger/app_cmd_user.mdx index 92e5986e..ab8c9739 100644 --- a/content/docs/Trigger/app_cmd_user.mdx +++ b/content/docs/Trigger/app_cmd_user.mdx @@ -40,7 +40,7 @@ You can then use the target user's ID to perform actions on them. For example: -```php +```cc $giveRoles[$eventTargetID;Supporter] $interactionReply[Promoted $mention[$eventTargetID] to Supporter!] ``` diff --git a/content/docs/Trigger/joinorleave.mdx b/content/docs/Trigger/joinorleave.mdx index f4013399..5dedc4f5 100644 --- a/content/docs/Trigger/joinorleave.mdx +++ b/content/docs/Trigger/joinorleave.mdx @@ -18,7 +18,7 @@ Select when to trigger, and choose a channel where this command will be executed Enter code: -```php +```cc Hello $displayName! Welcome to our server. ``` diff --git a/content/docs/Trigger/roleaddremove.mdx b/content/docs/Trigger/roleaddremove.mdx index 1c90a6e8..d2110063 100644 --- a/content/docs/Trigger/roleaddremove.mdx +++ b/content/docs/Trigger/roleaddremove.mdx @@ -12,7 +12,7 @@ Let's make a command, which will log everytime someone receives a Role1 ![](https://i.imgur.com/MevZIW3.png) 2. Set the code to: -```php +```cc $username received $roleName role ``` ![](https://i.imgur.com/WezSkrK.png) diff --git a/content/docs/Trigger/slash.mdx b/content/docs/Trigger/slash.mdx index 873c399a..c8f69e51 100644 --- a/content/docs/Trigger/slash.mdx +++ b/content/docs/Trigger/slash.mdx @@ -61,7 +61,7 @@ In this example we will create an `/avatar` command, that shows the user's avata ## Code Explanation ### Retrieving the option from user When a user uses the command like in Step 10, we can retrieve the option through the `$getOption` function: -```php +```cc $getOption[option name] ``` In our example `option name` is `user` from step 6\ @@ -73,7 +73,7 @@ then the user id will be stored in a temporary variable named`user_id` using `$l ### Sending Message Next, to send a message with [$interactionReply[message]](/Interaction/interactionReply)\ Here we will send an embed with a title and image using \{title} and \{image} [Curl Message Format](/CodeReferences/ref.message_curl_format): -```php +```cc $interactionReply[ {title:Embed Title} {image:Embed Image} @@ -87,7 +87,7 @@ Avatar of $userTag[$user_id] ``` 2. In Image to retrieve the user avatar, we will use [$userAvatar[user id]](/Member/userAvatar): -```php +```cc $userAvatar[$user_id] ``` diff --git a/content/docs/Trigger/upvote.mdx b/content/docs/Trigger/upvote.mdx index 3f665385..45b78a86 100644 --- a/content/docs/Trigger/upvote.mdx +++ b/content/docs/Trigger/upvote.mdx @@ -20,7 +20,7 @@ Copy the link displayed to use it in other commands. You can then reward the vot For example: -```php +```cc $giveRoles[$userID;Supporter] Thanks for supporting the server, <@$userID>! ❤️ ``` diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index 6eeb04a5..2d133ba2 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -22,7 +22,7 @@ pong! ## Using parameters A crucial feature of the word type are parameters. They are data provided when executing the command. -Let's say we had a `?hug` command, which users can use to hug other users. +Let's say we had a `?hug` command, which users can use to hug other users. In that case we would want users to select a user by mentioning him. #### Usage @@ -93,7 +93,7 @@ Let's say we want our [Hug command](#using-parameters) to trigger on: ?hug, ?abr #### How can we do that? We can do that with the following trigger: -```php +```cc ?hug|?abrazo|?étreinte ``` diff --git a/content/docs/Tutorials/2.staff-app.mdx b/content/docs/Tutorials/2.staff-app.mdx index 6196e234..7e760824 100644 --- a/content/docs/Tutorials/2.staff-app.mdx +++ b/content/docs/Tutorials/2.staff-app.mdx @@ -11,7 +11,7 @@ Here's how it's going to look like: Let's send a button users will use to open up the form. The button will be `blurple`, have a label `Apply` and an id `staff-app`. -```php +```cc !!exec $button[Apply;blurple;staff-app] ``` @@ -30,7 +30,7 @@ The button is meant to send a modal upon clicking, so let's use **$modal** to de * Reason * Pronouns -```php +```cc $modal[ {title=Staff application} {id=staff-app} @@ -76,7 +76,7 @@ Once we catch a submitted form, we need to do a few things: 2. Send a report to a different channel 3. Confirm the submission with an interaction reply -```php +```cc // Save answers to different variables $let[position;$modalAnswer[1]] diff --git a/content/docs/Tutorials/3.report.mdx b/content/docs/Tutorials/3.report.mdx index 9431d150..34fb5d8e 100644 --- a/content/docs/Tutorials/3.report.mdx +++ b/content/docs/Tutorials/3.report.mdx @@ -16,7 +16,7 @@ Let's begin by loading the ID of provided user. For that we will use a combinati * `$findMember` - to get the id regardless of input format and save them in a `$let` variable. -```php +```cc // $message[1] returns the first parameter // $findMember[...;no] returns user id or undefined $let[reportedUser;$findMember[$message[1];no]] @@ -24,7 +24,7 @@ $let[reportedUser;$findMember[$message[1];no]] ## 3. Loading reason Users should be able to describe what behavior they want to report, let's save the rest of parameters to a new variable. -```php +```cc $let[reason;$message[2+]] ``` @@ -34,7 +34,7 @@ As we have all data stored and ready, we will procceed to send the report. For t * `$channelID` - to change channel name to ID * `$channelSendMessage` - to send a message to a different channel -```php +```cc $let[reportsChannel;$channelID[reports]] $channelSendMessage[$reportsChannel;$mention has reported <@!$reportedUser>, for: $reason. ] @@ -42,7 +42,7 @@ $channelSendMessage[$reportsChannel;$mention has reported <@!$reportedUser>, for ## 5. Confirmation message So far, the command is sending a correct message to a different channel. Let's also send a message to the reporting user. -```php +```cc $mention you report has been submitted, thank you for keeping our community safe. ``` diff --git a/content/docs/Tutorials/4.collect.mdx b/content/docs/Tutorials/4.collect.mdx index 52ecd90b..0c22b777 100644 --- a/content/docs/Tutorials/4.collect.mdx +++ b/content/docs/Tutorials/4.collect.mdx @@ -35,7 +35,7 @@ The reward that users will receive is 100$ with the [template economy](/Guide/4. Let's get a user's balance and store it in a temporary variable called `bal`: -```php +```cc $let[bal;$getUserVar[money]] ``` @@ -43,7 +43,7 @@ $let[bal;$getUserVar[money]] Next, we'll add 100$ to the balance: -```php +```cc $let[bal;$math[$bal+100]] ``` @@ -51,7 +51,7 @@ $let[bal;$math[$bal+100]] Now that we have the new balance, let's overwrite the current balance with the new one: -```php +```cc $setUserVar[money;$bal] ``` @@ -61,7 +61,7 @@ At this point, the command will successfully increase the balance, but we want t In order to prevent users from collecting multiple rewards, we need to save information about whether each user has already used the command. -```php +```cc $setUserVar[hasCollected;true] ``` @@ -69,7 +69,7 @@ $setUserVar[hasCollected;true] Now that we have a variable called `hasCollected` that returns whether the user has already collected the reward, let's use it to prevent users from collecting the same reward multiple times by putting this code at the beginning of the command: -```php +```cc $onlyIf[$getUserVar[hasCollected]!=true;You cannot collect the same reward more than once!] ``` diff --git a/content/docs/Tutorials/5.confession.mdx b/content/docs/Tutorials/5.confession.mdx index ae0ef0b2..88d1b740 100644 --- a/content/docs/Tutorials/5.confession.mdx +++ b/content/docs/Tutorials/5.confession.mdx @@ -24,7 +24,7 @@ Next, Let's write the code that will respond when user runs the slash command: * To receive user input of confession, we can use $getOption[option name], where `option name` is same option name we used while building the slash command which is `message` > For example: $getOption[message] * So we would combine both and code would look like: -```php +```cc $interactionReply[Your confession is $getOption[message] @@ -48,7 +48,7 @@ Curl is a way for you to build an embed in the place of the `message` input, for > You can see the full list [here](/CodeReferences/ref.message_curl_format) So, We will modify the message content of `$interactionReply` and use the curl message format, code would look like: -```php +```cc $interactionReply[ {title:$username's confession} diff --git a/content/docs/Tutorials/5.poll.mdx b/content/docs/Tutorials/5.poll.mdx index 0f177e8f..d934161b 100644 --- a/content/docs/Tutorials/5.poll.mdx +++ b/content/docs/Tutorials/5.poll.mdx @@ -43,7 +43,7 @@ we will use [poll curl data](/CodeReferences/ref.poll_data) like: ``` In our case, we will send a poll about countries code: -```php +```cc $sendMessage[ {poll: {question=What is the biggest country in the world?} diff --git a/content/docs/index.mdx b/content/docs/index.mdx index abab6cdd..992fdfd4 100644 --- a/content/docs/index.mdx +++ b/content/docs/index.mdx @@ -3,9 +3,7 @@ title: "Getting Started" --- - It is highly recommended not to skip this guide, or to read only parts of it. - ## What is Custom Command Bot? diff --git a/lib/cclang.ts b/lib/cclang.ts new file mode 100644 index 00000000..35ba92d1 --- /dev/null +++ b/lib/cclang.ts @@ -0,0 +1,148 @@ +import type { LanguageRegistration } from "shiki"; +import githubDark from "shiki/themes/github-dark.mjs"; +import githubLight from "shiki/themes/github-light.mjs"; + +export const cclang: LanguageRegistration = { + name: "cc", + scopeName: "source.cclang", + repository: {}, + patterns: [ + { + name: "keyword.function.cclang", + match: "\\$[\\w\\d_]+", + }, + { + name: "comment.line.double-slash", + match: "//.*$", + }, + { + name: "comment.block", + begin: "/\\*", + end: "\\*/", + }, + { + name: "keyword.important.cclang", + match: "[\\[\\];]", + }, + { + name: "keyword.digits.cclang", + match: "(?]=?|!==?|===?)", + }, + { + name: "keyword.keys.cclang", + match: "(?<={[\\w\\d_]*)[:=]", + }, + { + name: "keyword.tags.cclang", + match: "#[A-Z]{2,}#", + }, + ], +}; + +export const cc_dark = { + ...githubDark, + name: "cc-dark", + tokenColors: [ + { + scope: ["keyword.function.cclang"], + settings: { + foreground: "rgb(133, 255, 255)", + }, + }, + { + scope: ["keyword.important.cclang"], + settings: { + foreground: "rgb(255, 66, 129)", + }, + }, + { + scope: ["keyword.digits.cclang"], + settings: { + foreground: "rgb(78, 190, 255)", + }, + }, + { + scope: ["keyword.curl.cclang"], + settings: { + foreground: "rgb(214, 133, 255)", + }, + }, + { + scope: ["keyword.condition.cclang"], + settings: { + foreground: "rgb(255, 165, 0)", + }, + }, + { + scope: ["keyword.keys.cclang"], + settings: { + foreground: "rgb(240, 128, 128)", + }, + }, + { + scope: ["keyword.tags.cclang"], + settings: { + foreground: "rgb(174, 220, 174)", + }, + }, + ...(githubDark.tokenColors ?? []), + ], +}; + +export const cc_light = { + ...githubLight, + name: "cc-light", + tokenColors: [ + { + scope: ["keyword.function.cclang"], + settings: { + foreground: "rgb(53, 175, 255)", + }, + }, + { + scope: ["keyword.important.cclang"], + settings: { + foreground: "rgb(255, 66, 129)", + }, + }, + { + scope: ["keyword.digits.cclang"], + settings: { + foreground: "rgb(78, 190, 255)", + }, + }, + { + scope: ["keyword.curl.cclang"], + settings: { + foreground: "rgb(194, 113, 225)", + }, + }, + { + scope: ["keyword.condition.cclang"], + settings: { + foreground: "rgb(255, 165, 0)", + }, + }, + { + scope: ["keyword.keys.cclang"], + settings: { + foreground: "rgb(240, 128, 128)", + }, + }, + { + scope: ["keyword.tags.cclang"], + settings: { + foreground: "rgb(174, 220, 174)", + }, + }, + ...(githubLight.tokenColors ?? []), + ], +}; diff --git a/next.config.mjs b/next.config.mjs index 85a1e558..5af3955b 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,13 +1,16 @@ -import { createMDX } from 'fumadocs-mdx/next'; +import { createMDX } from "fumadocs-mdx/next"; +import os from "node:os"; const withMDX = createMDX(); -/** @type {import('next').NextConfig} */ +/** @type {import("next").NextConfig} */ const config = { - output: 'export', - reactStrictMode: true, - // static export has no image optimizer; nginx serves the files as-is - images: { unoptimized: true }, + output: "export", + reactStrictMode: true, + images: { unoptimized: true }, + experimental: { + cpus: os.cpus().length, + }, }; export default withMDX(config); diff --git a/package.json b/package.json index 3f9a9b2c..ccbc2c3c 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,14 @@ "wpack:build": "next build --webpack && node scripts/build-docs-pages.mjs" }, "dependencies": { + "@base-ui/react": "^1.6.0", + "@fuma-translate/react": "^1.0.2", "@fumadocs/base-ui": "^16.14.0", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-slot": "^1.3.3", "@skyra/discord-components-core": "^4.0.2", "@skyra/discord-components-react": "^4.0.2", + "class-variance-authority": "^0.7.1", "cnfast": "^0.1.0", "fumadocs-core": "16.14.0", "fumadocs-mdx": "15.2.1", @@ -24,6 +29,7 @@ "next-themes": "^0.4.6", "react": "^19.2.8", "react-dom": "^19.2.8", + "scroll-into-view-if-needed": "^3.1.0", "shiki": "^4.4.1" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 73e1ef9a..03419554 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,15 +8,30 @@ importers: .: dependencies: + '@base-ui/react': + specifier: ^1.6.0 + version: 1.6.0(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@fuma-translate/react': + specifier: ^1.0.2 + version: 1.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@fumadocs/base-ui': specifier: ^16.14.0 version: 16.14.0(@types/mdx@2.0.14)(@types/react@19.2.18)(fumadocs-core@16.14.0(@mdx-js/mdx@3.1.1(supports-color@7.2.0))(@types/estree-jsx@1.0.5)(@types/hast@3.0.5)(@types/mdast@4.0.4)(@types/react@19.2.18)(lucide-react@1.28.0(react@19.2.8))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(supports-color@7.2.0)(zod@4.4.3))(next@16.2.12(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(tailwindcss@4.3.3) + '@radix-ui/react-icons': + specifier: ^1.3.2 + version: 1.3.2(react@19.2.8) + '@radix-ui/react-slot': + specifier: ^1.3.3 + version: 1.3.3(@types/react@19.2.18)(react@19.2.8) '@skyra/discord-components-core': specifier: ^4.0.2 version: 4.0.2 '@skyra/discord-components-react': specifier: ^4.0.2 version: 4.0.2(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 cnfast: specifier: ^0.1.0 version: 0.1.0 @@ -44,6 +59,9 @@ importers: react-dom: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) + scroll-into-view-if-needed: + specifier: ^3.1.0 + version: 3.1.0 shiki: specifier: ^4.4.1 version: 4.4.1 @@ -575,6 +593,29 @@ packages: cpu: [x64] os: [win32] + '@radix-ui/react-compose-refs@1.1.5': + resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-slot@1.3.3': + resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@shikijs/core@4.4.1': resolution: {integrity: sha512-VeR2CY6Nn9/WbisoYLOQZ7HZOnwTrpBuOw4wExjqLnBCi62BNWynBUO6K2uPIASPFJwAv7cX1fUu+LrPlSstcw==} engines: {node: '>=20'} @@ -2513,6 +2554,23 @@ snapshots: '@next/swc-win32-x64-msvc@16.2.12': optional: true + '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.18)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + + '@radix-ui/react-icons@1.3.2(react@19.2.8)': + dependencies: + react: 19.2.8 + + '@radix-ui/react-slot@1.3.3(@types/react@19.2.18)(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.18)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.18 + '@shikijs/core@4.4.1': dependencies: '@shikijs/primitive': 4.4.1 diff --git a/source.config.ts b/source.config.ts index 15b0e591..eaf7ea60 100644 --- a/source.config.ts +++ b/source.config.ts @@ -4,6 +4,7 @@ import type { ShikiTransformer } from "shiki"; import { remarkCooldowns } from "./lib/remark/cooldowns"; import { remarkFunctionLinks } from "./lib/remark/function-links"; import { remarkCachedImages } from "./lib/remark/images"; +import { cclang, cc_dark, cc_light } from "./lib/cclang"; const transformerLineNumbers: ShikiTransformer = { name: "shiki-transformer-line-numbers", @@ -28,11 +29,17 @@ export default defineConfig({ rehypeCodeOptions: { ...rehypeCodeDefaultOptions, - themes: { light: "github-light", dark: "github-dark" }, + themes: { + light: cc_light, + dark: cc_dark, + }, transformers: [ ...(rehypeCodeDefaultOptions.transformers ?? []), transformerLineNumbers, ], + langs: [ + cclang, + ], }, }, }); From 5d58ed354e6f197bd28890699f3c24fe70b8490e Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 22:17:16 +0200 Subject: [PATCH 17/62] new utility wrapper for discord message --- components/discord.tsx | 144 +++++++++++++++++++++++++++++++++++------ docker-compose.yml | 1 + next.config.mjs | 2 +- 3 files changed, 126 insertions(+), 21 deletions(-) diff --git a/components/discord.tsx b/components/discord.tsx index 8baf02bd..eb9d645a 100644 --- a/components/discord.tsx +++ b/components/discord.tsx @@ -1,7 +1,9 @@ 'use client'; import type { ComponentProps, ElementType, ReactNode } from 'react'; +import React from 'react'; import { useTheme } from 'next-themes'; + import { DiscordActionRow, DiscordButton, @@ -21,34 +23,95 @@ import { * Discord message mock-ups. * * The old site used `@discord-message-components/vue`, which has no maintained - * React counterpart (its React twin was last published in 2022). `@skyra/*` is - * the actively maintained successor and covers every component the docs use, - * with one exception: `DiscordMarkdown`, shimmed below. - * - * These are Lit web components, so they render on the client only. + * React counterpart. Skyra is the maintained successor. */ -/** - * The old site kept these blocks in step with the site theme via CSS overrides. - * Skyra renders into a shadow root, so external CSS can't reach it — the - * supported route is the per-component `lightTheme` prop. - */ -function withSiteTheme(Component: T) { - return function Themed(props: ComponentProps & { lightTheme?: boolean }) { +function withSiteTheme(Component: any) { + return function Themed( + props: ComponentProps & { lightTheme?: boolean } + ) { const { resolvedTheme } = useTheme(); const Rendered = Component as ElementType; - return ; + + return ( + + ); }; } export const DiscordMessages = withSiteTheme(RawMessages); export const DiscordMessage = withSiteTheme(RawMessage); -export const DiscordEmbed = withSiteTheme(RawEmbed); + +/** + * Legacy DiscordEmbed. + * + * Existing syntax continues to work: + * + * + * + * You are awesome + * + * + * + * New simplified syntax also works: + * + * + * You are awesome + * + */ +type DiscordEmbedProps = Omit< + ComponentProps, + 'children' +> & { + children?: ReactNode; +}; + +export function DiscordEmbed({ + children, + ...props +}: DiscordEmbedProps) { + const { resolvedTheme } = useTheme(); + + const child = Array.isArray(children) && children.length === 1 + ? children[0] + : children; + + const isParagraph = + React.isValidElement(child) && + child.type === 'p'; + + const description = isParagraph + ? child.props.children + : child; + + const isPlainContent = + typeof description === 'string' || + typeof description === 'number'; + + return ( + + {isPlainContent || isParagraph ? ( + + {description} + + ) : ( + children + )} + + ); +} + export const DiscordEmbedField = withSiteTheme(RawEmbedField); export const DiscordMention = withSiteTheme(RawMention); export const DiscordReaction = withSiteTheme(RawReaction); -// these have no `lightTheme` of their own — they inherit from their parent +// These have no `lightTheme` of their own — they inherit from their parent. export { DiscordActionRow, DiscordButton, @@ -59,10 +122,51 @@ export { }; /** - * `@skyra/*` dropped the `DiscordMarkdown` wrapper — message bodies handle - * their own formatting now. Kept as a passthrough so existing content renders - * unchanged. + * Simplified Discord message components. + * + */ + +type SimpleMessageProps = { + children?: ReactNode; +}; + +export function DiscordMessageUser({ + children, +}: SimpleMessageProps) { + const lightTheme = useTheme().resolvedTheme === 'light'; + return ( + + {children} + + ); +} + +export function DiscordMessageBot({ + children, +}: SimpleMessageProps) { + const lightTheme = useTheme().resolvedTheme === 'light'; + + return ( + + {children} + + + ); +} + +/** + * `DiscordMarkdown` compatibility wrapper. */ -export function DiscordMarkdown({ children }: { children?: ReactNode }) { - return {children}; +export function DiscordMarkdown({ + children, +}: { + children?: ReactNode; +}) { + return children; } diff --git a/docker-compose.yml b/docker-compose.yml index 35e3ac4a..771e2fea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,3 +12,4 @@ services: command: pnpm dev environment: - NODE_ENV=development + - USE_ALL_CPU=false diff --git a/next.config.mjs b/next.config.mjs index 5af3955b..aa0f2c72 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -9,7 +9,7 @@ const config = { reactStrictMode: true, images: { unoptimized: true }, experimental: { - cpus: os.cpus().length, + ...(process.env.USE_ALL_CPU == 'true'?{cpus: os.cpus().length}:{}) }, }; From d5e91b58b4d88afb59f908a2662b8656fcfb8fee Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 22:38:16 +0200 Subject: [PATCH 18/62] use cc lang --- content/docs/(functions)/Bot/botTyping.mdx | 2 +- .../docs/(functions)/Bot/executionTime.mdx | 2 +- content/docs/(functions)/Bot/getBotInvite.mdx | 2 +- content/docs/(functions)/Bot/ram.mdx | 2 +- .../(functions)/Channel/categoryChannels.mdx | 4 +-- .../(functions)/Channel/channelExists.mdx | 2 +- .../docs/(functions)/Channel/channelID.mdx | 4 +-- .../Channel/getChannelSlowmode.mdx | 4 +-- content/docs/(functions)/Date/humanizeMS.mdx | 6 ++--- .../docs/(functions)/Events/getEventInfo.mdx | 2 +- .../docs/(functions)/Events/guildEvents.mdx | 2 +- .../docs/(functions)/Image/imageCreate.mdx | 2 +- .../docs/(functions)/Image/imageDrawBack.mdx | 2 +- content/docs/(functions)/Image/imageFill.mdx | 4 +-- content/docs/(functions)/Message/DM.mdx | 2 +- .../docs/(functions)/Message/messageID.mdx | 2 +- .../(functions)/Message/messagePublish.mdx | 6 ++--- .../(functions)/Random/randomTextBiased.mdx | 2 +- .../docs/(functions)/Server/membersCount.mdx | 2 +- .../(functions)/Text/Object/ObjectSet.mdx | 2 +- content/docs/Changelogs/v1.4.4.mdx | 4 +-- .../docs/CodeReferences/ref.channel_types.mdx | 2 +- .../docs/CodeReferences/ref.expression.mdx | 2 +- content/docs/Other/curl.mdx | 2 +- content/docs/Trigger/slash.mdx | 8 +++--- content/docs/Trigger/word_new.mdx | 26 +++++++++---------- 26 files changed, 50 insertions(+), 50 deletions(-) diff --git a/content/docs/(functions)/Bot/botTyping.mdx b/content/docs/(functions)/Bot/botTyping.mdx index f2a98eff..4e0474d5 100644 --- a/content/docs/(functions)/Bot/botTyping.mdx +++ b/content/docs/(functions)/Bot/botTyping.mdx @@ -10,7 +10,7 @@ Simulates the bot typing in the current channel. This will display the "Bot is t To trigger the bot typing indicator, simply use the `$botTyping` function. -```markdown +```cc $botTyping ``` diff --git a/content/docs/(functions)/Bot/executionTime.mdx b/content/docs/(functions)/Bot/executionTime.mdx index 2e2647d0..d8fa6cce 100644 --- a/content/docs/(functions)/Bot/executionTime.mdx +++ b/content/docs/(functions)/Bot/executionTime.mdx @@ -16,7 +16,7 @@ $executionTime Imagine your bot executes some complex calculations or retrieves data from an external source. You can use `$executionTime` to gauge how long these operations take. -``` +```cc Some complex command code $executionTime ``` diff --git a/content/docs/(functions)/Bot/getBotInvite.mdx b/content/docs/(functions)/Bot/getBotInvite.mdx index cc7b6a3b..95eeab21 100644 --- a/content/docs/(functions)/Bot/getBotInvite.mdx +++ b/content/docs/(functions)/Bot/getBotInvite.mdx @@ -16,7 +16,7 @@ $getBotInvite[permission;permission;permission...] ## Example -``` +```cc !!exec $getBotInvite[admin] ``` diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx index 66971d7b..2a3514b0 100644 --- a/content/docs/(functions)/Bot/ram.mdx +++ b/content/docs/(functions)/Bot/ram.mdx @@ -10,7 +10,7 @@ Displays the amount of RAM (Random Access Memory) currently being used by the bo **Example:** -``` +```cc !!exec $ram MB ``` diff --git a/content/docs/(functions)/Channel/categoryChannels.mdx b/content/docs/(functions)/Channel/categoryChannels.mdx index 13ff82b4..89e2d8cd 100644 --- a/content/docs/(functions)/Channel/categoryChannels.mdx +++ b/content/docs/(functions)/Channel/categoryChannels.mdx @@ -6,7 +6,7 @@ This function retrieves information about channels within a specified category. ## Usage -```markdown +```cc $categoryChannels[Category ID;Info type (name/id/mention);Separator (optional, default is ",")] ``` @@ -21,7 +21,7 @@ $categoryChannels[Category ID;Info type (name/id/mention);Separator (optional, d ## Example -```markdown +```cc !!exec $categoryChannels[1004738497191628860;name;, ] ``` diff --git a/content/docs/(functions)/Channel/channelExists.mdx b/content/docs/(functions)/Channel/channelExists.mdx index 1f38520f..03d37260 100644 --- a/content/docs/(functions)/Channel/channelExists.mdx +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -16,7 +16,7 @@ Checks if a channel with the provided ID exists. Returns `true` if the channel e **Example:** -``` +```cc !!exec $channelExists[889102524727058463] ``` diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index 527de10c..98fb94d6 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -13,7 +13,7 @@ Returns the ID of the channel where the command is executed. You can also use i **Example:** -``` +```cc !!exec $channelID ``` @@ -29,7 +29,7 @@ Returns the ID of the channel where the command is executed. You can also use i Let's say you have a channel named `#general`. You can get its ID like this: -``` +```cc !!exec $channelID[general] ``` diff --git a/content/docs/(functions)/Channel/getChannelSlowmode.mdx b/content/docs/(functions)/Channel/getChannelSlowmode.mdx index 21f6cef9..dc837cfc 100644 --- a/content/docs/(functions)/Channel/getChannelSlowmode.mdx +++ b/content/docs/(functions)/Channel/getChannelSlowmode.mdx @@ -18,7 +18,7 @@ $getChannelSlowmode or $getChannelSlowmode[channelID] * **Check the slow mode of the current channel:** - ``` + ```cc $getChannelSlowmode ``` @@ -26,7 +26,7 @@ $getChannelSlowmode or $getChannelSlowmode[channelID] * **Check the slow mode of a specific channel:** - ``` + ```cc $getChannelSlowmode[123456789012345678] ``` diff --git a/content/docs/(functions)/Date/humanizeMS.mdx b/content/docs/(functions)/Date/humanizeMS.mdx index 7f78b160..dac78b6f 100644 --- a/content/docs/(functions)/Date/humanizeMS.mdx +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -12,7 +12,7 @@ Converts milliseconds into a human-readable duration string. This function is us **Example:** -``` +```cc !!exec $humanizeMS[$timeStamp;4;,] ``` @@ -30,7 +30,7 @@ In this example: **Another Example (without limit or separator):** -``` +```cc !!exec $humanizeMS[86400000] ``` @@ -40,7 +40,7 @@ In this example: **Another Example (with a different separator):** -``` +```cc !!exec $humanizeMS[31536000000;2; and ] ``` diff --git a/content/docs/(functions)/Events/getEventInfo.mdx b/content/docs/(functions)/Events/getEventInfo.mdx index 974ccf22..a2c2f27e 100644 --- a/content/docs/(functions)/Events/getEventInfo.mdx +++ b/content/docs/(functions)/Events/getEventInfo.mdx @@ -37,7 +37,7 @@ $getEventInfo[event id;info type] ## Example -``` +```cc !!exec $getEventinfo[123456789123456789;name] ``` diff --git a/content/docs/(functions)/Events/guildEvents.mdx b/content/docs/(functions)/Events/guildEvents.mdx index 65b44173..2dd4e7d0 100644 --- a/content/docs/(functions)/Events/guildEvents.mdx +++ b/content/docs/(functions)/Events/guildEvents.mdx @@ -32,7 +32,7 @@ $guildEvents[info type;filter;separator] This example retrieves the names of all active events in the server, separated by a forward slash `/`. -``` +```cc !!exec $guildEvents[name;active;/] ``` diff --git a/content/docs/(functions)/Image/imageCreate.mdx b/content/docs/(functions)/Image/imageCreate.mdx index d41a66fa..6a7e38c4 100644 --- a/content/docs/(functions)/Image/imageCreate.mdx +++ b/content/docs/(functions)/Image/imageCreate.mdx @@ -23,7 +23,7 @@ This function creates a blank image and stores it for further processing with ot This example creates a 300x300 pixel image, fills it with the color red, and then displays the image. -``` +```cc !!exec $imageCreate[300;300] $imageFill[red] $image[$imageOutput] diff --git a/content/docs/(functions)/Image/imageDrawBack.mdx b/content/docs/(functions)/Image/imageDrawBack.mdx index 5df6237b..306d9497 100644 --- a/content/docs/(functions)/Image/imageDrawBack.mdx +++ b/content/docs/(functions)/Image/imageDrawBack.mdx @@ -31,7 +31,7 @@ For a more detailed explanation of Width and Height, refer to this resource: [Wi This example creates an image, loads a user's avatar, fills the background with gray, adds a transparent rectangle, and then draws the avatar behind it. -``` +```cc !!exec $imageCreate[300;300] $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] $imageFill[gray] diff --git a/content/docs/(functions)/Image/imageFill.mdx b/content/docs/(functions)/Image/imageFill.mdx index 189f4374..e0f894d0 100644 --- a/content/docs/(functions)/Image/imageFill.mdx +++ b/content/docs/(functions)/Image/imageFill.mdx @@ -23,7 +23,7 @@ $imageFill[color;x;y;width;height;opacity] ### Example 1: Fill the entire image with gray. -``` +```cc !!exec $imageCreate[300;300] $imageFill[gray] $image[$imageOutput] @@ -41,7 +41,7 @@ $image[$imageOutput] ### Example 2: Fill a 50x50 rectangle at (100, 100) with red. -``` +```cc !!exec $imageCreate[300;300] $imageFill[gray] $imageFill[red;100;100;50;50] diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/DM.mdx index 2bf72b1d..20de7b24 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/DM.mdx @@ -19,7 +19,7 @@ Sends the output of your code directly to the author via Discord Direct Message **Example:** **Command Input:** -``` +```cc !!exec $DM[$authorID] This is a fantastic message! ``` diff --git a/content/docs/(functions)/Message/messageID.mdx b/content/docs/(functions)/Message/messageID.mdx index 411b03ba..b645884b 100644 --- a/content/docs/(functions)/Message/messageID.mdx +++ b/content/docs/(functions)/Message/messageID.mdx @@ -10,7 +10,7 @@ Retrieves the ID of the message that triggered the command. **Example:** -``` +```cc !!exec $messageID ``` diff --git a/content/docs/(functions)/Message/messagePublish.mdx b/content/docs/(functions)/Message/messagePublish.mdx index e097dd1c..98c85438 100644 --- a/content/docs/(functions)/Message/messagePublish.mdx +++ b/content/docs/(functions)/Message/messagePublish.mdx @@ -17,17 +17,17 @@ You can use `$messagePublish` in three ways: ##### Examples: * To publish the message triggering the command: - ``` + ```cc $messagePublish ``` * To publish a message with the ID `123456789012345678` from the current channel: - ``` + ```cc $messagePublish[123456789012345678] ``` * To publish a message with the ID `123456789012345678` from the channel with the ID `987654321098765432`: - ``` + ```cc $messagePublish[987654321098765432;123456789012345678] ``` diff --git a/content/docs/(functions)/Random/randomTextBiased.mdx b/content/docs/(functions)/Random/randomTextBiased.mdx index 325ce6f9..adbaa8d3 100644 --- a/content/docs/(functions)/Random/randomTextBiased.mdx +++ b/content/docs/(functions)/Random/randomTextBiased.mdx @@ -30,7 +30,7 @@ This example demonstrates a reward box system where the rarity of the reward is **Command:** -``` +```cc !!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box ``` diff --git a/content/docs/(functions)/Server/membersCount.mdx b/content/docs/(functions)/Server/membersCount.mdx index da71573c..7dd493b4 100644 --- a/content/docs/(functions)/Server/membersCount.mdx +++ b/content/docs/(functions)/Server/membersCount.mdx @@ -6,7 +6,7 @@ Returns the amount of users in your server/guild! #### Usage: `$membersCount` -``` +```cc !!exec There are `$membersCount` members in the server! ``` diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index 0413a482..c57f546d 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -35,7 +35,7 @@ $objectSet[userdata;role;Moderator] -``` +```cc $objectCreate[{ "userdata":{ "age":0, "name":"undefined", diff --git a/content/docs/Changelogs/v1.4.4.mdx b/content/docs/Changelogs/v1.4.4.mdx index c0fdadf3..f9b6d493 100644 --- a/content/docs/Changelogs/v1.4.4.mdx +++ b/content/docs/Changelogs/v1.4.4.mdx @@ -345,7 +345,7 @@ A new font named `Minecraft` was added to the image builder, this font is useful Discord added V2 components that enhance the way embeds looks (Check the image). So added new curl that allow you to shape them when sending a new messsage, here is a example: -``` +```cc ?exec $sendMessage[ {container: @@ -898,7 +898,7 @@ auto, brazil, hongkong, india, japan, rotterdam, russia, singapore, southafrica, You can now use UTC+HH:MM or UTC-HH:MM format inside $timezone in case you want a custom timezone offset. ##### Example -``` +```cc Before: $hour $timezone[UTC+03:00] After: $hour diff --git a/content/docs/CodeReferences/ref.channel_types.mdx b/content/docs/CodeReferences/ref.channel_types.mdx index 3f7ec254..42495dae 100644 --- a/content/docs/CodeReferences/ref.channel_types.mdx +++ b/content/docs/CodeReferences/ref.channel_types.mdx @@ -32,7 +32,7 @@ We'll use the `$channelType` function inside a **public thread**. #### Code: -``` +```cc !!exec $channelType ``` diff --git a/content/docs/CodeReferences/ref.expression.mdx b/content/docs/CodeReferences/ref.expression.mdx index f3bb043d..f1496a55 100644 --- a/content/docs/CodeReferences/ref.expression.mdx +++ b/content/docs/CodeReferences/ref.expression.mdx @@ -79,7 +79,7 @@ For advanced scenarios, you may need to control the order in which expressions a ### Example 1: Complex AND/OR Grouping -``` +```cc ($username==Mido&&$country==Egypt)||($username==Rake&&$country==Germany) ``` diff --git a/content/docs/Other/curl.mdx b/content/docs/Other/curl.mdx index c050dc65..3267b20d 100644 --- a/content/docs/Other/curl.mdx +++ b/content/docs/Other/curl.mdx @@ -30,7 +30,7 @@ This code clearly defines the channel's name, type, and topic without requiring Not all functions support curl arguments yet. To find out if a specific function supports them, use the `!!func` command: -``` +```cc !!func function name ``` diff --git a/content/docs/Trigger/slash.mdx b/content/docs/Trigger/slash.mdx index c8f69e51..6733ee22 100644 --- a/content/docs/Trigger/slash.mdx +++ b/content/docs/Trigger/slash.mdx @@ -39,7 +39,7 @@ In this example we will create an `/avatar` command, that shows the user's avata -``` +```cc $let[user_id;$getOption[user]] $interactionReply[ {title:Avatar of $usertag[$user_id]} @@ -66,7 +66,7 @@ $getOption[option name] ``` In our example `option name` is `user` from step 6\ then the user id will be stored in a temporary variable named`user_id` using `$let`, this way we can recall it later in the code through `$user_id`: -``` +```cc $let[user_id;$getOption[user]] ``` @@ -82,7 +82,7 @@ $interactionReply[ 1. In title we want to set it to: Avatar of Mido#1234\ To get the username `Mido#1234` we will use [$userTag[user id]](/Member/userTag), to specifiy the user we will use `$user_id`: -``` +```cc Avatar of $userTag[$user_id] ``` @@ -92,7 +92,7 @@ $userAvatar[$user_id] ``` Whole code: -``` +```cc $let[user_id;$getOption[user]] $interactionReply[ {title:Avatar of $usertag[$user_id]} diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index 5824197a..ca5194a3 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -37,12 +37,12 @@ The **Starts with** option triggers when a message begins with the specified tex For example, if the trigger is: -```php +```cc !hello ``` and if the response code is -```php +```cc Hello $username! ``` @@ -80,12 +80,12 @@ The **Ends with** option triggers when a message ends with the specified text. For example, with the trigger: -```php +```cc good morning ``` and if the response code is -```php +```cc Good morning, $username! ``` @@ -121,12 +121,12 @@ The **Contains** option triggers when the specified text appears anywhere in the For example, using: -```php +```cc banana ``` and if the response code is -```php +```cc 🍌 Banana detected! ``` @@ -163,7 +163,7 @@ For example, the following expression detects a Discord user mention: ``` and if the response code is -```php +```cc You have mentioned $username[$mentioned]! ``` @@ -383,7 +383,7 @@ Message parameters are separated by spaces and can be accessed using the `$messa For example, if a user sends: -```php +```cc !hug @user ``` @@ -394,7 +394,7 @@ The message is split into parameters: Each parameter is assigned a number based on its position in the message: -```php +```cc !hug hello world │ │ │ │ │ └── $message[3] @@ -406,7 +406,7 @@ You can also use `+` to get a parameter **and everything after it**. For example: -```php +```cc !announce Hello everyone, welcome! ``` @@ -419,7 +419,7 @@ This is useful when you want to accept a message or sentence as a single paramet For example: -```php +```cc !hug @user !report @user spam in the chat !announce Hello everyone, welcome to the server! @@ -427,14 +427,14 @@ For example: For `!report @user spam in the chat`, you could use: -```php +```cc $message[2] → @user $message[3+] → spam in the chat ``` In short: -```php +```cc $message[1] → first word $message[2] → second word $message[3] → third word From f6ceaab6bf91937c3a6192a8a1c08a8032705445 Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 22:41:04 +0200 Subject: [PATCH 19/62] fix embed color --- content/docs/(functions)/Text/Embed/color.mdx | 4 ++-- content/docs/CodeReferences/ref.embed.colors.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/(functions)/Text/Embed/color.mdx b/content/docs/(functions)/Text/Embed/color.mdx index 48eff1b3..15be427b 100644 --- a/content/docs/(functions)/Text/Embed/color.mdx +++ b/content/docs/(functions)/Text/Embed/color.mdx @@ -17,7 +17,7 @@ Check this [page](/CodeReferences/ref.embed.colors) !!exec $color[#0099ff] - + @@ -29,7 +29,7 @@ Check this [page](/CodeReferences/ref.embed.colors) !!exec $sendMessage[
    \{desc:You are awesome}
    \{color:#0099ff}
    ] - + You are awesome diff --git a/content/docs/CodeReferences/ref.embed.colors.mdx b/content/docs/CodeReferences/ref.embed.colors.mdx index 2e731ff0..95a2e4b1 100644 --- a/content/docs/CodeReferences/ref.embed.colors.mdx +++ b/content/docs/CodeReferences/ref.embed.colors.mdx @@ -48,7 +48,7 @@ It can also accept hex colors like `#1abc9c` !!exec $sendMessage[
    \{desc:You are awesome}
    \{color:Aqua}
    ] - + You are awesome @@ -60,7 +60,7 @@ You are awesome !!exec $description[You are awesome}]
    $color[#0099ff] - + You are awesome From 4298fa2188bc4acc2118556a6ca75c151d1f4039 Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 22:55:40 +0200 Subject: [PATCH 20/62] fix when embed is empty --- components/discord.tsx | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/components/discord.tsx b/components/discord.tsx index eb9d645a..e1ecb10a 100644 --- a/components/discord.tsx +++ b/components/discord.tsx @@ -75,9 +75,21 @@ export function DiscordEmbed({ }: DiscordEmbedProps) { const { resolvedTheme } = useTheme(); - const child = Array.isArray(children) && children.length === 1 - ? children[0] - : children; + const childArray = React.Children.toArray(children); + + // Empty embed: preserve it as-is. + if (childArray.length === 0) { + return ( + + ); + } + + const child = childArray.length === 1 + ? childArray[0] + : null; const isParagraph = React.isValidElement(child) && @@ -85,9 +97,10 @@ export function DiscordEmbed({ const description = isParagraph ? child.props.children - : child; + : children; const isPlainContent = + isParagraph || typeof description === 'string' || typeof description === 'number'; @@ -96,7 +109,7 @@ export function DiscordEmbed({ lightTheme={resolvedTheme === 'light'} {...props} > - {isPlainContent || isParagraph ? ( + {isPlainContent ? ( {description} From a9a06e7ecc5c393ef4603feb6ebbf43957df30bc Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 22:55:54 +0200 Subject: [PATCH 21/62] use new wrapper for discord messages --- content/docs/(functions)/Bot/botTier.mdx | 8 +-- content/docs/(functions)/Bot/botVerified.mdx | 16 ++--- content/docs/(functions)/Bot/clientID.mdx | 8 +-- .../docs/(functions)/Bot/getBotActivity.mdx | 8 +-- content/docs/(functions)/Bot/getBotInvite.mdx | 8 +-- content/docs/(functions)/Bot/ping.mdx | 8 +-- content/docs/(functions)/Bot/serverCount.mdx | 8 +-- content/docs/(functions)/Bot/uptime.mdx | 8 +-- content/docs/(functions)/Channel/channel.mdx | 8 +-- .../(functions)/Channel/channelCategoryID.mdx | 8 +-- .../docs/(functions)/Channel/channelCount.mdx | 8 +-- .../docs/(functions)/Channel/channelName.mdx | 8 +-- .../Channel/channelPermissionsFor.mdx | 8 +-- .../docs/(functions)/Channel/channelType.mdx | 8 +-- .../docs/(functions)/Channel/channelUsed.mdx | 12 ++-- content/docs/(functions)/Channel/clear.mdx | 28 ++++---- .../docs/(functions)/Channel/findChannel.mdx | 16 ++--- .../(functions)/Channel/findServerChannel.mdx | 8 +-- .../Channel/getChannelMessages.mdx | 8 +-- .../(functions)/Channel/latestMessage.mdx | 16 ++--- .../(functions)/Channel/serverChannels.mdx | 8 +-- .../docs/(functions)/Channel/useChannel.mdx | 4 +- .../(functions)/Cooldown/channelCooldown.mdx | 8 +-- .../(functions)/Cooldown/clearCoolDown.mdx | 8 +-- .../docs/(functions)/Cooldown/cooldown.mdx | 8 +-- .../(functions)/Cooldown/getCooldownTime.mdx | 4 +- .../(functions)/Cooldown/serverCooldown.mdx | 8 +-- .../docs/(functions)/Date/creationDate.mdx | 8 +-- content/docs/(functions)/Date/dateStamp.mdx | 8 +-- content/docs/(functions)/Date/dateToTime.mdx | 8 +-- content/docs/(functions)/Date/day.mdx | 8 +-- content/docs/(functions)/Date/formatDate.mdx | 8 +-- content/docs/(functions)/Date/hour.mdx | 8 +-- .../(functions)/Date/memberJoinedCode.mdx | 8 +-- content/docs/(functions)/Date/minute.mdx | 8 +-- content/docs/(functions)/Date/parseDate.mdx | 8 +-- content/docs/(functions)/Date/parseTime.mdx | 32 +++++----- content/docs/(functions)/Date/second.mdx | 8 +-- content/docs/(functions)/Date/timeStamp.mdx | 8 +-- content/docs/(functions)/Date/timeToDate.mdx | 8 +-- content/docs/(functions)/Date/timezone.mdx | 8 +-- content/docs/(functions)/Date/year.mdx | 8 +-- .../docs/(functions)/Events/eventExists.mdx | 8 +-- .../docs/(functions)/Events/getEventInfo.mdx | 8 +-- .../docs/(functions)/Events/getEventUsers.mdx | 8 +-- .../docs/(functions)/Events/guildEvents.mdx | 8 +-- .../docs/(functions)/Image/imageBorderRad.mdx | 8 +-- .../docs/(functions)/Image/imageCreate.mdx | 8 +-- content/docs/(functions)/Image/imageCrop.mdx | 8 +-- content/docs/(functions)/Image/imageDraw.mdx | 8 +-- .../docs/(functions)/Image/imageDrawBack.mdx | 8 +-- content/docs/(functions)/Image/imageFill.mdx | 16 ++--- .../(functions)/Image/imageLineHeight.mdx | 8 +-- .../docs/(functions)/Image/imageLoadEmoji.mdx | 16 ++--- .../(functions)/Image/imageLoadFromURL.mdx | 8 +-- .../(functions)/Image/imagePositionBase.mdx | 8 +-- .../(functions)/Image/imageSetOpacity.mdx | 8 +-- .../docs/(functions)/Image/imageStroke.mdx | 8 +-- .../(functions)/Image/imageStrokeWidth.mdx | 8 +-- .../docs/(functions)/Image/imageTextFill.mdx | 8 +-- .../(functions)/Image/imageTextStroke.mdx | 4 +- .../docs/(functions)/Image/imageUseFont.mdx | 8 +-- .../docs/(functions)/Member/authorAvatar.mdx | 8 +-- content/docs/(functions)/Member/authorID.mdx | 4 +- content/docs/(functions)/Member/ban.mdx | 4 +- .../docs/(functions)/Member/blackListIDs.mdx | 4 +- .../docs/(functions)/Member/boostingSince.mdx | 12 ++-- .../docs/(functions)/Member/discriminator.mdx | 4 +- .../docs/(functions)/Member/displayName.mdx | 4 +- .../docs/(functions)/Member/findMember.mdx | 8 +-- .../docs/(functions)/Member/getUserBadges.mdx | 4 +- .../docs/(functions)/Member/globalName.mdx | 4 +- .../docs/(functions)/Member/hasAnyPerm.mdx | 8 +-- .../docs/(functions)/Member/hasAnyRole.mdx | 8 +-- content/docs/(functions)/Member/hasPerms.mdx | 4 +- content/docs/(functions)/Member/hasRoles.mdx | 4 +- content/docs/(functions)/Member/isBanned.mdx | 4 +- .../(functions)/Member/isUserDMEnabled.mdx | 4 +- content/docs/(functions)/Member/kick.mdx | 4 +- .../docs/(functions)/Member/memberSearch.mdx | 32 +++++----- .../(functions)/Member/membersWithStatus.mdx | 8 +-- content/docs/(functions)/Member/mention.mdx | 4 +- content/docs/(functions)/Member/nickname.mdx | 4 +- content/docs/(functions)/Member/status.mdx | 4 +- content/docs/(functions)/Member/user.mdx | 4 +- .../docs/(functions)/Member/userAvatar.mdx | 8 +-- .../docs/(functions)/Member/userBanner.mdx | 12 ++-- .../(functions)/Member/userConnectedVC.mdx | 8 +-- .../docs/(functions)/Member/userExists.mdx | 4 +- content/docs/(functions)/Member/userID.mdx | 4 +- content/docs/(functions)/Member/userPerms.mdx | 4 +- .../docs/(functions)/Member/userReacted.mdx | 4 +- .../docs/(functions)/Member/userRoleColor.mdx | 4 +- content/docs/(functions)/Member/userRoles.mdx | 4 +- content/docs/(functions)/Member/userTag.mdx | 4 +- content/docs/(functions)/Member/username.mdx | 4 +- .../docs/(functions)/Member/usersBanned.mdx | 4 +- .../(functions)/Member/usersInChannel.mdx | 4 +- .../docs/(functions)/Member/usersTyping.mdx | 4 +- .../docs/(functions)/Member/usersWithRole.mdx | 4 +- content/docs/(functions)/Message/DM.mdx | 4 +- .../docs/(functions)/Message/awaitMessage.mdx | 16 ++--- .../Message/channelSendMessage.mdx | 8 +-- .../(functions)/Message/createWebhook.mdx | 8 +-- content/docs/(functions)/Message/getEmbed.mdx | 8 +-- .../(functions)/Message/getReactionCount.mdx | 8 +-- .../(functions)/Message/messageAttachment.mdx | 8 +-- .../(functions)/Message/messageExists.mdx | 8 +-- .../docs/(functions)/Message/messageFlags.mdx | 8 +-- .../docs/(functions)/Message/messageID.mdx | 8 +-- .../docs/(functions)/Message/messageType.mdx | 8 +-- .../(functions)/Message/messageWebhookID.mdx | 8 +-- content/docs/(functions)/Message/msg.mdx | 8 +-- .../(functions)/Message/noEscapingMessage.mdx | 16 ++--- .../(functions)/Message/noMentionMessage.mdx | 8 +-- content/docs/(functions)/Message/poll.mdx | 4 +- content/docs/(functions)/Message/sendDM.mdx | 4 +- .../docs/(functions)/Message/sendMessage.mdx | 8 +-- .../(functions)/Message/webhookExists.mdx | 8 +-- content/docs/(functions)/Random/random.mdx | 8 +-- .../docs/(functions)/Random/randomMention.mdx | 8 +-- .../docs/(functions)/Random/randomRoleID.mdx | 8 +-- .../docs/(functions)/Random/randomString.mdx | 8 +-- .../docs/(functions)/Random/randomText.mdx | 8 +-- .../(functions)/Random/randomTextBiased.mdx | 16 ++--- .../docs/(functions)/Random/randomUserID.mdx | 8 +-- .../docs/(functions)/Request/httpRequest.mdx | 8 +-- .../(functions)/Request/httpRequestHeader.mdx | 4 +- .../(functions)/Request/httpRequestStatus.mdx | 4 +- .../(functions)/Role/blackListRoleIDs.mdx | 8 +-- content/docs/(functions)/Role/findRole.mdx | 16 ++--- content/docs/(functions)/Role/giveRoles.mdx | 4 +- content/docs/(functions)/Role/guildRoles.mdx | 8 +-- content/docs/(functions)/Role/hasRole.mdx | 8 +-- content/docs/(functions)/Role/highestRole.mdx | 8 +-- content/docs/(functions)/Role/role.mdx | 8 +-- content/docs/(functions)/Role/roleCount.mdx | 8 +-- content/docs/(functions)/Role/roleID.mdx | 8 +-- content/docs/(functions)/Role/roleName.mdx | 8 +-- content/docs/(functions)/Role/rolePerms.mdx | 8 +-- .../docs/(functions)/Role/rolePosition.mdx | 8 +-- content/docs/(functions)/Role/takeRoles.mdx | 4 +- content/docs/(functions)/Role/toggleRoles.mdx | 4 +- content/docs/(functions)/Server/addEmoji.mdx | 4 +- .../(functions)/Server/allMembersCount.mdx | 8 +-- .../docs/(functions)/Server/getInviteInfo.mdx | 8 +-- .../(functions)/Server/getServerInvite.mdx | 8 +-- content/docs/(functions)/Server/guild.mdx | 8 +-- .../docs/(functions)/Server/membersCount.mdx | 8 +-- content/docs/(functions)/Server/ownerID.mdx | 8 +-- .../(functions)/Server/serverBoostCount.mdx | 8 +-- .../(functions)/Server/serverBoostLevel.mdx | 8 +-- .../Server/serverContentFilter.mdx | 8 +-- .../(functions)/Server/serverDescription.mdx | 16 ++--- .../docs/(functions)/Server/serverEmojis.mdx | 8 +-- .../(functions)/Server/serverFeatures.mdx | 8 +-- .../docs/(functions)/Server/serverIcon.mdx | 8 +-- .../docs/(functions)/Server/serverName.mdx | 12 ++-- .../docs/(functions)/Server/serverRegion.mdx | 8 +-- .../Server/serverVerificationLevel.mdx | 8 +-- .../(functions)/Server/systemChannelID.mdx | 4 +- .../(functions)/Stickers/messageStickers.mdx | 8 +-- content/docs/(functions)/Stickers/sticker.mdx | 8 +-- .../(functions)/Text/Array/arrayClear.mdx | 8 +-- .../(functions)/Text/Array/arrayConcat.mdx | 8 +-- .../(functions)/Text/Array/arrayCount.mdx | 8 +-- .../(functions)/Text/Array/arrayCreate.mdx | 8 +-- .../Text/Array/arrayElementCount.mdx | 8 +-- .../(functions)/Text/Array/arrayFilter.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayGet.mdx | 8 +-- .../(functions)/Text/Array/arrayInclude.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayJoin.mdx | 8 +-- .../(functions)/Text/Array/arrayLength.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayLoop.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayMap.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayPop.mdx | 8 +-- .../docs/(functions)/Text/Array/arrayPush.mdx | 8 +-- .../(functions)/Text/Array/arrayRemove.mdx | 8 +-- .../(functions)/Text/Array/arrayReverse.mdx | 8 +-- .../(functions)/Text/Array/arraySearch.mdx | 8 +-- .../docs/(functions)/Text/Array/arraySet.mdx | 8 +-- .../(functions)/Text/Array/arrayShift.mdx | 8 +-- .../(functions)/Text/Array/arrayShuffle.mdx | 8 +-- .../(functions)/Text/Array/arraySlice.mdx | 8 +-- .../docs/(functions)/Text/Array/arraySort.mdx | 24 +++---- .../(functions)/Text/Array/arrayUnique.mdx | 8 +-- .../(functions)/Text/Array/arrayUnshift.mdx | 8 +-- .../(functions)/Text/Components/awaitMenu.mdx | 4 +- .../Text/Condition/checkCondition.mdx | 16 ++--- .../Text/Condition/conditional.mdx | 8 +-- .../docs/(functions)/Text/Condition/if.mdx | 24 +++---- .../docs/(functions)/Text/Embed/addField.mdx | 16 ++--- .../(functions)/Text/Embed/addTimestamp.mdx | 16 ++--- .../docs/(functions)/Text/Embed/author.mdx | 24 +++---- content/docs/(functions)/Text/Embed/color.mdx | 16 ++--- .../(functions)/Text/Embed/description.mdx | 16 ++--- .../docs/(functions)/Text/Embed/footer.mdx | 8 +-- content/docs/(functions)/Text/Embed/image.mdx | 8 +-- .../docs/(functions)/Text/Embed/thumbnail.mdx | 8 +-- content/docs/(functions)/Text/Embed/title.mdx | 16 ++--- .../docs/(functions)/Text/Math/abbreviate.mdx | 8 +-- content/docs/(functions)/Text/Math/abs.mdx | 8 +-- content/docs/(functions)/Text/Math/ceil.mdx | 16 ++--- content/docs/(functions)/Text/Math/divide.mdx | 8 +-- content/docs/(functions)/Text/Math/floor.mdx | 16 ++--- content/docs/(functions)/Text/Math/math.mdx | 16 ++--- .../docs/(functions)/Text/Math/mathMax.mdx | 8 +-- .../docs/(functions)/Text/Math/mathMin.mdx | 8 +-- content/docs/(functions)/Text/Math/modulo.mdx | 8 +-- content/docs/(functions)/Text/Math/multi.mdx | 8 +-- .../docs/(functions)/Text/Math/ordinal.mdx | 8 +-- content/docs/(functions)/Text/Math/round.mdx | 8 +-- .../docs/(functions)/Text/Math/roundTenth.mdx | 8 +-- content/docs/(functions)/Text/Math/sub.mdx | 8 +-- content/docs/(functions)/Text/Math/sum.mdx | 8 +-- .../docs/(functions)/Text/Math/truncate.mdx | 8 +-- .../(functions)/Text/Object/ObjectCreate.mdx | 8 +-- .../(functions)/Text/Object/ObjectGet.mdx | 8 +-- .../Text/Object/ObjectIncrease.mdx | 16 ++--- .../Text/Object/ObjectKeyExists.mdx | 8 +-- .../(functions)/Text/Object/ObjectKeys.mdx | 16 ++--- .../(functions)/Text/Object/ObjectLoop.mdx | 8 +-- .../(functions)/Text/Object/ObjectMerge.mdx | 16 ++--- .../(functions)/Text/Object/ObjectRemove.mdx | 8 +-- .../Text/Object/ObjectRenameKey.mdx | 16 ++--- .../(functions)/Text/Object/ObjectSet.mdx | 8 +-- .../(functions)/Text/Object/ObjectValues.mdx | 16 ++--- .../(functions)/Text/Object/createObject.mdx | 8 +-- .../(functions)/Text/Object/getObject.mdx | 8 +-- .../(functions)/Text/Regex/regexCheck.mdx | 16 ++--- .../(functions)/Text/Regex/regexMatch.mdx | 24 +++---- .../(functions)/Text/Regex/regexReplace.mdx | 8 +-- .../Text/Regex/replaceTextWithRegex.mdx | 8 +-- content/docs/(functions)/Text/channelNSFW.mdx | 8 +-- content/docs/(functions)/Text/charCount.mdx | 8 +-- .../docs/(functions)/Text/checkContains.mdx | 16 ++--- content/docs/(functions)/Text/customEmoji.mdx | 16 ++--- .../docs/(functions)/Text/disableMentions.mdx | 8 +-- .../docs/(functions)/Text/filterMessage.mdx | 8 +-- content/docs/(functions)/Text/findChars.mdx | 4 +- content/docs/(functions)/Text/findNumbers.mdx | 8 +-- .../(functions)/Text/findSpecialChars.mdx | 4 +- .../(functions)/Text/isChannelMention.mdx | 16 ++--- .../docs/(functions)/Text/isUserMention.mdx | 16 ++--- .../(functions)/Text/isandhas/isBoosting.mdx | 8 +-- .../docs/(functions)/Text/isandhas/isBot.mdx | 8 +-- .../(functions)/Text/isandhas/isConnected.mdx | 8 +-- .../(functions)/Text/isandhas/isDeafened.mdx | 8 +-- .../(functions)/Text/isandhas/isEmoji.mdx | 8 +-- .../(functions)/Text/isandhas/isHoisted.mdx | 8 +-- .../(functions)/Text/isandhas/isManaged.mdx | 8 +-- .../Text/isandhas/isMentionable.mdx | 8 +-- .../(functions)/Text/isandhas/isMentioned.mdx | 8 +-- .../(functions)/Text/isandhas/isMuted.mdx | 8 +-- .../(functions)/Text/isandhas/isNumber.mdx | 8 +-- .../(functions)/Text/isandhas/isStreaming.mdx | 8 +-- .../(functions)/Text/isandhas/isTicket.mdx | 8 +-- .../(functions)/Text/isandhas/isValidHex.mdx | 8 +-- .../Text/isandhas/isValidInvite.mdx | 8 +-- .../(functions)/Text/isandhas/isValidLink.mdx | 8 +-- .../Text/isandhas/isValidObject.mdx | 8 +-- content/docs/(functions)/Text/mentioned.mdx | 8 +-- .../(functions)/Text/mentionedChannels.mdx | 8 +-- .../docs/(functions)/Text/mentionedRoles.mdx | 8 +-- .../(functions)/Text/noMentionMessage.mdx | 8 +-- content/docs/(functions)/Text/numToWord.mdx | 8 +-- .../docs/(functions)/Text/numberSeparator.mdx | 8 +-- .../Text/only/onlyIfMessageContains.mdx | 8 +-- content/docs/(functions)/Text/padLeft.mdx | 8 +-- content/docs/(functions)/Text/padRight.mdx | 8 +-- .../docs/(functions)/Text/repeatMessage.mdx | 8 +-- content/docs/(functions)/Text/replaceText.mdx | 8 +-- .../docs/(functions)/Text/stringEndsWith.mdx | 16 ++--- .../(functions)/Text/stringStartsWith.mdx | 16 ++--- content/docs/(functions)/Text/textLength.mdx | 16 ++--- content/docs/(functions)/Text/textShuffle.mdx | 8 +-- content/docs/(functions)/Text/textSlice.mdx | 8 +-- .../Text/textSplit/advancedTextSplit.mdx | 8 +-- .../Text/textSplit/concatTextSplit.mdx | 8 +-- .../Text/textSplit/editTextSplitElement.mdx | 8 +-- .../Text/textSplit/findTextSplitIndex.mdx | 8 +-- .../Text/textSplit/getTextSplitLength.mdx | 8 +-- .../Text/textSplit/joinSplitText.mdx | 8 +-- .../Text/textSplit/spliceTextJoin.mdx | 8 +-- .../(functions)/Text/textSplit/splitText.mdx | 8 +-- .../(functions)/Text/textSplit/textSplit.mdx | 4 +- content/docs/(functions)/Text/textTrim.mdx | 8 +-- .../(functions)/Text/toLocaleUpperCase.mdx | 8 +-- content/docs/(functions)/Text/toLowercase.mdx | 8 +-- content/docs/(functions)/Text/toUppercase.mdx | 8 +-- content/docs/(functions)/Text/uri.mdx | 16 ++--- content/docs/(functions)/Text/void.mdx | 8 +-- .../docs/(functions)/Threads/getThreads.mdx | 8 +-- content/docs/(functions)/Threads/thread.mdx | 8 +-- .../docs/(functions)/Useful/callFunction.mdx | 16 ++--- content/docs/(functions)/Useful/error.mdx | 8 +-- content/docs/(functions)/Useful/forEach.mdx | 8 +-- content/docs/(functions)/Useful/function.mdx | 16 ++--- .../(functions)/Useful/redirectErrors.mdx | 8 +-- content/docs/(functions)/Useful/seq.mdx | 8 +-- content/docs/(functions)/Useful/spread.mdx | 4 +- content/docs/(functions)/Useful/stop.mdx | 12 ++-- .../(functions)/Useful/suppressErrors.mdx | 8 +-- .../docs/(functions)/Useful/triggerExists.mdx | 16 ++--- content/docs/(functions)/Useful/wait.mdx | 12 ++-- .../Variables/deleteChannelVar.mdx | 4 +- .../Variables/deleteMessageVar.mdx | 4 +- .../(functions)/Variables/deleteServerVar.mdx | 4 +- .../(functions)/Variables/deleteUserVar.mdx | 4 +- content/docs/(functions)/Variables/get.mdx | 16 ++--- .../(functions)/Variables/getChannelVar.mdx | 8 +-- .../(functions)/Variables/getMessageVar.mdx | 8 +-- .../(functions)/Variables/getServerVar.mdx | 8 +-- .../docs/(functions)/Variables/getUserVar.mdx | 16 ++--- .../Variables/increaseChannelVar.mdx | 8 +-- .../Variables/increaseServerVar.mdx | 8 +-- .../(functions)/Variables/increaseUserVar.mdx | 8 +-- content/docs/(functions)/Variables/let.mdx | 4 +- .../(functions)/Variables/resetUserVar.mdx | 4 +- .../(functions)/Variables/setChannelVar.mdx | 8 +-- .../(functions)/Variables/setMessageVar.mdx | 4 +- .../(functions)/Variables/setServerVar.mdx | 4 +- .../docs/(functions)/Variables/setUserVar.mdx | 4 +- .../(functions)/Variables/userLeaderboard.mdx | 4 +- .../(functions)/Variables/userVarRank.mdx | 8 +-- .../(functions)/Variables/viewChannelVars.mdx | 16 ++--- .../(functions)/Variables/viewServerVars.mdx | 16 ++--- .../(functions)/Variables/viewUserVars.mdx | 8 +-- .../docs/CodeReferences/ref.channel_types.mdx | 8 +-- .../docs/CodeReferences/ref.embed.colors.mdx | 16 ++--- .../ref.message_curl_format.mdx | 4 +- content/docs/Guide/4.template.mdx | 4 +- content/docs/Guide/5.comment.mdx | 8 +-- content/docs/Guide/6.variables.mdx | 4 +- content/docs/Guide/7.array.mdx | 4 +- content/docs/Guide/syntax.mdx | 12 ++-- content/docs/Other/syntax.mdx | 12 ++-- content/docs/Trigger/joinorleave.mdx | 8 +-- content/docs/Trigger/word.mdx | 48 +++++++------- content/docs/Trigger/word_new.mdx | 64 +++++++++---------- content/docs/Tutorials/3.report.mdx | 8 +-- content/docs/Tutorials/4.collect.mdx | 8 +-- 342 files changed, 1542 insertions(+), 1542 deletions(-) diff --git a/content/docs/(functions)/Bot/botTier.mdx b/content/docs/(functions)/Bot/botTier.mdx index 4dccd6e6..393c8784 100644 --- a/content/docs/(functions)/Bot/botTier.mdx +++ b/content/docs/(functions)/Bot/botTier.mdx @@ -7,12 +7,12 @@ This command retrieves the current tier level of your bot. The standard, free version of the bot operates at **Tier 0**. - + !!exec $botTier - - + + 0 - + The command will then return the tier level of your bot. \ No newline at end of file diff --git a/content/docs/(functions)/Bot/botVerified.mdx b/content/docs/(functions)/Bot/botVerified.mdx index 18a5beea..f2809247 100644 --- a/content/docs/(functions)/Bot/botVerified.mdx +++ b/content/docs/(functions)/Bot/botVerified.mdx @@ -21,12 +21,12 @@ Here are a couple of examples demonstrating how `$botVerified` works. In this example, we check if the bot with the ID `725721249652670555` is verified. - + !!exec $botVerified[725721249652670555] - - + + true - + The function returns `true` because the bot with ID `725721249652670555` is verified. @@ -36,12 +36,12 @@ The function returns `true` because the bot with ID `725721249652670555` is veri In this example, we check if the bot with the ID `582019849073590274` is verified. - + !!exec $botVerified[582019849073590274] - - + + false - + The function returns `false` because the bot with ID `582019849073590274` is not verified. \ No newline at end of file diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx index a39aa9d4..806fff78 100644 --- a/content/docs/(functions)/Bot/clientID.mdx +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -13,12 +13,12 @@ This function is commonly used to programmatically access the bot's ID within cu Here's an example of how it works in practice: - + !!exec $clientID - - + + 725721249652670555 - + As you can see, the command `!!exec $clientID` returns the bot's ID: `725721249652670555`. diff --git a/content/docs/(functions)/Bot/getBotActivity.mdx b/content/docs/(functions)/Bot/getBotActivity.mdx index 96c46839..96fe34b9 100644 --- a/content/docs/(functions)/Bot/getBotActivity.mdx +++ b/content/docs/(functions)/Bot/getBotActivity.mdx @@ -24,10 +24,10 @@ This example demonstrates how to use `$getBotActivity[text]` to display the bot' ![Example Screenshot](https://i.imgur.com/KyYqUGU.png) - + !!exec $getBotActivity[text] - - + + The Cosmos - + \ No newline at end of file diff --git a/content/docs/(functions)/Bot/getBotInvite.mdx b/content/docs/(functions)/Bot/getBotInvite.mdx index 95eeab21..0790ae66 100644 --- a/content/docs/(functions)/Bot/getBotInvite.mdx +++ b/content/docs/(functions)/Bot/getBotInvite.mdx @@ -25,12 +25,12 @@ This will output an invite link for your bot with administrator permissions. **Example Output:** - + !!exec $getBotInvite[admin] - - + + https://discord.com/oauth2/authorize?client_id=725721249652670555&scope=bot+applications.commands&permissions=8 - + diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx index b752b680..a65d9f5d 100644 --- a/content/docs/(functions)/Bot/ping.mdx +++ b/content/docs/(functions)/Bot/ping.mdx @@ -11,12 +11,12 @@ This command provides the bot's ping (latency) in milliseconds. It's a quick an Here's an example of how to use the `$ping` command in Discord: - + !!exec $ping ms - - + + 20 ms - + In this example, the bot responded with `20 ms`, indicating a ping of 20 milliseconds. A lower ping generally means the bot is more responsive. diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx index 07e5923f..7b6ed1e7 100644 --- a/content/docs/(functions)/Bot/serverCount.mdx +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -10,12 +10,12 @@ This function doesn't require any arguments. Just include it in your command res
    **Example:** - + !!exec I am in $serverCount servers. - - + + I am in 15000 servers. - + **Difficulty:** diff --git a/content/docs/(functions)/Bot/uptime.mdx b/content/docs/(functions)/Bot/uptime.mdx index 13180c67..419f0336 100644 --- a/content/docs/(functions)/Bot/uptime.mdx +++ b/content/docs/(functions)/Bot/uptime.mdx @@ -11,12 +11,12 @@ This command displays how long the bot has been running since it was last starte Here's an example of how it works: - + !!exec $uptime - - + + 3d 17h 53m 27s - + In this example, the bot has been running for 3 days, 17 hours, 53 minutes, and 27 seconds. diff --git a/content/docs/(functions)/Channel/channel.mdx b/content/docs/(functions)/Channel/channel.mdx index effde317..85396382 100644 --- a/content/docs/(functions)/Channel/channel.mdx +++ b/content/docs/(functions)/Channel/channel.mdx @@ -45,12 +45,12 @@ auto, brazil, hongkong, india, japan, rotterdam, russia, singapore, southafrica, This example retrieves the name of the channel with the ID stored in the variable `$channelID`. - + !!exec #$channel[$channelID;name] - - + + #custom-command-is-the-best - + diff --git a/content/docs/(functions)/Channel/channelCategoryID.mdx b/content/docs/(functions)/Channel/channelCategoryID.mdx index 5adcef48..156974ec 100644 --- a/content/docs/(functions)/Channel/channelCategoryID.mdx +++ b/content/docs/(functions)/Channel/channelCategoryID.mdx @@ -16,12 +16,12 @@ Retrieves the ID of the category channel the current channel or a specified chan **Example:** - + !!exec $channelCategoryID - - + + 83975894758938799 - + In this example, the command `!!exec $channelCategoryID` is used in a channel that is within the category channel with the ID `83975894758938799`. The bot returns the ID of the category channel. diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index 08140317..a2b6b11d 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -18,12 +18,12 @@ Counts the number of public threads in the server:
    - + !!exec There are $channelCount[threads_public] threads in the server! - - + + There are 13 threads in the server! - + **Function Difficulty:** diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index b04ce7a6..b12f87ac 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -13,12 +13,12 @@ Retrieves the name of a Discord channel. **Example:** - + !!exec $channelName[123456789012345678] - - + + The channel's name is... (Assuming the channel ID 123456789012345678 is a channel named "help") - + diff --git a/content/docs/(functions)/Channel/channelPermissionsFor.mdx b/content/docs/(functions)/Channel/channelPermissionsFor.mdx index e0d94b22..5fc1783c 100644 --- a/content/docs/(functions)/Channel/channelPermissionsFor.mdx +++ b/content/docs/(functions)/Channel/channelPermissionsFor.mdx @@ -26,12 +26,12 @@ $channelPermissionsFor[channelID;userID/roleID] Here's an example demonstrating how to use `$channelPermissionsFor`: - + !!exec $channelPermissionsFor[$channelID;$authorID] - - + + Create Instant Invite, Kick Members, Ban Members, Administrator, Manage Channels, Manage Guild, Add Reactions, View Audit Log, Priority Speaker, Stream, View Channel, Send Messages, Send Tts Messages, Manage Messages, Embed Links, Attach Files, Read Message History, Mention Everyone, Use External Emojis, View Guild Insights, Connect, Speak, Mute Members, Deafen Members, Move Members, Use Vad, Change Nickname, Manage Nicknames, Manage Roles, Manage Webhooks, Manage Emojis And Stickers, Use Application Commands, Request To Speak, Manage Events, Manage Threads, Use Public Threads, Create Public Threads, Use Private Threads, Create Private Threads, Use External Stickers, Send Messages In Threads, Start Embedded Activities, Moderate Members - + In this example, the command `!!exec $channelPermissionsFor[$channelID;$authorID]` retrieves and displays the permissions of the command author (`$authorID`) within the current channel (`$channelID`). The bot then responds with a comma-separated list of the user's permissions in that channel. \ No newline at end of file diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index 579ffb9e..b403a022 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -13,12 +13,12 @@ This function allows you to determine the type of a specific channel using its u **Example:** - + !!exec $channelType[$channelID] - - + + text - + diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index 1f4e044e..a3ceea62 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -15,15 +15,15 @@ Returns the ID of the channel used. If no channel ID is specified, it defaults t Here are a few examples showcasing the `$channelUsed` function: - + !!exec $channelUsed[839090554205241394] - - + + !!exec $channelUsed - - + + 839090554205241394 - + In the first example, the bot set the specified channel ID `839090554205241394` as the channel used. In the second example, because no channel ID is provided, the bot returns the channel ID where the `!!exec` command was executed. diff --git a/content/docs/(functions)/Channel/clear.mdx b/content/docs/(functions)/Channel/clear.mdx index 0ae0c156..e53dc7a6 100644 --- a/content/docs/(functions)/Channel/clear.mdx +++ b/content/docs/(functions)/Channel/clear.mdx @@ -19,24 +19,24 @@ Clears messages from a channel. You can clear messages from a specific user, or **Before:** - + I'm a spammer, everyone shut up! - - + + I'm a spammer, everyone shut up! - - + + I'm a spammer, everyone shut up! - - + + I'm a spammer, everyone shut up! - - + + I'm a spammer, everyone shut up! - - + + I'm a spammer, everyone shut up! - + !!exec $clear[10;everyone] $sendMessage[Channel has been purged] @@ -45,9 +45,9 @@ I'm a spammer, everyone shut up! **After:** - + Channel has been purged. - + diff --git a/content/docs/(functions)/Channel/findChannel.mdx b/content/docs/(functions)/Channel/findChannel.mdx index a55bcd8e..4437d7c2 100644 --- a/content/docs/(functions)/Channel/findChannel.mdx +++ b/content/docs/(functions)/Channel/findChannel.mdx @@ -20,12 +20,12 @@ Searches for a channel by its ID, mention, or name. **Scenario 1: Channel Found (using channel name)** - + !!exec $findChannel[bot-commands;no] - - + + 869243919697846379 - + In this example, the bot searches for a channel named "bot-commands". If found, it returns the channel's ID (869243919697846379). The `;no` tells the function to return undefined if the channel isn't found. @@ -33,12 +33,12 @@ In this example, the bot searches for a channel named "bot-commands". If found, **Scenario 2: Channel Not Found (with `returnCurrentChannel` set to `no`)** - + !!exec $findChannel[bot-cmnds;no] - - + + undefined - + Here, the bot attempts to find a channel named "bot-cmnds" (note the typo). Since no such channel exists, and the second argument is set to `no`, the function returns `undefined`. diff --git a/content/docs/(functions)/Channel/findServerChannel.mdx b/content/docs/(functions)/Channel/findServerChannel.mdx index 45005db2..38f94e0a 100644 --- a/content/docs/(functions)/Channel/findServerChannel.mdx +++ b/content/docs/(functions)/Channel/findServerChannel.mdx @@ -24,12 +24,12 @@ $findServerChannel[query;returnCurrentChannel (yes/no) (optional)] In this example, we're searching for a channel named "general" and telling the function *not* to return anything if the channel is not found. - + !!exec $findServerChannel[general;no] - - + + 802179504147136552 - + diff --git a/content/docs/(functions)/Channel/getChannelMessages.mdx b/content/docs/(functions)/Channel/getChannelMessages.mdx index f2a5e459..babdc8d7 100644 --- a/content/docs/(functions)/Channel/getChannelMessages.mdx +++ b/content/docs/(functions)/Channel/getChannelMessages.mdx @@ -24,10 +24,10 @@ $getChannelMessages[Channel ID;userID or everyone (default is everyone);ids/cont This example demonstrates how to retrieve the IDs of the 2 most recent messages sent by the command invoker in the channel where the command was executed, separating them with a forward slash. - + !!exec $getChannelMessages[$channelID;$authorID;ids;/;2] - - + + 982807194485555300/982807196318457918 - + \ No newline at end of file diff --git a/content/docs/(functions)/Channel/latestMessage.mdx b/content/docs/(functions)/Channel/latestMessage.mdx index 16de47e7..e6e4fb04 100644 --- a/content/docs/(functions)/Channel/latestMessage.mdx +++ b/content/docs/(functions)/Channel/latestMessage.mdx @@ -23,12 +23,12 @@ $latestMessage[Channel ID (defaults to current channel);User ID (defaults to all This example retrieves the content of the most recent message in the current channel. - + !!exec $latestMessage[$channelID] - - + + Hello World - + ### Example 2: Return the Latest Message ID @@ -36,10 +36,10 @@ Hello World This example retrieves the ID of the most recent message from any user in the current channel. - + !!exec $latestMessage[$channelID;everyone;yes] - - + + 1234567890 - + \ No newline at end of file diff --git a/content/docs/(functions)/Channel/serverChannels.mdx b/content/docs/(functions)/Channel/serverChannels.mdx index b75b3c58..08f965c8 100644 --- a/content/docs/(functions)/Channel/serverChannels.mdx +++ b/content/docs/(functions)/Channel/serverChannels.mdx @@ -31,12 +31,12 @@ $serverChannels[info (optional, default: name); type (optional, default: all); s This example retrieves the names of all text channels in the server, separated by forward slashes. - + !!exec $serverChannels[name;text;/] - - + + channel1/channel2/channel3/channel4 - + diff --git a/content/docs/(functions)/Channel/useChannel.mdx b/content/docs/(functions)/Channel/useChannel.mdx index 63223dee..f4dfda3d 100644 --- a/content/docs/(functions)/Channel/useChannel.mdx +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -18,9 +18,9 @@ This example demonstrates how to send "Bye!" to a specific channel ID (802179504 !!exec $sendMessage[Hi!] $useChannel[802179504147136552] $sendMessage[Bye!] /* Bye! will be sent in the channel ID provided. */ - + Hi! - + **Explanation:** diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index d0b77c6a..d591cced 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -23,16 +23,16 @@ As you can see, first time it will set the cooldown and execute code below, seco !!exec $channelCooldown[5m;You're on cooldown!]
    You're not on cooldown! - + You're not on cooldown! - + !!exec $channelCooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown!
    - + You're on cooldown! Still 4m remaining! - + ## Placeholders diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx index db62bd80..b8c0a9da 100644 --- a/content/docs/(functions)/Cooldown/clearCoolDown.mdx +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -26,17 +26,17 @@ How to remove cooldown from a user $clearCooldown
    No cooldown - + No cooldown - + !!exec $cooldown[5m]
    $clearCooldown
    No cooldown 2nd try
    - + No cooldown 2nd try - + ##### Related functions: `$getCooldownTime` diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index f35fe37c..6d5f0a20 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -24,16 +24,16 @@ As you can see, first time it will set the cooldown and execute code below, seco !!exec $cooldown[5m;You're on cooldown!]
    You're not on cooldown! - + You're not on cooldown! - + !!exec $cooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown!
    - + You're on cooldown! Still 4m remaining! - + ## Placeholders diff --git a/content/docs/(functions)/Cooldown/getCooldownTime.mdx b/content/docs/(functions)/Cooldown/getCooldownTime.mdx index d20b8910..5adbf178 100644 --- a/content/docs/(functions)/Cooldown/getCooldownTime.mdx +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -24,9 +24,9 @@ How to use $getCooldownTime !!exec $channelCooldown[5m]
    $getCooldownTime[5m;channel;$channelID] - + 299937 - + diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index 8cadfbb3..4714308b 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -23,16 +23,16 @@ As you can see, first time it will set the cooldown and execute code below, seco !!exec $serverCooldown[5m;You're on cooldown!]
    You're not on cooldown! - + You're not on cooldown! - + !!exec $serverCooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown!
    - + You're on cooldown! Still 4m remaining! - + ## Placeholders diff --git a/content/docs/(functions)/Date/creationDate.mdx b/content/docs/(functions)/Date/creationDate.mdx index e97bb03e..5af3fef4 100644 --- a/content/docs/(functions)/Date/creationDate.mdx +++ b/content/docs/(functions)/Date/creationDate.mdx @@ -16,12 +16,12 @@ Retrieves the creation date of a Discord entity (channel, guild, emoji, user, or **Example:** - + !!exec $creationDate[725721249652670555;date] - - + + Thursday, June 25, 2020 02:37 PM - + diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx index 7bf2d4d5..4f81f556 100644 --- a/content/docs/(functions)/Date/dateStamp.mdx +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -15,12 +15,12 @@ This function allows you to retrieve the current timestamp in either millisecond **Example:** - + !!exec $dateStamp, $dateStamp[yes] - - + + 1630841854895, 1630841854 - + In this example, the first `$dateStamp` call returns the timestamp in milliseconds, while the second `$dateStamp[yes]` call returns the timestamp in seconds. diff --git a/content/docs/(functions)/Date/dateToTime.mdx b/content/docs/(functions)/Date/dateToTime.mdx index 07b80fb5..c87fec81 100644 --- a/content/docs/(functions)/Date/dateToTime.mdx +++ b/content/docs/(functions)/Date/dateToTime.mdx @@ -19,13 +19,13 @@ $dateToTime[Date] This example converts the date `12-05-2000` to its corresponding timestamp in milliseconds. - + !!exec $dateToTime[12-05-2000] - + - + 975974400000 - + **Explanation:** diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx index 6950d56c..134d5606 100644 --- a/content/docs/(functions)/Date/day.mdx +++ b/content/docs/(functions)/Date/day.mdx @@ -14,12 +14,12 @@ Returns the current date. Optionally, you can also retrieve the day of the week.
    - + !!exec $day $day[yes] - - + + 25 Saturday - + diff --git a/content/docs/(functions)/Date/formatDate.mdx b/content/docs/(functions)/Date/formatDate.mdx index 83e3fd2b..e4df33e9 100644 --- a/content/docs/(functions)/Date/formatDate.mdx +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -18,16 +18,16 @@ Formats a date provided as milliseconds, a string, or an ISO string into a speci
    - + !!exec $formatDate[$dateStamp] $formatDate[$dateStamp;LLLL] $formatDate[$dateStamp;dddd at hour HH] - - + + Sunday, March 15 2020 March 15 2020 1:00 PM Sunday at hour 10 - + #### Date Input Options: diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx index 589c9c16..a8ca520f 100644 --- a/content/docs/(functions)/Date/hour.mdx +++ b/content/docs/(functions)/Date/hour.mdx @@ -13,12 +13,12 @@ This example shows how to use the `$hour` command in a custom command.
    - + !!exec $hour - - + + 19 - + diff --git a/content/docs/(functions)/Date/memberJoinedCode.mdx b/content/docs/(functions)/Date/memberJoinedCode.mdx index 9fba4491..23f523ef 100644 --- a/content/docs/(functions)/Date/memberJoinedCode.mdx +++ b/content/docs/(functions)/Date/memberJoinedCode.mdx @@ -20,10 +20,10 @@ $memberJoinedCode[User ID;Info Type (default code)] ### Example: - + !!exec You were invited by $memberJoinedCode[$userID;inviter]

    -
    - + + You were invited by 123456789987654 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx index 32a6f3eb..3239e80c 100644 --- a/content/docs/(functions)/Date/minute.mdx +++ b/content/docs/(functions)/Date/minute.mdx @@ -15,12 +15,12 @@ $minute This example demonstrates how to use the `$minute` function to display the current minute. - + !!exec $minute - - + + 23 - + diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx index 064fc846..71253022 100644 --- a/content/docs/(functions)/Date/parseDate.mdx +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -18,12 +18,12 @@ Converts milliseconds into a human-readable date or time format. This example demonstrates converting 1000 milliseconds to a time duration. - + !!exec $parseDate[1000;time] - - + + 1 second - + **Explanation:** diff --git a/content/docs/(functions)/Date/parseTime.mdx b/content/docs/(functions)/Date/parseTime.mdx index 4c43a7ba..52d8376a 100644 --- a/content/docs/(functions)/Date/parseTime.mdx +++ b/content/docs/(functions)/Date/parseTime.mdx @@ -30,39 +30,39 @@ Multiple durations can be combined by separating them with spaces. As a convenie ## Examples - + !!exec $parseTime[1m] - - + + 60000 - + - + !!exec $parseTime[1h 30m] - - + + 5400000 - + - + !!exec $parseTime[1h30m] - - + + 5400000 - + - + !!exec $parseTime[1h30m;m] - - + + 90 - + **Explanation:** diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx index e6d60e67..6517286c 100644 --- a/content/docs/(functions)/Date/second.mdx +++ b/content/docs/(functions)/Date/second.mdx @@ -13,12 +13,12 @@ This function is simple! It just retrieves the current second of the minute.
    - + !!exec $second - - + + 56 - + diff --git a/content/docs/(functions)/Date/timeStamp.mdx b/content/docs/(functions)/Date/timeStamp.mdx index 92d7fe3a..a6fa96c9 100644 --- a/content/docs/(functions)/Date/timeStamp.mdx +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -19,12 +19,12 @@ Returns the current Unix timestamp (the number of milliseconds that have elapsed **Example:** - + !!exec $timeStamp, $timestamp[yes] - - + + 1630841854895, 1630841854 - + **Explanation of the example:** diff --git a/content/docs/(functions)/Date/timeToDate.mdx b/content/docs/(functions)/Date/timeToDate.mdx index 3774fdf5..3d76cc3c 100644 --- a/content/docs/(functions)/Date/timeToDate.mdx +++ b/content/docs/(functions)/Date/timeToDate.mdx @@ -20,12 +20,12 @@ $timeToDate[Timestamp;Format (optional)] This example converts the current timestamp (obtained using `$timeStamp`) to a `YYYY-MM-DD` format. - + !!exec $timeToDate[$timeStamp;%y%-%m%-%d%] - - + + 2022-03-12 - + diff --git a/content/docs/(functions)/Date/timezone.mdx b/content/docs/(functions)/Date/timezone.mdx index 3b80247c..1d93f4c6 100644 --- a/content/docs/(functions)/Date/timezone.mdx +++ b/content/docs/(functions)/Date/timezone.mdx @@ -22,16 +22,16 @@ Or you can use `UTC+hh:mm` or `UTC-hh:mm` to specify a certain offset like `UTC+ This example demonstrates how `$timezone` changes the output of the `$hour` function. - + !!exec UTC $hour after Change $timezone[Europe/Zurich] Europe/Zurich $hour - - + + UTC 10 after Change Europe/Zurich 12 - + diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx index 5444b238..62f0821d 100644 --- a/content/docs/(functions)/Date/year.mdx +++ b/content/docs/(functions)/Date/year.mdx @@ -17,12 +17,12 @@ $year Here's how to use the `$year` command in a Discord message: - + !!exec $year - - + + 2021 - + diff --git a/content/docs/(functions)/Events/eventExists.mdx b/content/docs/(functions)/Events/eventExists.mdx index d9f2b46e..c97ce68c 100644 --- a/content/docs/(functions)/Events/eventExists.mdx +++ b/content/docs/(functions)/Events/eventExists.mdx @@ -19,12 +19,12 @@ $eventExists[event id] This example demonstrates using `$eventExists` to check for an event with an invalid ID. - + !!exec $eventExists[Invalid event id] - - + + false - + **Explanation:** diff --git a/content/docs/(functions)/Events/getEventInfo.mdx b/content/docs/(functions)/Events/getEventInfo.mdx index a2c2f27e..3000435e 100644 --- a/content/docs/(functions)/Events/getEventInfo.mdx +++ b/content/docs/(functions)/Events/getEventInfo.mdx @@ -42,10 +42,10 @@ $getEventInfo[event id;info type] ``` - + !!exec $getEventinfo[123456789123456789;name] - - + + Event Name - + diff --git a/content/docs/(functions)/Events/getEventUsers.mdx b/content/docs/(functions)/Events/getEventUsers.mdx index 6254adc6..b7215f51 100644 --- a/content/docs/(functions)/Events/getEventUsers.mdx +++ b/content/docs/(functions)/Events/getEventUsers.mdx @@ -20,12 +20,12 @@ $getEventUsers[event id;separator (default is ', ')] This example demonstrates how to retrieve the users interested in an event with the ID `123456789123456789`. - + !!exec $getEventUsers[123456789123456789] - - + + 123456789, 987654321 - + **Explanation:** diff --git a/content/docs/(functions)/Events/guildEvents.mdx b/content/docs/(functions)/Events/guildEvents.mdx index 2dd4e7d0..652f7203 100644 --- a/content/docs/(functions)/Events/guildEvents.mdx +++ b/content/docs/(functions)/Events/guildEvents.mdx @@ -39,10 +39,10 @@ This example retrieves the names of all active events in the server, separated b **Result:** - + !!exec $guildEvents[name;active;/] - - + + Event 1/Event 2 - + \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageBorderRad.mdx b/content/docs/(functions)/Image/imageBorderRad.mdx index 098264c8..40e35ea9 100644 --- a/content/docs/(functions)/Image/imageBorderRad.mdx +++ b/content/docs/(functions)/Image/imageBorderRad.mdx @@ -27,13 +27,13 @@ $imageBorderRad[top-left corner radius; top-right corner radius; bottom-right co This example demonstrates how to draw a red circle in the center of a 300x300 pixel image using `$imageBorderRad` in conjunction with `$imageCreate` and `$imageFill`. - + !!exec $imageCreate[300;300]
    $imageBorderRad[50]
    $imageFill[red;100;100;100;100]
    $image[$imageOutput]

    -
    - + + - +
    **Breakdown of the command:** diff --git a/content/docs/(functions)/Image/imageCreate.mdx b/content/docs/(functions)/Image/imageCreate.mdx index 6a7e38c4..8c831853 100644 --- a/content/docs/(functions)/Image/imageCreate.mdx +++ b/content/docs/(functions)/Image/imageCreate.mdx @@ -30,11 +30,11 @@ $image[$imageOutput] ``` - + !!exec $imageCreate[300;300]
    $imageFill[red]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageCrop.mdx b/content/docs/(functions)/Image/imageCrop.mdx index bdc6a8d5..5ccfe93a 100644 --- a/content/docs/(functions)/Image/imageCrop.mdx +++ b/content/docs/(functions)/Image/imageCrop.mdx @@ -12,10 +12,10 @@ $imageCrop[image name;x;y;width;height] ### Example: - + !!exec $imageCreate[300;300] // Create Image Frame
    $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
    $imageCrop[avatar;0;0;100;100] // crop the image from position (0, 0) with size 100
    $imageDraw[avatar]
    $image[$imageOutput]

    -
    - + + [image] - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageDraw.mdx b/content/docs/(functions)/Image/imageDraw.mdx index 012b5bf3..ae630e7a 100644 --- a/content/docs/(functions)/Image/imageDraw.mdx +++ b/content/docs/(functions)/Image/imageDraw.mdx @@ -32,11 +32,11 @@ For more detailed information on how Width and Height work within image manipula This example creates a 300x300 image, loads the author's avatar, draws it onto the created image, and then outputs the result. - + !!exec $imageCreate[300;300] // Create Image Frame
    $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load Avatar as "avatar"
    $imageDraw[avatar;0;0;300;300] // Draw "avatar" at (0,0) with width 300 and height 300
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageDrawBack.mdx b/content/docs/(functions)/Image/imageDrawBack.mdx index 306d9497..d2a41c16 100644 --- a/content/docs/(functions)/Image/imageDrawBack.mdx +++ b/content/docs/(functions)/Image/imageDrawBack.mdx @@ -41,11 +41,11 @@ $image[$imageOutput] ``` - + !!exec $imageCreate[300;300] // Create Image Frame
    $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]]
    $imageFill[gray]
    $imageFill[transparent;100;100;100;100]
    $imageDrawBack[avatar;50;50;200;200]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageFill.mdx b/content/docs/(functions)/Image/imageFill.mdx index e0f894d0..ac389b71 100644 --- a/content/docs/(functions)/Image/imageFill.mdx +++ b/content/docs/(functions)/Image/imageFill.mdx @@ -30,13 +30,13 @@ $image[$imageOutput] ``` - + !!exec $imageCreate[300;300]
    $imageFill[gray]
    $image[$imageOutput]

    -
    - + + - +
    ### Example 2: Fill a 50x50 rectangle at (100, 100) with red. @@ -49,11 +49,11 @@ $image[$imageOutput] ``` - + !!exec $imageCreate[300;300]
    $imageFill[gray]
    $imageFill[red;100;100;50;50]
    $image[$imageOutput]

    -
    - + + - +
    diff --git a/content/docs/(functions)/Image/imageLineHeight.mdx b/content/docs/(functions)/Image/imageLineHeight.mdx index fd0b1e11..7023a576 100644 --- a/content/docs/(functions)/Image/imageLineHeight.mdx +++ b/content/docs/(functions)/Image/imageLineHeight.mdx @@ -34,10 +34,10 @@ This will change the line height used for text in future image builder commands. To retrieve the current line height, use the command without any parameters: - + !!exec $imageLineHeight - - + + 1.3 - + \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageLoadEmoji.mdx b/content/docs/(functions)/Image/imageLoadEmoji.mdx index 0b605c19..d5e2f592 100644 --- a/content/docs/(functions)/Image/imageLoadEmoji.mdx +++ b/content/docs/(functions)/Image/imageLoadEmoji.mdx @@ -24,13 +24,13 @@ $imageLoadEmoji[id;Emoji] This example creates a 300x300 image, loads the `:cheese:` emoji, fills a gray rectangle, and then draws the cheese emoji on top. - + !!exec $imageCreate[300;300]
    $imageLoadEmoji[mycheese;:cheese:]
    $imageBorderRad[100]
    $imageFill[gray;50;50;200;200]
    $imageDraw[mycheese;100;100;100;100]
    $image[$imageOutput]

    -
    - + + - +
    **Example 2: Loading and drawing both a standard and a custom emoji** @@ -38,11 +38,11 @@ This example creates a 300x300 image, loads the `:cheese:` emoji, fills a gray r This example creates a 600x600 image, loads both a custom Discord emoji (using its ID) and the `:cheese:` emoji, and draws them both. - + !!exec $imageCreate[600;600]
    $imageLoadEmoji[seed;<:seed:1149808771888062605>]
    $imageLoadEmoji[cheese;:cheese:]
    $imageBorderRad[100]
    $imageFill[gray;50;200;200;200]
    $imageFill[gray;350;200;200;200]
    $imageDraw[cheese;100;250;100;100]
    $imageDraw[seed;400;250;100;100]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageLoadFromURL.mdx b/content/docs/(functions)/Image/imageLoadFromURL.mdx index b17dc504..dfac0516 100644 --- a/content/docs/(functions)/Image/imageLoadFromURL.mdx +++ b/content/docs/(functions)/Image/imageLoadFromURL.mdx @@ -18,16 +18,16 @@ $imageLoadFromURL[name;URL] This example creates a 300x300 image, loads the author's avatar from their profile picture, and then draws the avatar onto the newly created image. - + !!exec $imageCreate[300;300] // Create Image Frame
    $imageLoadFromURL[avatar;$replaceText[$authorAvatar;webp;png]] // Load the author's avatar
    $imageDraw[avatar;0;0;300;300] // Draw the avatar onto the image frame
    $image[$imageOutput] // Output the resulting image

    -
    - + + - +
    **Explanation:** diff --git a/content/docs/(functions)/Image/imagePositionBase.mdx b/content/docs/(functions)/Image/imagePositionBase.mdx index a1d68792..93a4e502 100644 --- a/content/docs/(functions)/Image/imagePositionBase.mdx +++ b/content/docs/(functions)/Image/imagePositionBase.mdx @@ -33,11 +33,11 @@ The following values are accepted for the `Base` parameter: This example creates an image, sets the base position to `centerleft`, draws a white square, then sets the base position to `centerright` and draws a red square. - + !!exec $imageCreate[300;300]
    $imagePositionBase[centerleft]
    $imageFill[white;center;center;100;100]
    $imagePositionBase[centerright]
    $imageFill[red;center;center;100;100]
    $image[$imageOutput]

    -
    - + + - +
    diff --git a/content/docs/(functions)/Image/imageSetOpacity.mdx b/content/docs/(functions)/Image/imageSetOpacity.mdx index 788e6566..c17c6970 100644 --- a/content/docs/(functions)/Image/imageSetOpacity.mdx +++ b/content/docs/(functions)/Image/imageSetOpacity.mdx @@ -41,11 +41,11 @@ $image[$imageOutput] ``` - + !!exec ?exec $let[avatar;$replaceText[$authoravatar;.webp;.png]]
    $imageCreate[300;300]
    $imageLoadFromURL[avatar;$avatar]
    $imageDraw[avatar;100;10;100;100]
    $imageSetOpacity[50]
    $imageDraw[avatar;100;190;100;100]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageStroke.mdx b/content/docs/(functions)/Image/imageStroke.mdx index 700db49c..de7d7106 100644 --- a/content/docs/(functions)/Image/imageStroke.mdx +++ b/content/docs/(functions)/Image/imageStroke.mdx @@ -40,11 +40,11 @@ The `width` and `height` parameters define the dimensions of the rectangle. This example creates a 300x300 canvas, sets the position base to `center`, sets the stroke width to 10, and then draws a red rectangle with a width and height of 50, centered on the canvas. - + !!exec $imageCreate[300;300]
    $imagePositionBase[center]
    $imageStrokeWidth[10]
    $imageStroke[red;center;center;50;50]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageStrokeWidth.mdx b/content/docs/(functions)/Image/imageStrokeWidth.mdx index 630231e8..fd3cfc28 100644 --- a/content/docs/(functions)/Image/imageStrokeWidth.mdx +++ b/content/docs/(functions)/Image/imageStrokeWidth.mdx @@ -27,11 +27,11 @@ To learn more about defining the size of elements using Width and Height, please This example demonstrates how to create a red square with a stroke thickness of 10 pixels, centered on a 300x300 canvas. - + !!exec $imageCreate[300;300]
    $imagePositionBase[center]
    $imageStrokeWidth[10]
    $imageStroke[red;center;center;50;50]
    $image[$imageOutput]

    -
    - + +
    -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageTextFill.mdx b/content/docs/(functions)/Image/imageTextFill.mdx index c6d472bc..4ce9fbd4 100644 --- a/content/docs/(functions)/Image/imageTextFill.mdx +++ b/content/docs/(functions)/Image/imageTextFill.mdx @@ -28,11 +28,11 @@ $imageTextFill[Text;position x;position y;color;opacity] This example creates a 300x300 image, sets the text size to 30, aligns the text to the center, and then writes "CC is Awesome" at position 150,150 with the color #4461b3. - + !!exec $imageCreate[300;300]
    $imageTextSize[30]
    $imageTextAlign[center]
    $imageTextFill[CC is Awesome;150;150;#4461b3]
    $image[$imageOutput]

    -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Image/imageTextStroke.mdx b/content/docs/(functions)/Image/imageTextStroke.mdx index 18e1148a..37a5f4da 100644 --- a/content/docs/(functions)/Image/imageTextStroke.mdx +++ b/content/docs/(functions)/Image/imageTextStroke.mdx @@ -41,7 +41,7 @@ $image[$imageOutput] **Result:** - + !!exec $imageCreate[300;300]
    $imageTextSize[30] @@ -53,7 +53,7 @@ $image[$imageOutput] $image[$imageOutput]

    -
    + - + !!exec $imageCreate[300;300]
    $imageUseFont[Roboto]
    $imageTextColor[white]
    $imageTextSize[30]
    $imageTextFill[Hello World;20;50]
    $stop[\{image:$imageOutput}] -
    - + + - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx index cacaf1b6..f65d363f 100644 --- a/content/docs/(functions)/Member/authorAvatar.mdx +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -21,16 +21,16 @@ How is the avatar URL displayed when sent with text and without text !!exec With text: $authorAvatar - + With text: https://cdn.discordapp.com/embed/avatars/0.png
    User Avatar -
    + !!exec $authorAvatar - + User Avatar - + diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index 3da5166a..8c2cad2b 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -20,9 +20,9 @@ How to use $authorID !!exec My ID is $authorID - + My ID is 123456789123456789 - + ##### Related functions: `$mention` diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index d54090f7..138188e6 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -33,9 +33,9 @@ Unsuccessful ban with error message !!exec $ban[$ownerID;Just a test;0] - + ❌ bot is missing enough permissions at line 1 - + diff --git a/content/docs/(functions)/Member/blackListIDs.mdx b/content/docs/(functions)/Member/blackListIDs.mdx index a0ac45b9..3a14bfc9 100644 --- a/content/docs/(functions)/Member/blackListIDs.mdx +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -24,9 +24,9 @@ How to blacklist a user from the command !!exec $blackListIDs[$authorID;You are blacklisted from using this command!]
    Message
    - + You are blacklisted from using this command! - + ##### Related functions: `$blackListRoleIds` `$blackListChannelIDs` `$onlyForIDs` `$onlyForRoles` diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx index 6e2998f4..9aceb828 100644 --- a/content/docs/(functions)/Member/boostingSince.mdx +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -22,21 +22,21 @@ Multiple ways of using function $boostingSince !!exec $boostingSince - + Wednesday, January 1, 2025 08:30 PM - + !!exec $boostingSince[123456789123456789;ms] - + 1735763400000 - + !!exec $formatDate[$boostingSince[123456789123456789;ms];MM-DD-YYYY] - + 01-01-2025 - + ##### Related functions: `$formatDate` `$timeToDate` diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx index a88870b7..24bcc1bb 100644 --- a/content/docs/(functions)/Member/discriminator.mdx +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -21,9 +21,9 @@ Returning a discriminator from user !!exec $discriminator - + 1234 - + diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx index 3c5069e3..e73005ae 100644 --- a/content/docs/(functions)/Member/displayName.mdx +++ b/content/docs/(functions)/Member/displayName.mdx @@ -21,9 +21,9 @@ How to return display name from author !!exec $displayName - + User - + ##### Related functions: `$nickname` `$username` diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx index 303d110e..639c8710 100644 --- a/content/docs/(functions)/Member/findMember.mdx +++ b/content/docs/(functions)/Member/findMember.mdx @@ -22,9 +22,9 @@ Searching for existing user !!exec $findMember[user2;no] - + 123456789123456789 - + #### Unsuccessful search @@ -35,9 +35,9 @@ Searching for invalid user !!exec $findMember[user123;no] - + undefined - + diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx index db8c8d0f..e00642a2 100644 --- a/content/docs/(functions)/Member/getUserBadges.mdx +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -21,9 +21,9 @@ How to return badges from command author !!exec $getUserBadges - + Active Developer - + diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx index 36ab8bc7..773e2cb8 100644 --- a/content/docs/(functions)/Member/globalName.mdx +++ b/content/docs/(functions)/Member/globalName.mdx @@ -21,9 +21,9 @@ How to return the global name from author !!exec $globalName - + User - + ##### Related functions: `$displayName` `$nickname` `$username` diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx index f81c7e64..fe6871b8 100644 --- a/content/docs/(functions)/Member/hasAnyPerm.mdx +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -22,15 +22,15 @@ How to use $hasAnyPerm without user argument. Keep in mind that if the user does !!exec I have managechannels OR manageroles permission: $hasAnyPerm[managechannels;manageroles] - + I have managechannels OR manageroles permission: true - + !!exec I have managechannels permission: $hasAnyPerm[managechannels], I have manageroles permission: $hasAnyPerm[manageroles] - + I have managechannels permission: true, I have manageroles permission: false - + diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx index 8ad0ec01..499d2ec0 100644 --- a/content/docs/(functions)/Member/hasAnyRole.mdx +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -22,15 +22,15 @@ How to use $hasAnyRole without user argument. Keep in mind that if the user does !!exec I have Admin OR Manager role: $hasAnyRole[admin;manager] - + I have Admin OR Manager role: true - + !!exec I have Admin role: $hasAnyRole[admin], I have Manager role: $hasAnyRole[manager] - + I have Admin role: true, I have Manager role: false - + diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx index 58e15acb..b3a3ba43 100644 --- a/content/docs/(functions)/Member/hasPerms.mdx +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -22,9 +22,9 @@ How to use $hasPerms. Keep in mind that only if the user does have all of listed !!exec $hasPerms[$authorID;sendmessages] - + true - + diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx index eaaa8781..57284387 100644 --- a/content/docs/(functions)/Member/hasRoles.mdx +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -22,9 +22,9 @@ How to use $hasRoles. Keep in mind that only if the user does have all of listed !!exec $hasRoles[$authorID;123456789123456789] - + true - + diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index 6ce106b7..603b7d7c 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -21,9 +21,9 @@ How to use $isBanned !!exec $isBanned[123456789123456789] - + false - + ##### Related functions: `$kick` `$ban` diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx index c30261b9..acfa5dea 100644 --- a/content/docs/(functions)/Member/isUserDMEnabled.mdx +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -21,9 +21,9 @@ How to use $isUserDMEnabled !!exec $isUserDMEnabled[123456789123456789] - + true - + ##### Related functions: `$dm` `$sendDM` diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index c575482a..fd20ed60 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -32,9 +32,9 @@ Unsuccessful kick with error message !!exec $kick[$ownerID;Spamming] - + ❌ bot is missing enough permissions at line 1 - + diff --git a/content/docs/(functions)/Member/memberSearch.mdx b/content/docs/(functions)/Member/memberSearch.mdx index 5438795e..d8c83fc5 100644 --- a/content/docs/(functions)/Member/memberSearch.mdx +++ b/content/docs/(functions)/Member/memberSearch.mdx @@ -27,40 +27,40 @@ It determines how many users it will return if they match the query, by default ### Example (Search and member is found): - + !!exec $memberSearch[mido.dev]

    -
    - + + 788361834360864808

    -
    +
    ### Example (Search and multiple members are found): - + !!exec $memberSearch[A;5;, ;name]

    -
    - + + Alpha, Alight, A living legend, A story in life

    -
    +
    ### Example (Search but member is not found): - + !!exec $memberSearch[bad.dev]

    -
    - + +
    -
    +
    ### Example (Search and use the user id to retrieve join date): - + !!exec $let[user_id;$memberSearch[mido.dev]]
    Mido joined the server at: $memberJoinedDate[$user_id]

    -
    - + + Mido joined the server at: Wed Mar 09 2022 22:06:21 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx index e3be0b6e..141c7bc2 100644 --- a/content/docs/(functions)/Member/membersWithStatus.mdx +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -21,9 +21,9 @@ How to use $membersWithStatus with one status specified !!exec $membersWithStatus[online] - + 123456789123456789,987654321987654321 - + #### Multiple statuses in $membersWithStatus @@ -34,9 +34,9 @@ How to use $membersWithStatus with multiple statuses specified !!exec $membersWithStatus[online;idle] - + 123456789123456789,987654321987654321,765432198765432198 - + diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index 4a5c9c88..230c3014 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -22,10 +22,10 @@ How to use $mention for author or other user !!exec Me: $mention
    Other user: $mention[123456789123456789] - + Me: User
    Other user: Other User -
    + ##### Related functions: `$username` `$nickname` diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 9f3c1a99..829b584d 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -21,9 +21,9 @@ How to use $nickname !!exec $nickname - + ImUser - + ##### Related functions: `$changeNickname` `$username` `$discriminator` `$userTag` diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index bc1726f2..8b10d3af 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -23,9 +23,9 @@ How to use $status !!exec $status - + online - + diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 8a17d176..08cdafaa 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -44,9 +44,9 @@ How to show user account creation date !!exec $user[;created] - + Wednesday, January 1, 2025 08:30 PM - + diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx index 4c00742b..66db4c44 100644 --- a/content/docs/(functions)/Member/userAvatar.mdx +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -23,16 +23,16 @@ How is the avatar URL displayed when sent with text and without text !!exec With text: $userAvatar - + With text: https://cdn.discordapp.com/embed/avatars/0.png
    User Avatar -
    + !!exec $userAvatar - + User Avatar - + diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx index 83ac31e8..162411f4 100644 --- a/content/docs/(functions)/Member/userBanner.mdx +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -21,16 +21,16 @@ How is the banner URL displayed when sent with text and without text !!exec With text: $userBanner - + With text: https://cdn.discordapp.com/banners/287135364127129601/a_0c1e74ef99e35d10f868bd839066e022.png
    User Banner -
    + !!exec $userBanner - + User Banner - + #### Banner is not available @@ -41,9 +41,9 @@ What shows when user does not have banner !!exec $userBanner - + undefined - + diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx index c9de28ff..fd9e7d85 100644 --- a/content/docs/(functions)/Member/userConnectedVC.mdx +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -21,9 +21,9 @@ What happens if user is connected to a voice channel !!exec $userConnectedVC - + 123456789987654321 - + #### Is not connected to a voice channel @@ -34,9 +34,9 @@ What happens if user is not connected to a voice channel !!exec $userConnectedVC - + undefined - + ##### Related functions: `$vcBefore` `$vcAfter` diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index 655412e2..b5f329cd 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -21,9 +21,9 @@ How to use $userExists !!exec $userExists[$authorID] - + true - + diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index 50626282..8db895e3 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -20,9 +20,9 @@ How to use $userID !!exec $userID[user] - + 123456789123456789 - + diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index 0b38765e..5d6e40ff 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -22,9 +22,9 @@ How to use $userPerms !!exec $userPerms[;/] - + View Channel/Send Messages/Mention Everyone - + diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index c2f67363..a2fd91d4 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -27,9 +27,9 @@ How to use $userReacted - + true - + diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index 8be14f40..486744b9 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -21,9 +21,9 @@ How to use $userRoleColor !!exec $userRoleColor - + #d6e0ff - + diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index 5e5d0c20..6cdfc24c 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -23,9 +23,9 @@ How to return roles from message author !!exec $userRoles[;ids;/] - + 123456789987654321/123456789123456789 - + diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index b8183941..807017eb 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -21,9 +21,9 @@ How to use $userTag !!exec $userTag - + user#1234 - + diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index 5ea9666a..aaab51de 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -21,9 +21,9 @@ How to use $nickname !!exec $nickname - + User - + diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 5db1d749..29e11a41 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -22,9 +22,9 @@ How to use $usersBanned !!exec $usersBanned - + user, user1, user2 - + diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index 95598dfb..b9323e3d 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -23,9 +23,9 @@ How to use $usersInChannel !!exec $usersInChannel - + user, user1, user2 - + diff --git a/content/docs/(functions)/Member/usersTyping.mdx b/content/docs/(functions)/Member/usersTyping.mdx index 7fce1512..eab69cf4 100644 --- a/content/docs/(functions)/Member/usersTyping.mdx +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -23,9 +23,9 @@ How to use $usersTyping !!exec $usersTyping - + user, user1, user2 - + diff --git a/content/docs/(functions)/Member/usersWithRole.mdx b/content/docs/(functions)/Member/usersWithRole.mdx index efdf5d37..fca5d41b 100644 --- a/content/docs/(functions)/Member/usersWithRole.mdx +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -23,9 +23,9 @@ How to use $usersWithRole !!exec $usersWithRole[;, ;username] - + user, user1, user2 - + diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/DM.mdx index 20de7b24..a50e51d3 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/DM.mdx @@ -24,9 +24,9 @@ Sends the output of your code directly to the author via Discord Direct Message ``` - + !!exec $DM[$authorID] This is a fantastic message! - + **Result (Sent to the Command Author's DM):** diff --git a/content/docs/(functions)/Message/awaitMessage.mdx b/content/docs/(functions)/Message/awaitMessage.mdx index b2345efa..b555422f 100644 --- a/content/docs/(functions)/Message/awaitMessage.mdx +++ b/content/docs/(functions)/Message/awaitMessage.mdx @@ -40,16 +40,16 @@ This example sends the message "Are you tall?" and waits for the user who execut ``` - + !!exec Your answer is: $awaitMessage[Are you tall?;$authorID] - - + + Are you tall? - - + + YES - - + + Your answer is: YES - + \ No newline at end of file diff --git a/content/docs/(functions)/Message/channelSendMessage.mdx b/content/docs/(functions)/Message/channelSendMessage.mdx index b76db89e..3dc2f99e 100644 --- a/content/docs/(functions)/Message/channelSendMessage.mdx +++ b/content/docs/(functions)/Message/channelSendMessage.mdx @@ -14,12 +14,12 @@ Sends a message to a specified channel. This function allows you to send message
    - + !!exec $channelSendMessage[879431439299543040;This is a fantastic message!;no] - - + + This is a fantastic message! - + #### Examples diff --git a/content/docs/(functions)/Message/createWebhook.mdx b/content/docs/(functions)/Message/createWebhook.mdx index 5a551fe1..d68e6a39 100644 --- a/content/docs/(functions)/Message/createWebhook.mdx +++ b/content/docs/(functions)/Message/createWebhook.mdx @@ -28,12 +28,12 @@ The bot requires the `Manage Webhooks` permission in the target channel to execu
    - + !!exec $createWebHook[$channelid;WikiHook;https://cdn.discordapp.com/guilds/723032190719623289/users/327996784012034050/avatars/7aa9a46ad68d89c4eb8da9d39bbf7ba4.webp?size=2048;yes;/] - - + + 94074xx.../O_BoAW... - + **Example:** diff --git a/content/docs/(functions)/Message/getEmbed.mdx b/content/docs/(functions)/Message/getEmbed.mdx index 8b3ecba4..ccf0c788 100644 --- a/content/docs/(functions)/Message/getEmbed.mdx +++ b/content/docs/(functions)/Message/getEmbed.mdx @@ -41,10 +41,10 @@ These are the available values you can use to specify what information to retrie This example retrieves the description of an embed from a message in the same channel. - + !!exec $getEmbed[$channelID;$messageID;description] - - + + This was an embed description - + \ No newline at end of file diff --git a/content/docs/(functions)/Message/getReactionCount.mdx b/content/docs/(functions)/Message/getReactionCount.mdx index e64af618..fcf2f756 100644 --- a/content/docs/(functions)/Message/getReactionCount.mdx +++ b/content/docs/(functions)/Message/getReactionCount.mdx @@ -21,12 +21,12 @@ $getReactionCount[channelID;messageID;reaction] This example shows how to use `$getReactionCount` to display how many users reacted with a thumbs-up (`👍`) to a specific message. - + !!exec Users agree with this decision: $getReactionCount[$channelID;12345678987654321;👍] - - + + Users agree with this decision: 13 - + **Explanation:** diff --git a/content/docs/(functions)/Message/messageAttachment.mdx b/content/docs/(functions)/Message/messageAttachment.mdx index 0a6cd73a..e994d7a1 100644 --- a/content/docs/(functions)/Message/messageAttachment.mdx +++ b/content/docs/(functions)/Message/messageAttachment.mdx @@ -17,12 +17,12 @@ $messageAttachment This example demonstrates how `$messageAttachment` can be used. - + !!exec $messageAttachment - - + + https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp - + **Explanation:** diff --git a/content/docs/(functions)/Message/messageExists.mdx b/content/docs/(functions)/Message/messageExists.mdx index 2e36ef86..f62c2162 100644 --- a/content/docs/(functions)/Message/messageExists.mdx +++ b/content/docs/(functions)/Message/messageExists.mdx @@ -18,12 +18,12 @@ Checks if a message exists in a specified channel and returns `true` or `false`. Let's say you want to check if a message with the ID `123456789012345678` exists in the channel with the ID `987654321098765432`. - + !!exec $messageExists[987654321098765432;123456789012345678] - - + + true - + In this example, if the message exists, the bot will return `true`. If the message doesn't exist, the bot will return `false`. diff --git a/content/docs/(functions)/Message/messageFlags.mdx b/content/docs/(functions)/Message/messageFlags.mdx index 78a9e594..3317a263 100644 --- a/content/docs/(functions)/Message/messageFlags.mdx +++ b/content/docs/(functions)/Message/messageFlags.mdx @@ -11,12 +11,12 @@ This function retrieves the flags associated with a message. Message flags provi Here's a simple example demonstrating how to use `$messageFlags`: - + !!exec Flags: $messageFlags - - + + Flags: - + **Explanation:** diff --git a/content/docs/(functions)/Message/messageID.mdx b/content/docs/(functions)/Message/messageID.mdx index b645884b..87013139 100644 --- a/content/docs/(functions)/Message/messageID.mdx +++ b/content/docs/(functions)/Message/messageID.mdx @@ -19,12 +19,12 @@ Retrieves the ID of the message that triggered the command. **Discord Example:** - + !!exec $messageID - - + + 789089088989809890 - + **Function Difficulty:** diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx index 592771d0..da7590cb 100644 --- a/content/docs/(functions)/Message/messageType.mdx +++ b/content/docs/(functions)/Message/messageType.mdx @@ -13,12 +13,12 @@ This function returns the type of the message that triggered the command. This c Here's how `$messageType` might be used in a custom command: - + !!exec $messageType - - + + Default - + diff --git a/content/docs/(functions)/Message/messageWebhookID.mdx b/content/docs/(functions)/Message/messageWebhookID.mdx index 94d16ff1..a41c0ec1 100644 --- a/content/docs/(functions)/Message/messageWebhookID.mdx +++ b/content/docs/(functions)/Message/messageWebhookID.mdx @@ -13,12 +13,12 @@ This function requires no arguments and simply returns the webhook ID.
    - + !!exec $messageWebhookID - - + + 683630053686378498 - + **Example:** If a webhook with the ID `683630053686378498` sent the message, the function would return `683630053686378498`. diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index f2663d88..cc89e717 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -104,12 +104,12 @@ Here's a comprehensive list of the properties you can access with the `$msg` fun
    - + !!exec $msg[$channelID;79890890890809;content] - - + + Old Messsage - + **Function difficulty:** diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx index 17be6ef9..3c3ec5c7 100644 --- a/content/docs/(functions)/Message/noEscapingMessage.mdx +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -11,18 +11,18 @@ This function behaves similarly to `$message`, but it **does not escape special
    - + !!exec `` `$` $noEscapingMessage `` ` - - + + `` `$` `` ` - - + + !!exec `` `$` `` ` - - + + `` `#CHAR#` `` ` - + diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx index 99a4a6b7..94ec1396 100644 --- a/content/docs/(functions)/Message/noMentionMessage.mdx +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -17,12 +17,12 @@ Let's say you want to echo the user's message in a custom command, but you don't Here's how it would look in Discord: - + !!exec Server Moderator testing [$noMentionMessage] ($message) - - + + Server Moderator [testing] (Server Moderator testing) - + In this example, even though the user mentioned "Server Moderator", the bot only mentions them once and then includes "testing" (the message with mentions removed). The original message including the mention is also included. diff --git a/content/docs/(functions)/Message/poll.mdx b/content/docs/(functions)/Message/poll.mdx index 9c3f4309..556889f2 100644 --- a/content/docs/(functions)/Message/poll.mdx +++ b/content/docs/(functions)/Message/poll.mdx @@ -27,9 +27,9 @@ $poll[Channel ID (default $channelID);Message ID (default $messageID);data] ### Example: - + !!exec Poll name: $poll[$channelID;$messageID;name]
    Total votes: $poll[$channelID;$messageID;votes]
    Total answers: $poll[$channelID;$messageID;answers]
    1st answer name: $poll[$channelID;$messageID;answer 1 name]
    2nd answer name: $poll[$channelID;$messageID;answer 2 name]
    1st answer votes: $poll[$channelID;$messageID;answer 1 votes]

    -
    +
    ### Output: diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index bc6efad9..757825b9 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -16,10 +16,10 @@ Sends the output of the code to the message author's DMs or to the DMs of a spec **Example 1: Sending a DM to the message author multiple times.** - + !!exec $sendDM[$authorID;I can add this multiple times in my code! This is time 1] $sendDM[$authorID;I can add this multiple times in my code! This is time 2] - +
    diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 984d5280..5628a27b 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -20,12 +20,12 @@ Sends a message to the channel where the command was executed. ``` - + !!exec $sendMessage[This is a fantastic message!;no] - - + + This is a fantastic message! - + #### More Examples diff --git a/content/docs/(functions)/Message/webhookExists.mdx b/content/docs/(functions)/Message/webhookExists.mdx index 06d88bc6..27a6eec5 100644 --- a/content/docs/(functions)/Message/webhookExists.mdx +++ b/content/docs/(functions)/Message/webhookExists.mdx @@ -14,12 +14,12 @@ Checks if a webhook exists using its ID and token. Returns `true` if the webhook
    - + !!exec $webhookExists[940749xx...;Oc_BoyAWxx...] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index 403d7199..87f6d95a 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -29,12 +29,12 @@ This function returns a random number within a specified range. This command will return a random integer between 1 and 6 (inclusive). Possible outputs: 1, 2, 3, 4, 5, or 6. - + !!exec `$random[1;6]` - - + + 4 - + **More Examples:** diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index 4fa0a081..0cf91c0f 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -17,12 +17,12 @@ $randomMention This example shows how to use `$randomMention` to mention a random user in a command. - + !!exec $randomMention - - + + @Lisa - + diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx index 09c9db03..1c9970ac 100644 --- a/content/docs/(functions)/Random/randomRoleID.mdx +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -17,12 +17,12 @@ $randomRoleID Here's how you can use `$randomRoleID` in a custom command: - + !!exec $randomRoleID - - + + 82907890789087988 - + In this example, the command `!!exec $randomRoleID` will output a random role ID from your server (e.g., `82907890789087988`). diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx index a82d194e..aa57e027 100644 --- a/content/docs/(functions)/Random/randomString.mdx +++ b/content/docs/(functions)/Random/randomString.mdx @@ -17,12 +17,12 @@ Generates a random string of a specified length. This function is useful for cre This example demonstrates how to use `$randomString` to generate a 6-character random string. - + !!exec `$randomString[6]` - - + + qe90bT - + In this example, the command `!!exec $randomString[6]` will generate a random string of 6 characters, such as `qe90bT`. The output will vary each time the command is executed. diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index f06844fa..f97e1f75 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -23,12 +23,12 @@ This example will randomly return either "Hello", "Hi", or "Hey".
    - + !!exec `$randomText[I'm sad;I'm very happy]` - - + + I'm very happy - + **Explanation:** diff --git a/content/docs/(functions)/Random/randomTextBiased.mdx b/content/docs/(functions)/Random/randomTextBiased.mdx index adbaa8d3..edca7b54 100644 --- a/content/docs/(functions)/Random/randomTextBiased.mdx +++ b/content/docs/(functions)/Random/randomTextBiased.mdx @@ -48,21 +48,21 @@ Here are a couple of example scenarios demonstrating the range of possibilities: **Example (Unlucky guy):** - + !!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

    -
    - + + Your reward is: Common Box

    -
    +
    **Example (Lucky guy):** - + !!exec Your reward is: $randomTextBiased[Common,80;Rare,10;Epic,8;Platinum,2] Box

    -
    - + + Your reward is: Epic Box - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index 2a0dafc3..ea13700e 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -13,12 +13,12 @@ $randomUserID
    - + !!exec $randomUserID - - + + 97907890789087988 - + diff --git a/content/docs/(functions)/Request/httpRequest.mdx b/content/docs/(functions)/Request/httpRequest.mdx index 45f7c78e..8fde543a 100644 --- a/content/docs/(functions)/Request/httpRequest.mdx +++ b/content/docs/(functions)/Request/httpRequest.mdx @@ -64,12 +64,12 @@ For **Tier 4 and above**, the timeout is extended to **30 minutes**. ### Sending a JSON request - + !!exec $let[response;$httpRequest[My API URL;post;\{"name":"Mido"};Content-Type: application/json]]
    Response is $response
    Response Status is $httpRequestStatus

    -
    - + + Response is \{"success":true}
    Response Status is 200

    -
    +
    ## Notes diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx index ed376028..73e15a91 100644 --- a/content/docs/(functions)/Request/httpRequestHeader.mdx +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -22,10 +22,10 @@ How to return Content-Type from last request !!exec $httpRequest[https://api.example.com/]
    Content-Type Header: $httpRequestHeader[content-type] - + \{"message": "Api response!"}
    Content-Type Header: application/json -
    + ##### Related functions: `$httpRequest` `$httpRequestStatus` diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx index 92dfdb30..0e604d0d 100644 --- a/content/docs/(functions)/Request/httpRequestStatus.mdx +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -21,10 +21,10 @@ How to use $httpRequestStatus to display status code of request !!exec $httpRequest[https://api.example.com/]
    Code: $httpRequestStatus - + Api response!
    Code: 200 -
    + ##### Related functions: `$httpRequest` `$httpRequestHeader` diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index dbf3c7ac..279a58bc 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -28,12 +28,12 @@ Successfully banned user. * `Successfully banned user.`: This line sends a confirmation message after a successful ban. - + !ban @RAKE - - + + You are not authorized to use this command! - + diff --git a/content/docs/(functions)/Role/findRole.mdx b/content/docs/(functions)/Role/findRole.mdx index ed4ccdee..7c572646 100644 --- a/content/docs/(functions)/Role/findRole.mdx +++ b/content/docs/(functions)/Role/findRole.mdx @@ -21,12 +21,12 @@ Finding a role named "Mika#6359" and not returning the current channel ID:
    - + !!exec $findRole[Mika#6359;no] - - + + 869243919697846379 - + **Example (Role Not Found):** @@ -35,12 +35,12 @@ If the role is not found, the function will return `undefined`.
    - + !!exec $findRole[mika#6359;no] - - + + undefined - + diff --git a/content/docs/(functions)/Role/giveRoles.mdx b/content/docs/(functions)/Role/giveRoles.mdx index 1ddcc91e..5ae181fb 100644 --- a/content/docs/(functions)/Role/giveRoles.mdx +++ b/content/docs/(functions)/Role/giveRoles.mdx @@ -18,9 +18,9 @@ Grants one or more roles to a specified user. This example grants the "Muted" role to the command executor. - + !!exec $giveRoles[$authorID;$roleID[Muted]] - + diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx index 379570f4..4509c17e 100644 --- a/content/docs/(functions)/Role/guildRoles.mdx +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -26,12 +26,12 @@ You can specify the type of information you want (ID, name, or mention) and limi This example shows how to retrieve the IDs of all roles in the guild. - + !!exec $guildRoles[id] - - + + 869243918787686431, 869243918817058856, 869243918489878654, 869250889813213244, 871289098231513098, 869251802556678154, 869243918489878650, 878284024232165407, 869249016213422150, 869250128136003614, 869243918787686434, 869248264426356736, 869243918787686436, 869243918489878657, 869243918489878653, 869250129272651787, 869250127347453992, 869250888106115092, 869243918787686430, 869243918787686432, 869243918817058857, 869249218169147422, 869243918489878652, 869244293959794720, 869250129901813820 - + diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx index da09e2dc..eb07205b 100644 --- a/content/docs/(functions)/Role/hasRole.mdx +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -16,12 +16,12 @@ Determines if a user possesses a specific role within the server. Returns `true` Checks if the message author has the role with the ID `99871..xx`. - + !!exec $hasRole[$authorid;99871..xx] - - + + false - +
    diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx index 5192d609..a42ec365 100644 --- a/content/docs/(functions)/Role/highestRole.mdx +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -29,12 +29,12 @@ Admin ``` - + !!exec $roleName[$highestRole] - - + + Admin - + **Function difficulty:** diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index 57de3b59..b511738d 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -41,12 +41,12 @@ Here's a list of the available properties you can use with the `$role` function: #### Example: - + !!exec $role[798789079070970;position] - - + + 2 - + This example retrieves the position of the role with the ID `798789079070970`. The bot responds with `2`, indicating the role's position in the role hierarchy. diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index afbb961c..d62d38cc 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -15,12 +15,12 @@ This function is straightforward to use. Simply include it in your command respo Let's create a custom command that announces the total number of roles in the server. - + !!exec There are `$roleCount` roles in the server! - - + + There are `23` roles in the server - + In this example: diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx index 760e32db..dc0f5620 100644 --- a/content/docs/(functions)/Role/roleID.mdx +++ b/content/docs/(functions)/Role/roleID.mdx @@ -19,12 +19,12 @@ Retrieves the ID of a specified role. Let's say you have a role named "muted" in your server. The following example demonstrates how to retrieve its ID. - + !!exec $roleID[muted] - - + + 772053356378062889 - + In this example, the command returns `772053356378062889`, which is the ID of the "muted" role. diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx index 9f1304a0..c4f3769b 100644 --- a/content/docs/(functions)/Role/roleName.mdx +++ b/content/docs/(functions)/Role/roleName.mdx @@ -17,12 +17,12 @@ Replace `roleID` with the actual ID of the role you want to find. This example shows how to use the `$roleName` function to find the name of the role with the ID `869243918787686439`. - + !!exec $roleName[869243918787686439] - - + + Custom Command - + **Function difficulty:** diff --git a/content/docs/(functions)/Role/rolePerms.mdx b/content/docs/(functions)/Role/rolePerms.mdx index efe42517..9c07c94f 100644 --- a/content/docs/(functions)/Role/rolePerms.mdx +++ b/content/docs/(functions)/Role/rolePerms.mdx @@ -16,12 +16,12 @@ Returns the permissions a role has. **Example:** - + !!exec $rolePerms[$roleID[muted]; | ] - - + + View Channel | Read Message History - + diff --git a/content/docs/(functions)/Role/rolePosition.mdx b/content/docs/(functions)/Role/rolePosition.mdx index bb475e24..dca7b6cd 100644 --- a/content/docs/(functions)/Role/rolePosition.mdx +++ b/content/docs/(functions)/Role/rolePosition.mdx @@ -21,12 +21,12 @@ Returns the position of a role in the server's role hierarchy. Roles with higher Let's say you have a custom command that checks the position of the "Muted" role. - + !!exec $rolePosition[$roleID[muted]] - - + + 2 - + **Explanation:** diff --git a/content/docs/(functions)/Role/takeRoles.mdx b/content/docs/(functions)/Role/takeRoles.mdx index 0e5401b7..b2abb4cd 100644 --- a/content/docs/(functions)/Role/takeRoles.mdx +++ b/content/docs/(functions)/Role/takeRoles.mdx @@ -14,9 +14,9 @@ Takes away a role from a user.
    - + !!exec $takeRoles[$authorID;$roleID[Muted]] - + **Example Breakdown:** diff --git a/content/docs/(functions)/Role/toggleRoles.mdx b/content/docs/(functions)/Role/toggleRoles.mdx index 38b7df85..e7db5eb3 100644 --- a/content/docs/(functions)/Role/toggleRoles.mdx +++ b/content/docs/(functions)/Role/toggleRoles.mdx @@ -14,9 +14,9 @@ Toggles roles on a user. This means it removes specified roles if the user alrea
    - + !!exec $toggleRoles[$authorID;$roleID[Member +]] - + **Example:** diff --git a/content/docs/(functions)/Server/addEmoji.mdx b/content/docs/(functions)/Server/addEmoji.mdx index d28fe192..67c30610 100644 --- a/content/docs/(functions)/Server/addEmoji.mdx +++ b/content/docs/(functions)/Server/addEmoji.mdx @@ -18,9 +18,9 @@ Adds an emoji to the current Discord server (guild). You can optionally restrict **Example:** - + !!exec $addEmoji[https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp;CustomCommandSupport;no] - + **Explanation:** diff --git a/content/docs/(functions)/Server/allMembersCount.mdx b/content/docs/(functions)/Server/allMembersCount.mdx index 9bf1e475..28877860 100644 --- a/content/docs/(functions)/Server/allMembersCount.mdx +++ b/content/docs/(functions)/Server/allMembersCount.mdx @@ -8,12 +8,12 @@ Returns the total number of users the bot is currently serving across all server
    - + !!exec <@$clientID> serves $allMembersCount users in total! - - + + Custom Command serves 6852280 users in total! - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/getInviteInfo.mdx b/content/docs/(functions)/Server/getInviteInfo.mdx index c8bfccd0..e0f40e48 100644 --- a/content/docs/(functions)/Server/getInviteInfo.mdx +++ b/content/docs/(functions)/Server/getInviteInfo.mdx @@ -52,10 +52,10 @@ If you leave the `Property` parameter empty (e.g., `$getInviteInfo[ZFQNZA4Ekz]`) ``` - + !!exec $getInviteInfo[ZFQNZA4Ekz;servername] - - + + Custom Command - + diff --git a/content/docs/(functions)/Server/getServerInvite.mdx b/content/docs/(functions)/Server/getServerInvite.mdx index ad649065..2afcb00a 100644 --- a/content/docs/(functions)/Server/getServerInvite.mdx +++ b/content/docs/(functions)/Server/getServerInvite.mdx @@ -12,10 +12,10 @@ $getServerInvite ### Example: - + !!exec My server invite is: $getServerInvite

    -
    - + + My server invite is: https://discord.gg/midoworkshopsv - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Server/guild.mdx b/content/docs/(functions)/Server/guild.mdx index 7361d29d..156e1f98 100644 --- a/content/docs/(functions)/Server/guild.mdx +++ b/content/docs/(functions)/Server/guild.mdx @@ -33,12 +33,12 @@ This function allows you to retrieve various details about the server where the #### Example: - + !!exec This Server has $guild[boostcount] boosts! - - + + This Server has 2 boosts! - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/membersCount.mdx b/content/docs/(functions)/Server/membersCount.mdx index 7dd493b4..f3818eaf 100644 --- a/content/docs/(functions)/Server/membersCount.mdx +++ b/content/docs/(functions)/Server/membersCount.mdx @@ -13,12 +13,12 @@ Returns the amount of users in your server/guild! **Example:** - + !!exec There are `$membersCount` members in the server! - - + + There are `599` members in the server - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/ownerID.mdx b/content/docs/(functions)/Server/ownerID.mdx index ebcc4dc2..6b18e3ea 100644 --- a/content/docs/(functions)/Server/ownerID.mdx +++ b/content/docs/(functions)/Server/ownerID.mdx @@ -8,12 +8,12 @@ Returns the guild's owner ID.
    - + !!exec $ownerID - - + + 683630053686378498 - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx index e8b6aee7..791c779d 100644 --- a/content/docs/(functions)/Server/serverBoostCount.mdx +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -8,12 +8,12 @@ Returns the number of boosts this server has.
    - + !!exec $serverBoostCount - - + + 6 - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverBoostLevel.mdx b/content/docs/(functions)/Server/serverBoostLevel.mdx index 4614e773..d5e3a718 100644 --- a/content/docs/(functions)/Server/serverBoostLevel.mdx +++ b/content/docs/(functions)/Server/serverBoostLevel.mdx @@ -10,12 +10,12 @@ This command retrieves the current boost level of the Discord server. Boost leve
    - + !!exec $serverBoostLevel - - + + 1 - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index 4643404f..a1953eb9 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -8,12 +8,12 @@ Returns the content filter level of this guild. This determines the level of exp
    - + !!exec $serverContentFilter - - + + All Members - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx index 9202ff5d..8952d656 100644 --- a/content/docs/(functions)/Server/serverDescription.mdx +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -7,12 +7,12 @@ Returns the current server description #### Usage: `$serverDescription`
    - + !!exec $serverDescription - - + + Custom Command Support Server - + **Function difficulty:** @@ -27,12 +27,12 @@ Returns the current server description. This command retrieves the description s
    - + !!exec $serverDescription - - + + Custom Command Support Server - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverEmojis.mdx b/content/docs/(functions)/Server/serverEmojis.mdx index cd83054c..c15fe0dd 100644 --- a/content/docs/(functions)/Server/serverEmojis.mdx +++ b/content/docs/(functions)/Server/serverEmojis.mdx @@ -9,12 +9,12 @@ Returns the server emojis.
    - + !!exec $serverEmojis - - + + :cc: , :blob: - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverFeatures.mdx b/content/docs/(functions)/Server/serverFeatures.mdx index 3f9f7c53..82bca8ad 100644 --- a/content/docs/(functions)/Server/serverFeatures.mdx +++ b/content/docs/(functions)/Server/serverFeatures.mdx @@ -8,12 +8,12 @@ Returns the server features. This function returns a comma-separated list of fea
    - + !!exec $serverFeatures - - + + Preview Enabled, Threads Enabled, Member Verification Gate Enabled, New Thread Permissions, News, Community, Welcome Screen Enabled - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx index b0004b43..214c7705 100644 --- a/content/docs/(functions)/Server/serverIcon.mdx +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -9,12 +9,12 @@ Returns the current server's icon.
    - + !!exec $serverIcon - - + + - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx index de1ce748..0169ddc6 100644 --- a/content/docs/(functions)/Server/serverName.mdx +++ b/content/docs/(functions)/Server/serverName.mdx @@ -9,15 +9,15 @@ Returns the name of the current server.
    - + !!exec $serverName - - + + Custom Command - - + + My server's name is: Your Server Name - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx index 53ebccee..92fd0f26 100644 --- a/content/docs/(functions)/Server/serverRegion.mdx +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -9,12 +9,12 @@ Returns the current server region or `undefined` if not available.
    - + !!exec $serverRegion - - + + Europe - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx index 76229525..6eacdb69 100644 --- a/content/docs/(functions)/Server/serverVerificationLevel.mdx +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -7,12 +7,12 @@ Returns the verification level of the server #### Usage: `$serverVerificationLevel`
    - + !!exec $serverVerificationLevel - - + + Medium - + **Function difficulty:** diff --git a/content/docs/(functions)/Server/systemChannelID.mdx b/content/docs/(functions)/Server/systemChannelID.mdx index 02c65414..3a1e7185 100644 --- a/content/docs/(functions)/Server/systemChannelID.mdx +++ b/content/docs/(functions)/Server/systemChannelID.mdx @@ -9,9 +9,9 @@ Returns the system channel ID of this server (if any) #### Usage: `$systemChannelID`
    - + !!exec $systemChannelID - + diff --git a/content/docs/(functions)/Stickers/messageStickers.mdx b/content/docs/(functions)/Stickers/messageStickers.mdx index a2b924ad..2284ab08 100644 --- a/content/docs/(functions)/Stickers/messageStickers.mdx +++ b/content/docs/(functions)/Stickers/messageStickers.mdx @@ -13,10 +13,10 @@ $messageStickers[Index] ### Example: - + !!exec $messageStickers[1]

    -
    - + + 992970796031017080 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Stickers/sticker.mdx b/content/docs/(functions)/Stickers/sticker.mdx index 2b20883f..216c07f9 100644 --- a/content/docs/(functions)/Stickers/sticker.mdx +++ b/content/docs/(functions)/Stickers/sticker.mdx @@ -13,10 +13,10 @@ $sticker[Sticker ID;name;Info] ### Example: - + !!exec $sticker[992974663099629588;name]

    -
    - + + Smiley - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayClear.mdx b/content/docs/(functions)/Text/Array/arrayClear.mdx index 34aa3daf..cd6e20db 100644 --- a/content/docs/(functions)/Text/Array/arrayClear.mdx +++ b/content/docs/(functions)/Text/Array/arrayClear.mdx @@ -12,10 +12,10 @@ $arrayClear[array name (optional)] ### Example: - + !!exec $textSplit[Hello World; ]
    Before=$arrayJoin[, ]
    $arrayClear
    After=$arrayJoin[, ]

    -
    - + + Before=Hello, World
    After= -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayConcat.mdx b/content/docs/(functions)/Text/Array/arrayConcat.mdx index 4b79e5ba..4caadbf7 100644 --- a/content/docs/(functions)/Text/Array/arrayConcat.mdx +++ b/content/docs/(functions)/Text/Array/arrayConcat.mdx @@ -12,12 +12,12 @@ $arrayConcat[List;separator;array name (optional)] ### Example: - + !!exec $arrayCreate[Mido/Rake;/]
    $arrayConcat[Azz/Finkz;/]
    $arrayJoin[, ]

    -
    - + + Mido, Rake, Azz, Finkz

    -
    +
    ### Note on Separator: diff --git a/content/docs/(functions)/Text/Array/arrayCount.mdx b/content/docs/(functions)/Text/Array/arrayCount.mdx index 99795bbb..2e109fde 100644 --- a/content/docs/(functions)/Text/Array/arrayCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayCount.mdx @@ -12,10 +12,10 @@ $arrayCount[array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    $arrayCount

    -
    - + + 3 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayCreate.mdx b/content/docs/(functions)/Text/Array/arrayCreate.mdx index f9aba555..651034aa 100644 --- a/content/docs/(functions)/Text/Array/arrayCreate.mdx +++ b/content/docs/(functions)/Text/Array/arrayCreate.mdx @@ -12,12 +12,12 @@ $arrayCreate[List;separator;array name (optional)] ### Example: - + !!exec $arrayCreate[Mido/Rake/Azz;/]
    1 is $arrayGet[1]
    2 is $arrayGet[2]
    3 is $arrayGet[3]

    -
    - + + 1 is Mido
    2 is Rake
    3 is Azz -
    +
    ### Note on Separator: diff --git a/content/docs/(functions)/Text/Array/arrayElementCount.mdx b/content/docs/(functions)/Text/Array/arrayElementCount.mdx index 83af2790..4ecbeaaa 100644 --- a/content/docs/(functions)/Text/Array/arrayElementCount.mdx +++ b/content/docs/(functions)/Text/Array/arrayElementCount.mdx @@ -13,10 +13,10 @@ $arrayElementCount[Element To Count;Trim before compare (yes/no);array name] ### Example: - + !!exec $arrayCreate[Mido/Rake/Mido/Rake/Rake/Azz/Faj;/]
    Rake repeated $arrayElementCount[Rake] times
    Mido repeated $arrayElementCount[Mido] times
    Azz repeated $arrayElementCount[Azz] times
    Faj repeated $arrayElementCount[Faj] times

    -
    - + + Rake repeated 3 times
    Mido repeated 2 times
    Azz repeated 1 times
    Faj repeated 1 times -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayFilter.mdx b/content/docs/(functions)/Text/Array/arrayFilter.mdx index 1d5ec96c..c1bfd270 100644 --- a/content/docs/(functions)/Text/Array/arrayFilter.mdx +++ b/content/docs/(functions)/Text/Array/arrayFilter.mdx @@ -29,10 +29,10 @@ Array loops are limited to a certain number of cycles. These limits vary between ### Example (Remove Hello): - + !!exec $textSplit[Hello/World;/]
    $arrayFilter[value]\{
    $if[$value==Hello]\{
    false
    }
    }
    $arrayJoin[/] -
    - + + World - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayGet.mdx b/content/docs/(functions)/Text/Array/arrayGet.mdx index 66a88260..1f3e4416 100644 --- a/content/docs/(functions)/Text/Array/arrayGet.mdx +++ b/content/docs/(functions)/Text/Array/arrayGet.mdx @@ -12,10 +12,10 @@ $arrayGet[index;array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    First is $arrayGet[1]
    Second is $arrayGet[2]
    Third is $arrayGet[3]

    -
    - + + First is Mido
    Second is Rake
    Third is Azz -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayInclude.mdx b/content/docs/(functions)/Text/Array/arrayInclude.mdx index 9849decb..349fafcb 100644 --- a/content/docs/(functions)/Text/Array/arrayInclude.mdx +++ b/content/docs/(functions)/Text/Array/arrayInclude.mdx @@ -12,10 +12,10 @@ $arrayInclude[Value;array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    $arrayInclude[Rake]

    -
    - + + true - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayJoin.mdx b/content/docs/(functions)/Text/Array/arrayJoin.mdx index 9f722dd1..e08ccc75 100644 --- a/content/docs/(functions)/Text/Array/arrayJoin.mdx +++ b/content/docs/(functions)/Text/Array/arrayJoin.mdx @@ -12,10 +12,10 @@ $arrayJoin[Separator (optional);array name (optional)] ### Example: - + !!exec $textSplit[Rake/Mido/Azz;/]
    $arrayJoin[, ]

    -
    - + + Rake, Mido, Azz - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayLength.mdx b/content/docs/(functions)/Text/Array/arrayLength.mdx index 9fbc8212..569d14b1 100644 --- a/content/docs/(functions)/Text/Array/arrayLength.mdx +++ b/content/docs/(functions)/Text/Array/arrayLength.mdx @@ -12,10 +12,10 @@ $arrayLength[array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    $arrayLength

    -
    - + + 3 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayLoop.mdx b/content/docs/(functions)/Text/Array/arrayLoop.mdx index 329f7762..5dff9c8b 100644 --- a/content/docs/(functions)/Text/Array/arrayLoop.mdx +++ b/content/docs/(functions)/Text/Array/arrayLoop.mdx @@ -29,10 +29,10 @@ Array loops are limited to a certain number of cycles. These limits vary between ## Example: - + !!exec $textSplit[15,18,21;,]
    $arrayLoop[age]\{
    age is $age
    } -
    - + + age is 15
    age is 18
    age is 21 -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayMap.mdx b/content/docs/(functions)/Text/Array/arrayMap.mdx index 17cb45e3..cdc4b728 100644 --- a/content/docs/(functions)/Text/Array/arrayMap.mdx +++ b/content/docs/(functions)/Text/Array/arrayMap.mdx @@ -29,10 +29,10 @@ Array loops are limited to a certain number of cycles. These limits vary between ### Example: - + !!exec $textSplit[15,18,21;,]
    $arrayMap[age]\{
    age is $age
    }
    $arrayJoin[, ]

    -
    - + + age is 15, age is 18, age is 21 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayPop.mdx b/content/docs/(functions)/Text/Array/arrayPop.mdx index e67d0fda..4fb2a7df 100644 --- a/content/docs/(functions)/Text/Array/arrayPop.mdx +++ b/content/docs/(functions)/Text/Array/arrayPop.mdx @@ -12,10 +12,10 @@ $arrayPop[array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    last one is $arrayPop
    before it is $arrayPop
    before it is $arrayPop

    -
    - + + last one is Azz
    before it is Rake
    before it is Mido -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayPush.mdx b/content/docs/(functions)/Text/Array/arrayPush.mdx index 55272e74..ac80c6fd 100644 --- a/content/docs/(functions)/Text/Array/arrayPush.mdx +++ b/content/docs/(functions)/Text/Array/arrayPush.mdx @@ -12,10 +12,10 @@ $arrayPush[Value;array name (optional)] ### Example: - + !!exec $arrayPush[Mido]
    $arrayPush[Rake]
    $arrayPush[Azz]
    $arrayJoin[/]

    -
    - + + Mido/Rake/Azz - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayRemove.mdx b/content/docs/(functions)/Text/Array/arrayRemove.mdx index f6d778ce..825c2fe8 100644 --- a/content/docs/(functions)/Text/Array/arrayRemove.mdx +++ b/content/docs/(functions)/Text/Array/arrayRemove.mdx @@ -12,10 +12,10 @@ $arrayRemove[Index;Index... (optional);array name (optional)] ### Example: - + !!exec $textSplit[Hello World, how are you?; ]
    $arrayRemove[1;2;3]
    $arrayGet[1]

    -
    - + + are - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayReverse.mdx b/content/docs/(functions)/Text/Array/arrayReverse.mdx index cf5a028d..493dc9cf 100644 --- a/content/docs/(functions)/Text/Array/arrayReverse.mdx +++ b/content/docs/(functions)/Text/Array/arrayReverse.mdx @@ -12,10 +12,10 @@ $arrayReverse[array name (optional)] ### Example: - + !!exec $textSplit[Number 1/Number 2/Number 3;/]
    $arrayReverse
    $arrayJoin[/]

    -
    - + + Number 3/Number 2/Number 1 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySearch.mdx b/content/docs/(functions)/Text/Array/arraySearch.mdx index e63dcbdd..025bd3b0 100644 --- a/content/docs/(functions)/Text/Array/arraySearch.mdx +++ b/content/docs/(functions)/Text/Array/arraySearch.mdx @@ -12,10 +12,10 @@ $arraySearch[Value to search;array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    Mido is in position: $arraySearch[Mido]
    Azz is in position: $arraySearch[Azz]
    InvalidName is in position: $arraySearch[justsomeweirdrandom]

    -
    - + + Mido is in position: 1
    Azz is in position: 3
    InvalidName is in position: -1 -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySet.mdx b/content/docs/(functions)/Text/Array/arraySet.mdx index f78ebee1..82b68e88 100644 --- a/content/docs/(functions)/Text/Array/arraySet.mdx +++ b/content/docs/(functions)/Text/Array/arraySet.mdx @@ -12,10 +12,10 @@ $arraySet[index;value;array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    Before: $arrayGet[3]
    $arraySet[3;Finkz]
    After: $arrayGet[3]

    -
    - + + Before: Azz
    After: Finkz -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayShift.mdx b/content/docs/(functions)/Text/Array/arrayShift.mdx index e79d18a5..ac7db4ce 100644 --- a/content/docs/(functions)/Text/Array/arrayShift.mdx +++ b/content/docs/(functions)/Text/Array/arrayShift.mdx @@ -12,10 +12,10 @@ $arrayShift[array name (optional)] ### Example: - + !!exec $textSplit[Mido/Rake/Azz;/]
    first one is $arrayShift
    after it is $arrayShift
    after it is $arrayShift

    -
    - + + first one is Mido
    after it is Rake
    after it is Azz -
    +
    diff --git a/content/docs/(functions)/Text/Array/arrayShuffle.mdx b/content/docs/(functions)/Text/Array/arrayShuffle.mdx index 44924d17..9b16b996 100644 --- a/content/docs/(functions)/Text/Array/arrayShuffle.mdx +++ b/content/docs/(functions)/Text/Array/arrayShuffle.mdx @@ -12,10 +12,10 @@ $arrayShuffle[array name (optional)] ### Example: - + !!exec $textSplit[Rake/Azz/Mido;/]
    $arrayShuffle
    $arrayJoin[/]

    -
    - + + Azz/Mido/Rake - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySlice.mdx b/content/docs/(functions)/Text/Array/arraySlice.mdx index 35a8a87a..76a645aa 100644 --- a/content/docs/(functions)/Text/Array/arraySlice.mdx +++ b/content/docs/(functions)/Text/Array/arraySlice.mdx @@ -12,10 +12,10 @@ $arraySlice[from;to;array name (optional)] ### Example: - + !!exec $textSplit[Mido Rake Azz Finkz; ]
    $arraySlice[2;3]
    $arrayJoin[ ]

    -
    - + + Rake Azz - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arraySort.mdx b/content/docs/(functions)/Text/Array/arraySort.mdx index 3c8277dd..5a56f39f 100644 --- a/content/docs/(functions)/Text/Array/arraySort.mdx +++ b/content/docs/(functions)/Text/Array/arraySort.mdx @@ -18,30 +18,30 @@ $arraySort[Ascending (yes/no, default is no);Sort Type;array name (optional)] ### Example (Sort Occurrences): - + !!exec $textSplit[3.Mido
    1.Azz
    2.Rake
    2.Rake
    3.Mido
    3.Mido
    4.Finkz;
    ]
    $arraySort[no;frequent]

    -
    - + + The sorted list is
    3.Mido
    2.Rake
    4.Finkz
    1.Azz

    -
    +
    ### Example (Sort Numerically): - + !!exec $textSplit[1. Azz
    3.Mido
    2.Rake
    4.Finkz;
    ]
    $arraySort[yes;num]
    The sorted list is
    $arrayJoin[
    ]

    -
    - + + The sorted list is
    1. Azz
    2.Rake
    3.Mido
    4.Finkz

    -
    +
    ### Example (Sort Alphabetically): - + !!exec $textSplit[3.Mido
    1.Azz
    2.Rake
    4.Finkz;
    ]
    $arraySort[yes;alpha]
    The sorted list is
    $arrayJoin[
    ]

    -
    - + + The sorted list is
    1. Azz
    4.Finkz
    3.Mido
    2.Rake -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayUnique.mdx b/content/docs/(functions)/Text/Array/arrayUnique.mdx index 8e7a4eb4..6054f4c8 100644 --- a/content/docs/(functions)/Text/Array/arrayUnique.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnique.mdx @@ -12,10 +12,10 @@ $arrayUnique[Separator (default ', ');Trim Element before check? (default is yes ### Example: - + !!exec $textSplit[Mido/Rake/Rake/Mido/Azz;/]
    $arrayUnique[, ]

    -
    - + + Mido, Rake, Azz - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Array/arrayUnshift.mdx b/content/docs/(functions)/Text/Array/arrayUnshift.mdx index 2038f746..dbf1e707 100644 --- a/content/docs/(functions)/Text/Array/arrayUnshift.mdx +++ b/content/docs/(functions)/Text/Array/arrayUnshift.mdx @@ -12,10 +12,10 @@ $arrayUnshift[value;array name (optional)] ### Example: - + !!exec $arrayUnshift[Mido]
    $arrayUnshift[Rake]
    $arrayUnshift[Azz]
    $arrayJoin[/]

    -
    - + + Azz/Rake/Mido - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Components/awaitMenu.mdx b/content/docs/(functions)/Text/Components/awaitMenu.mdx index f9666457..ecc442f0 100644 --- a/content/docs/(functions)/Text/Components/awaitMenu.mdx +++ b/content/docs/(functions)/Text/Components/awaitMenu.mdx @@ -18,9 +18,9 @@ The max time is `60 x (bot tier + 1)` seconds, for example for tier 3 it would b ### Example: - + !!exec You selected: $awaitMenu[
    \{title: Test}
    \{menu:
    \{id=test}
    \{placeholder=Select}
    \{min=1}
    \{max=1}
    \{option=Mido}
    \{desc=A guy}
    \{value=mido}
    \{option=Rake}
    \{desc=Another guy}
    \{value=rake}
    }
    ;$authorID;;test]

    -
    +
    ![](https://i.imgur.com/58Wzc05.gif) diff --git a/content/docs/(functions)/Text/Condition/checkCondition.mdx b/content/docs/(functions)/Text/Condition/checkCondition.mdx index 505b28e8..279247dd 100644 --- a/content/docs/(functions)/Text/Condition/checkCondition.mdx +++ b/content/docs/(functions)/Text/Condition/checkCondition.mdx @@ -12,22 +12,22 @@ $checkCondition[Expression] ### Example: - + !!exec $checkCondition[$username==Mido]

    -
    - + + true

    -
    +
    ### Example: - + !!exec $checkCondition[10<5]

    -
    - + + false - +
    ## To know more about expressions diff --git a/content/docs/(functions)/Text/Condition/conditional.mdx b/content/docs/(functions)/Text/Condition/conditional.mdx index 7788636e..7358e38c 100644 --- a/content/docs/(functions)/Text/Condition/conditional.mdx +++ b/content/docs/(functions)/Text/Condition/conditional.mdx @@ -12,12 +12,12 @@ $conditional[condition;A;B] ### Example: - + !!exec $conditional[$username==Mido;You are Mido;You are Rake]

    -
    - + + You are Mido

    -
    +
    ### Output (if Rake run the command): diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index 83bbf8c6..4ea9a145 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -24,9 +24,9 @@ Since the username of the executor is Tom it executed the if block Oh, you are Tom!
    $endIf - + Oh, you are Tom! - + ##### Example 2 only with $if and $else @@ -41,9 +41,9 @@ $else
    You are not Tom!
    $endIf - + You are not Tom! - + ##### Example 3 $if , $else and $elseif @@ -61,9 +61,9 @@ $else
    I don't know you :C
    $endIf - + You are Lisa! - + ##### Example 4 $if , $else and $elseif @@ -86,9 +86,9 @@ $else
    I don't know you :C
    $endIf - + 1.You are Lisa! - + ##### Example 5 multiplie condtions in if with && or || @@ -112,9 +112,9 @@ The Example below will execute since $username==Tom is false but the second expr You are Tom or Lisa
    $endIf - + You are Tom or Lisa - + The Example will only execute if the username is Lisa and their tag is 9999 @@ -124,9 +124,9 @@ The Example will only execute if the username is Lisa and their tag is 9999 You are Lisa with tag 9999
    $endIf
    - + You are Lisa with tag 9999 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Embed/addField.mdx b/content/docs/(functions)/Text/Embed/addField.mdx index 4bca0a13..9107fbb3 100644 --- a/content/docs/(functions)/Text/Embed/addField.mdx +++ b/content/docs/(functions)/Text/Embed/addField.mdx @@ -7,13 +7,13 @@ Adds fields to a message embed. #### Usage: `$addField[title;value;inline(yes/no default=yes)(optional)]`
    - + !!exec $addField[title;value;no]
    $addField[title2;value2]
    $addField[title3;value3]
    $addField[title4;value4]
    -
    - + + @@ -30,16 +30,16 @@ value4 - +
    $addField with hyperlinks: Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` - + !!exec $addField[title;This is a field with \[link\](https://ccommandbot.com "tooltip")] - - + + @@ -47,7 +47,7 @@ This is a description diff --git a/content/docs/(functions)/Text/Embed/addTimestamp.mdx b/content/docs/(functions)/Text/Embed/addTimestamp.mdx index 5dfd35c6..24e14776 100644 --- a/content/docs/(functions)/Text/Embed/addTimestamp.mdx +++ b/content/docs/(functions)/Text/Embed/addTimestamp.mdx @@ -7,25 +7,25 @@ Adds a timestamp to a message embed. #### Usage: `$addTimestamp` or `$addTimestamp[ms]`
    - + !!exec $addTimestamp - - + + - +
    or with specified Time - + !!exec $addTimestamp[$parseTime[13/09/2021]] - - + + - + diff --git a/content/docs/(functions)/Text/Embed/author.mdx b/content/docs/(functions)/Text/Embed/author.mdx index 5afce356..479ecd12 100644 --- a/content/docs/(functions)/Text/Embed/author.mdx +++ b/content/docs/(functions)/Text/Embed/author.mdx @@ -7,27 +7,27 @@ Adds an author to a message embed, with an optional icon url and/or hyperlink. #### Usage: `$author[text;icon url(optional);hyperlink(optional)]`
    - + !!exec $author[text] - - + + - - + + !!exec $author[text;$authorAvatar] - - + + - - + + !!exec $author[text;$authorAvatar;https://ccommandbot.com] - - + + - + diff --git a/content/docs/(functions)/Text/Embed/color.mdx b/content/docs/(functions)/Text/Embed/color.mdx index 15be427b..759cd631 100644 --- a/content/docs/(functions)/Text/Embed/color.mdx +++ b/content/docs/(functions)/Text/Embed/color.mdx @@ -13,26 +13,26 @@ Check this [page](/CodeReferences/ref.embed.colors) ## Example 1: Using it in function format
    - + !!exec $color[#0099ff] - - + + - + ## Example 2: Using In Curl Format
    - + !!exec $sendMessage[
    \{desc:You are awesome}
    \{color:#0099ff}
    ] -
    - + + You are awesome - +
    diff --git a/content/docs/(functions)/Text/Embed/description.mdx b/content/docs/(functions)/Text/Embed/description.mdx index 1b340e14..cd982154 100644 --- a/content/docs/(functions)/Text/Embed/description.mdx +++ b/content/docs/(functions)/Text/Embed/description.mdx @@ -7,27 +7,27 @@ Adds a description to a message embed. #### Usage: `$description[your text]`
    - + !!exec $description[This is a description] - - + + This is a description - + Description with hyperlinks: Usage: `\[link\](https://ccommandbot.com "tooltip(optional)")` - + !!exec $description[This is a description with \[link\](https://ccommandbot.com "tooltip")] - - + + This is a description
    hello - + diff --git a/content/docs/(functions)/Text/Embed/footer.mdx b/content/docs/(functions)/Text/Embed/footer.mdx index ebff06eb..2ebb73ef 100644 --- a/content/docs/(functions)/Text/Embed/footer.mdx +++ b/content/docs/(functions)/Text/Embed/footer.mdx @@ -7,14 +7,14 @@ Adds a footer to a message embed with an optional icon url #### Usage: `$footer[text;icon url(optional)]`
    - + !!exec $footer[This is a fantastic embed footer] - - + + This is a fantastic embed footer - + diff --git a/content/docs/(functions)/Text/Embed/image.mdx b/content/docs/(functions)/Text/Embed/image.mdx index 560caf9a..a6225401 100644 --- a/content/docs/(functions)/Text/Embed/image.mdx +++ b/content/docs/(functions)/Text/Embed/image.mdx @@ -7,13 +7,13 @@ Adds an image to a message embed #### Usage: `$image[YOUR URL HERE]`
    - + !!exec $image[$userAvatar] - - + + - + diff --git a/content/docs/(functions)/Text/Embed/thumbnail.mdx b/content/docs/(functions)/Text/Embed/thumbnail.mdx index 8879c0c3..216ba7cf 100644 --- a/content/docs/(functions)/Text/Embed/thumbnail.mdx +++ b/content/docs/(functions)/Text/Embed/thumbnail.mdx @@ -7,13 +7,13 @@ Adds a thumbnail to a message embed. #### Usage: `$thumbnail[YOUR URL HERE]`
    - + !!exec $thumbnail[$userAvatar] - - + + - + diff --git a/content/docs/(functions)/Text/Embed/title.mdx b/content/docs/(functions)/Text/Embed/title.mdx index 875c4d23..30998f14 100644 --- a/content/docs/(functions)/Text/Embed/title.mdx +++ b/content/docs/(functions)/Text/Embed/title.mdx @@ -7,25 +7,25 @@ Adds a title to a message embed. #### Usage: `$title[YOUR TITLE TEXT HERE;url(optional)]`
    - + !!exec $title[This is a title] - - + + - + Or with url - + !!exec $title[This is a title;https://discord.com] - - + + - + diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx index 6997917e..92f889d0 100644 --- a/content/docs/(functions)/Text/Math/abbreviate.mdx +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -12,12 +12,12 @@ Abbreviation to: #### Usage: `$abbreviate[number]`
    - + !!exec $abbreviate[6000] - - + + 6k - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/abs.mdx b/content/docs/(functions)/Text/Math/abs.mdx index 42ff0e72..eacdc5d8 100644 --- a/content/docs/(functions)/Text/Math/abs.mdx +++ b/content/docs/(functions)/Text/Math/abs.mdx @@ -12,10 +12,10 @@ $abs[Number] ## Example - + !!exec $abs[-25] - - + + 25 - + diff --git a/content/docs/(functions)/Text/Math/ceil.mdx b/content/docs/(functions)/Text/Math/ceil.mdx index 77c2548d..ea24e89e 100644 --- a/content/docs/(functions)/Text/Math/ceil.mdx +++ b/content/docs/(functions)/Text/Math/ceil.mdx @@ -12,20 +12,20 @@ $ceil[Number] ### Example: - + !!exec $ceil[1.3]

    -
    - + + 2

    -
    +
    ### Example: - + !!exec $ceil[3.5]

    -
    - + + 4 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Math/divide.mdx b/content/docs/(functions)/Text/Math/divide.mdx index 00d7df48..e700dd7f 100644 --- a/content/docs/(functions)/Text/Math/divide.mdx +++ b/content/docs/(functions)/Text/Math/divide.mdx @@ -7,12 +7,12 @@ divides (a) number(s) from each other, from left to right #### Usage: `$divide[10;2;...]`
    - + !!exec $divide[10;2] - - + + 5 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/floor.mdx b/content/docs/(functions)/Text/Math/floor.mdx index 0ed4fd16..2f9e6223 100644 --- a/content/docs/(functions)/Text/Math/floor.mdx +++ b/content/docs/(functions)/Text/Math/floor.mdx @@ -12,20 +12,20 @@ $floor[Number] ### Example: - + !!exec $floor[2.4]

    -
    - + + 2

    -
    +
    ### Example: - + !!exec $floor[2.9]

    -
    - + + 2 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Math/math.mdx b/content/docs/(functions)/Text/Math/math.mdx index b7c96d47..62c089b5 100644 --- a/content/docs/(functions)/Text/Math/math.mdx +++ b/content/docs/(functions)/Text/Math/math.mdx @@ -9,18 +9,18 @@ quantifier(s) in between. e#### Usage: `$math[Expression;Name1=Value1;Name1=Value2]`
    - + !!exec $math[10*(2+5)/7*8-2] - - + + 78 - - + + !!exec Networth = $math[cash+bank;cash=100;bank=500] - - + + Networth = 600 - + diff --git a/content/docs/(functions)/Text/Math/mathMax.mdx b/content/docs/(functions)/Text/Math/mathMax.mdx index 79790d4b..461fbe37 100644 --- a/content/docs/(functions)/Text/Math/mathMax.mdx +++ b/content/docs/(functions)/Text/Math/mathMax.mdx @@ -12,10 +12,10 @@ $MathMax[Number 1;Number 2;Number 3;...] ### Example: - + !!exec $MathMax[100;50;150]

    -
    - + + 150 - +
    diff --git a/content/docs/(functions)/Text/Math/mathMin.mdx b/content/docs/(functions)/Text/Math/mathMin.mdx index 84d1d919..cd1c550d 100644 --- a/content/docs/(functions)/Text/Math/mathMin.mdx +++ b/content/docs/(functions)/Text/Math/mathMin.mdx @@ -12,10 +12,10 @@ $mathMin[Number 1;Number 2;Number 3;...] ### Example: - + !!exec $mathMin[100;50;150]

    -
    - + + 50 - +
    diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx index 42fb0c62..32265fa5 100644 --- a/content/docs/(functions)/Text/Math/modulo.mdx +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -7,12 +7,12 @@ calculates the remainder of a division operation #### Usage: `$modulo[10;2;...]`
    - + !!exec $modulo[10;2] - - + + 0 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/multi.mdx b/content/docs/(functions)/Text/Math/multi.mdx index 25a1a007..a57c0a96 100644 --- a/content/docs/(functions)/Text/Math/multi.mdx +++ b/content/docs/(functions)/Text/Math/multi.mdx @@ -7,12 +7,12 @@ Multiplies (a) number(s) with each other #### Usage: `$multi[10;4;...]`
    - + !!exec $multi[10;4] - - + + 40 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx index 7cd32a85..7992ce98 100644 --- a/content/docs/(functions)/Text/Math/ordinal.mdx +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -8,12 +8,12 @@ adds the correct suffix after the number #### Usage: `$ordinal[number]`
    - + !!exec $ordinal[2] - - + + 2nd - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx index 39f562d6..53f6aa34 100644 --- a/content/docs/(functions)/Text/Math/round.mdx +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -7,12 +7,12 @@ Rounds the number to the nearest integer. #### Usage: `$round[number]`
    - + !!exec $round[10.897890790] - - + + 11 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx index e30fb9db..490aca7f 100644 --- a/content/docs/(functions)/Text/Math/roundTenth.mdx +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -7,12 +7,12 @@ Rounds the number to the nearest decimal specified in `toFixed` #### Usage: `$roundTenth[number;tofixed]`
    - + !!exec $roundTenth[10.877890790;2] - - + + 10.88 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/sub.mdx b/content/docs/(functions)/Text/Math/sub.mdx index c7529ee5..c357d27c 100644 --- a/content/docs/(functions)/Text/Math/sub.mdx +++ b/content/docs/(functions)/Text/Math/sub.mdx @@ -7,12 +7,12 @@ Subtracts (a) number(s) from each other #### Usage: `$sub[10;4;...]`
    - + !!exec $sub[10;4] - - + + 6 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/sum.mdx b/content/docs/(functions)/Text/Math/sum.mdx index 031aa2c1..d6a1b170 100644 --- a/content/docs/(functions)/Text/Math/sum.mdx +++ b/content/docs/(functions)/Text/Math/sum.mdx @@ -7,12 +7,12 @@ Sum's up the given args #### Usage: `$sum[1;3;...]`
    - + !!exec $sum[1;3] - - + + 4 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx index 26de3e7c..0dd1f63c 100644 --- a/content/docs/(functions)/Text/Math/truncate.mdx +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -7,12 +7,12 @@ Truncates the number to 0 decimals. #### Usage: `$truncate[number]`
    - + !!exec $truncate[10.897890790] - - + + 10 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/ObjectCreate.mdx index 0fdd03e1..c511a025 100644 --- a/content/docs/(functions)/Text/Object/ObjectCreate.mdx +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -8,12 +8,12 @@ Use `$getObjectProperty` or `$objectGet` to get a key value. #### Usage: `$objectCreate[JSON string]`
    - + !!exec $objectCreate[\{"Name":"Wiki","Level":20,"isExpert":true,"userId":327996784012034050}] Hi, my name is $objectget[Name]. Level $objectget[Level]. Am i expert? $objectget[isExpert]. My user id is $objectget[userId] - - + + Hi, my name is Wiki. Level 20. Am i expert? true. My user id is 327996784012034050 - + diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/ObjectGet.mdx index e5ce7cc7..3c4c7a5b 100644 --- a/content/docs/(functions)/Text/Object/ObjectGet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectGet.mdx @@ -7,12 +7,12 @@ Get a object value/property by key, if the key is not found then return `undefin #### Usage: `$objectGet[key]`
    - + !!exec $createObject[\{"BotName":"Custom Commands","BotOwner":"Rake","Contributor":"Wiki"}] Bot name: $objectGet[BotName], Owner: $objectGet[BotOwner], Docs Contributor: $objectGet[Contributor] - - + + Bot name: Custom Commands, Owner: Rake, Docs Contributor: Wiki - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx index 1c0c92e6..d8f61810 100644 --- a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx +++ b/content/docs/(functions)/Text/Object/ObjectIncrease.mdx @@ -16,20 +16,20 @@ $ObjectIncrease[Key;Amount] ### Example 1: - + !!exec $objectIncrease[Mido;10]
    $objectIncrease[Rake;5]
    $objectGet

    -
    - + + \{"Mido":10,"Rake":5}

    -
    +
    ### Example 2: - + !!exec $objectIncrease[Mido;10]
    $objectIncrease[Mido;x*2]
    $objectGet

    -
    - + + \{"Mido":20} - +
    diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index ed13f416..2f3f2b6d 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -22,16 +22,16 @@ How to check if `name` key exists !!exec $objectSet[name;Mido] $ObjectKeyExists[name] - + true - + !!exec $objectSet[username;mido] $ObjectKeyExists[name] - + false - + ##### Related functions: `$ObjectKeys` `$ObjectCreate` `$ObjectSet` diff --git a/content/docs/(functions)/Text/Object/ObjectKeys.mdx b/content/docs/(functions)/Text/Object/ObjectKeys.mdx index 76118300..9e89e674 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeys.mdx @@ -12,20 +12,20 @@ $ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2 ### Example: - + !!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $ObjectKeys[/]

    -
    - + + user1/user2

    -
    +
    ### Example (Getting Nested Property Keys): - + !!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $ObjectKeys[/;user1]

    -
    - + + name/id/weapon - +
    diff --git a/content/docs/(functions)/Text/Object/ObjectLoop.mdx b/content/docs/(functions)/Text/Object/ObjectLoop.mdx index d9c3b888..6ab35f8d 100644 --- a/content/docs/(functions)/Text/Object/ObjectLoop.mdx +++ b/content/docs/(functions)/Text/Object/ObjectLoop.mdx @@ -29,10 +29,10 @@ Array loops are limited to a certain number of cycles. These limits vary between ### Example: - + !!exec $objectSet[Mido;Sword]
    $objectSet[Rake;Staff]
    $objectLoop[name;weapon;index]\{
    $index. $name has $weapon
    }

    -
    - + + 1. Mido has Sword
    2. Rake has Staff -
    +
    diff --git a/content/docs/(functions)/Text/Object/ObjectMerge.mdx b/content/docs/(functions)/Text/Object/ObjectMerge.mdx index 71c70334..2a75f437 100644 --- a/content/docs/(functions)/Text/Object/ObjectMerge.mdx +++ b/content/docs/(functions)/Text/Object/ObjectMerge.mdx @@ -12,20 +12,20 @@ $ObjectMerge[object] ### Example: - + !!exec $objectSet[name;Mido]
    $objectMerge[\{"country":"EG"}]
    $objectGet

    -
    - + + \{"name":"Mido", "country":"EG"}

    -
    +
    ### Example (Nested Keys): - + !!exec $objectSet[user;name;Mido]
    $objectSet[user;country;EG]
    Before: $objectGet
    $objectMerge[user;\{"name":"Rake","country":"DE"}]
    After: $objectGet

    -
    - + + Before: \{"user":\{"name":"Mido","country":"EG"}}
    After: \{"user":\{"name":"Rake","country":"DE"}} -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/ObjectRemove.mdx b/content/docs/(functions)/Text/Object/ObjectRemove.mdx index f47da101..2c6867dd 100644 --- a/content/docs/(functions)/Text/Object/ObjectRemove.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRemove.mdx @@ -12,16 +12,16 @@ $ObjectRemove[Key;Key...(Optional)] ### Example: - + !!exec $objectSet[Name;Mido]
    $objectSet[Country;EG]
    Before: $getObject
    $objectRemove[Name]
    After: $getObject -
    - + + Before: \{"Name":"Mido","Country":"EG"}
    After: \{"Country":"EG"} -
    +
    diff --git a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx index 6286ccdb..abc484ed 100644 --- a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx +++ b/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx @@ -12,20 +12,20 @@ $objectRenameKey[old key;new key name] ### Example: - + !!exec $objectSet[name;Mido]
    Before: $objectGet
    $objectRenameKey[name;nick]
    After: $objectGet

    -
    - + + Before: \{"name":"Mido"}
    After: \{"nick":"Mido"}

    -
    +
    ### Example (Nested Key): - + !!exec $objectSet[user;name;Mido]
    Before: $objectGet
    $objectRenameKey[user;name;nick]
    After: $objectGet

    -
    - + + Before: \{"user":\{"name":"Mido"}}
    After: \{"user":\{"nick":"Mido"}} -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index c57f546d..67b1dd25 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -7,12 +7,12 @@ set an object property value by key #### Usage: `$objectSet[key;key;key....;value]`
    - + !!exec $objectCreate[\{"name":"Wiki"}] $objectSet[name;Rake] $objectSet[tag;0001] $getObject - - + + \{"name":"Rake","tag":"0001"} - + diff --git a/content/docs/(functions)/Text/Object/ObjectValues.mdx b/content/docs/(functions)/Text/Object/ObjectValues.mdx index 5232c5a9..6d294dfe 100644 --- a/content/docs/(functions)/Text/Object/ObjectValues.mdx +++ b/content/docs/(functions)/Text/Object/ObjectValues.mdx @@ -12,20 +12,20 @@ $ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property ### Example (Get values of nested property): - + !!exec $ObjectSet[name;Mido]
    $objectSet[age;300]
    $ObjectValues

    -
    - + + Mido, 300

    -
    +
    ### Example: - + !!exec $objectSet[user;name;Mido]
    $objectSet[user;id;1234]
    $objectSet[user;weapon;Sword]
    $ObjectValues[/;user]

    -
    - + + Mido/1234/Sword - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/createObject.mdx b/content/docs/(functions)/Text/Object/createObject.mdx index bc770c29..5a74ee19 100644 --- a/content/docs/(functions)/Text/Object/createObject.mdx +++ b/content/docs/(functions)/Text/Object/createObject.mdx @@ -12,12 +12,12 @@ $createObject[object string] ### Example: - + !!exec $createObject[\{"name":"Mido","age":110}]
    Your name is $objectGet[name]
    Your age is $objectGet[age]

    -
    - + + Your name is Mido
    Your age is 110 -
    +
    diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx index a878f052..022441a7 100644 --- a/content/docs/(functions)/Text/Object/getObject.mdx +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -8,11 +8,11 @@ returns the JSON of the created/modified object
    - + !!exec $createobject[\{"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"}] Without spaces: $getobject With spaces: $getobject[1] - - + + Without spaces: \{"Owner":"Rake","Manager":"Mika","Dev":"Mido","Contributor":"Wiki"} With spaces: \{
    "Owner": "Rake",
    @@ -20,7 +20,7 @@ With spaces: \{
    "Dev": "Mido",
    "Contributor": "Wiki"
    } -
    +
    diff --git a/content/docs/(functions)/Text/Regex/regexCheck.mdx b/content/docs/(functions)/Text/Regex/regexCheck.mdx index b901f509..42745275 100644 --- a/content/docs/(functions)/Text/Regex/regexCheck.mdx +++ b/content/docs/(functions)/Text/Regex/regexCheck.mdx @@ -12,20 +12,20 @@ $regexCheck[Text;Regex;Flags] ### Example (Check If Text is letters): - + !!exec $regexCheck[ABC;^[a-zA-Z]+$]

    -
    - + + true

    -
    +
    ### Example: - + !!exec $regexCheck[A2B;^[a-zA-Z]+$]

    -
    - + + false - +
    diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx index c777e2ab..c5dee16d 100644 --- a/content/docs/(functions)/Text/Regex/regexMatch.mdx +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -13,32 +13,32 @@ in case flag is not `g` it will return the whole matched text and matched groups ### Example (Find the first number): - + !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+]

    -
    - + + 50

    -
    +
    ### Example (Find all numbers): - + !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;all;/]

    -
    - + + 50/18

    -
    +
    ### Example (Find 2nd number only): - + !!exec $regexMatch[Rake owns 50$ and has 18 properties.;\d+;g;1]

    -
    - + + 18 - +
    diff --git a/content/docs/(functions)/Text/Regex/regexReplace.mdx b/content/docs/(functions)/Text/Regex/regexReplace.mdx index c095ba82..e2d6cd9c 100644 --- a/content/docs/(functions)/Text/Regex/regexReplace.mdx +++ b/content/docs/(functions)/Text/Regex/regexReplace.mdx @@ -12,10 +12,10 @@ $regexReplace[text;regex;flags;new text] ### Example 1: - + !!exec $regexReplace[My age is 900 years old.;\d+;g;[SECRET AGE]]

    -
    - + + My age is [SECRET AGE] years old. - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx index 5f1dd54c..7b7cb35f 100644 --- a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx +++ b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx @@ -9,12 +9,12 @@ Uses a regular expression to replace matching queries
    - + !!exec $replaceTextWithRegex[Today is my birthday;/(birthday|party)/;gi;birthday 🎉] - - + + Today is my birthday 🎉 - + diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index b50b7b69..8241304d 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -7,12 +7,12 @@ Returns whether the channel is nsfw or not #### Usage: `$channelNSFW[channelID]`
    - + !!exec $channelNSFW[$channelID] - - + + no - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/charCount.mdx b/content/docs/(functions)/Text/charCount.mdx index d7824094..e4f90a77 100644 --- a/content/docs/(functions)/Text/charCount.mdx +++ b/content/docs/(functions)/Text/charCount.mdx @@ -9,12 +9,12 @@ this functions returns the number of characters in the provided text
    - + !!exec $charCount[hello] - - + + 5 - + diff --git a/content/docs/(functions)/Text/checkContains.mdx b/content/docs/(functions)/Text/checkContains.mdx index e544b52b..c6fbc209 100644 --- a/content/docs/(functions)/Text/checkContains.mdx +++ b/content/docs/(functions)/Text/checkContains.mdx @@ -12,20 +12,20 @@ $checkContains[message;text1;text2;...] ### Example 1: - + !!exec $checkContains[Mido is good;good]

    -
    - + + true

    -
    +
    ### Example 2: - + !!exec $checkContains[Mido is good;bad]

    -
    - + + false - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/customEmoji.mdx b/content/docs/(functions)/Text/customEmoji.mdx index d515f979..da4f917f 100644 --- a/content/docs/(functions)/Text/customEmoji.mdx +++ b/content/docs/(functions)/Text/customEmoji.mdx @@ -12,22 +12,22 @@ $customEmoji[name or id] ### Example (Using Custom Emoji Name): - + !!exec $customEmoji[yes]

    -
    - + +
    -
    +
    ### Example (Using Custom Emoji ID): - + !!exec $customEmoji[833252579873259521]

    -
    - + +
    -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx index 0d30b1ee..b81f7311 100644 --- a/content/docs/(functions)/Text/disableMentions.mdx +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -7,12 +7,12 @@ will not ping a user even though mentioned #### Usage: `$disableMentions`
    - + !!exec $disableMentions Member - - + + @Member - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/filterMessage.mdx b/content/docs/(functions)/Text/filterMessage.mdx index a9f34c33..f137a1d6 100644 --- a/content/docs/(functions)/Text/filterMessage.mdx +++ b/content/docs/(functions)/Text/filterMessage.mdx @@ -12,10 +12,10 @@ $filterMessage[message;letterOrSymbols] ### Example: - + !!exec $filterMessage[Hello World;lo]

    -
    - + + He Wrd - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/findChars.mdx b/content/docs/(functions)/Text/findChars.mdx index 2e7984b0..26c5f662 100644 --- a/content/docs/(functions)/Text/findChars.mdx +++ b/content/docs/(functions)/Text/findChars.mdx @@ -16,9 +16,9 @@ $findChars[string] !!exec $findChars[$username] - + Member - + diff --git a/content/docs/(functions)/Text/findNumbers.mdx b/content/docs/(functions)/Text/findNumbers.mdx index 28cd038a..23b7b2db 100644 --- a/content/docs/(functions)/Text/findNumbers.mdx +++ b/content/docs/(functions)/Text/findNumbers.mdx @@ -12,10 +12,10 @@ $findNumbers[text;separator] ### Example: - + !!exec $findNumbers[My age is 99 years old, and located 15 miles away from nearest station.;, ]

    -
    - + + 99, 15 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/findSpecialChars.mdx b/content/docs/(functions)/Text/findSpecialChars.mdx index ad039450..9263aa4b 100644 --- a/content/docs/(functions)/Text/findSpecialChars.mdx +++ b/content/docs/(functions)/Text/findSpecialChars.mdx @@ -16,9 +16,9 @@ $findSpecialChars[string] !!exec $findSpecialChars[$username] - + $/? - + diff --git a/content/docs/(functions)/Text/isChannelMention.mdx b/content/docs/(functions)/Text/isChannelMention.mdx index 801bb371..1be290a5 100644 --- a/content/docs/(functions)/Text/isChannelMention.mdx +++ b/content/docs/(functions)/Text/isChannelMention.mdx @@ -12,20 +12,20 @@ $isChannelMention[Text] ### Example: - + !!exec $isChannelMention[abc]

    -
    - + + false

    -
    +
    ### Example: - + !!exec $isChannelMention[<#1234567890>]

    -
    - + + true - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/isUserMention.mdx b/content/docs/(functions)/Text/isUserMention.mdx index 7e96fc09..0ed6745c 100644 --- a/content/docs/(functions)/Text/isUserMention.mdx +++ b/content/docs/(functions)/Text/isUserMention.mdx @@ -12,20 +12,20 @@ $isUserMention[Text] ### Example: - + !!exec $isUserMention[abc]

    -
    - + + false

    -
    +
    ### Example: - + !!exec $isUserMention[<@!1234567890>]

    -
    - + + true - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx index 9e02d083..02f3b5ed 100644 --- a/content/docs/(functions)/Text/isandhas/isBoosting.mdx +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -8,12 +8,12 @@ checks if a user is Boosting ,returns true or false Example:
    - + !!exec $isBoosting[$authorID] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx index 14c4dab0..b224b11a 100644 --- a/content/docs/(functions)/Text/isandhas/isBot.mdx +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -8,12 +8,12 @@ checks if the user is a bot or not ,returns true or false Example:
    - + !!exec $isbot | $isbot[891210194925809695] - - + + false | true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isConnected.mdx b/content/docs/(functions)/Text/isandhas/isConnected.mdx index 874a35ec..05c70e7d 100644 --- a/content/docs/(functions)/Text/isandhas/isConnected.mdx +++ b/content/docs/(functions)/Text/isandhas/isConnected.mdx @@ -12,10 +12,10 @@ $isConnected[User ID] ### Example: - + !!exec Is $username Connected To Channel?: $isConnected

    -
    - + + Is Mido Connected To Channel?: true - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx index 0d5f99dc..ec3b5746 100644 --- a/content/docs/(functions)/Text/isandhas/isDeafened.mdx +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -8,12 +8,12 @@ checks if a user is Deafened ,returns true,false or undefined Example:
    - + !!exec $isDeafened[$authorID] - - + + undefined - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx index 542bbd44..5e6ee6a5 100644 --- a/content/docs/(functions)/Text/isandhas/isEmoji.mdx +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -8,12 +8,12 @@ Checks if the given Emoji is a default emoji ,returns true or false Example:
    - + !!exec $isEmoji[:smile:] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx index 962db884..3b38f93c 100644 --- a/content/docs/(functions)/Text/isandhas/isHoisted.mdx +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -8,12 +8,12 @@ Checks if the given id of role is hoisted above all the other roles ,returns tru Example:
    - + !!exec $isHoisted[$roleID[test]] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx index f7af4969..6a308666 100644 --- a/content/docs/(functions)/Text/isandhas/isManaged.mdx +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -8,12 +8,12 @@ Checks if the given id of role is Managed ,returns true or false Example:
    - + !!exec $isManaged[$roleID[Custom Command]] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx index 53fb7592..c1e4f093 100644 --- a/content/docs/(functions)/Text/isandhas/isMentionable.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -8,12 +8,12 @@ Checks if the given id of role is Mentionable ,returns true or false Example:
    - + !!exec $isMentionable[$roleID[test]] - - + + false - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx index 0a936e53..02fd8fdb 100644 --- a/content/docs/(functions)/Text/isandhas/isMentioned.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -8,12 +8,12 @@ Checks if the given id of userID/roleID/channelID/everyone is Mentioned ,returns Example:
    - + !!exec $mention $isMentioned[$authorID] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx index a6d09e01..b11e25e6 100644 --- a/content/docs/(functions)/Text/isandhas/isMuted.mdx +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -8,12 +8,12 @@ checks if a user is selfMuted ,returns true,false or undefined Example:
    - + !!exec $isMuted[$authorID] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index 5b2c6d5a..2152d428 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -7,12 +7,12 @@ Checks if a string is a valid number. #### Usage: `$isNumber[number]`
    - + !!exec $isNumber[10] | $isNumber[number] - - + + true | false - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isStreaming.mdx b/content/docs/(functions)/Text/isandhas/isStreaming.mdx index 6c49c72a..e292c7d6 100644 --- a/content/docs/(functions)/Text/isandhas/isStreaming.mdx +++ b/content/docs/(functions)/Text/isandhas/isStreaming.mdx @@ -12,10 +12,10 @@ $isStreaming[User ID] ### Example: - + !!exec Is $username Streaming?: $isStreaming

    -
    - + + Is Mido Streaming?: false - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx index 1856acf8..a85502fe 100644 --- a/content/docs/(functions)/Text/isandhas/isTicket.mdx +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -8,12 +8,12 @@ checks if a channel is a ticket or not created with $newTicket function,returns Example:
    - + !!exec $isTicket | $isTicket[891210194925809695] - - + + false | true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx index 53e46f89..02c0cbce 100644 --- a/content/docs/(functions)/Text/isandhas/isValidHex.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -8,12 +8,12 @@ checks if the given int or hex code or [color name](/CodeReferences/ref.embed.co Example:
    - + !!exec $isValidHex[#ffffff] , $isValidHex[test], $isValidHex[Red] - - + + true , false, true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx index f40902ed..6e94597f 100644 --- a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -8,12 +8,12 @@ checks if the given Invite code is valid ,returns true,false Example:
    - + !!exec $isValidInvite[hjhjkh] - - + + false - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx index d966e657..c2ffbd64 100644 --- a/content/docs/(functions)/Text/isandhas/isValidLink.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -8,12 +8,12 @@ checks if the given Link / url is valid ,returns true,false Example:
    - + !!exec $isValidLink[https://example.com] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx index 701090f5..08e64f67 100644 --- a/content/docs/(functions)/Text/isandhas/isValidObject.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -8,12 +8,12 @@ checks if the given Object is valid ,returns true,false Example:
    - + !!exec $isValidObject[\{"key":"value"}] - - + + true - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/mentioned.mdx b/content/docs/(functions)/Text/mentioned.mdx index 9314d429..0c81b5e6 100644 --- a/content/docs/(functions)/Text/mentioned.mdx +++ b/content/docs/(functions)/Text/mentioned.mdx @@ -12,10 +12,10 @@ $mentioned[mention number or all;return author ID (yes/no)(optional)] ### Example: - + !!exec First mention is $mentioned[1]
    All mentions are: $mentioned[all]

    -
    - + + First mention is 788361834360864808
    All mentions are: 788361834360864808, 840526017260945468 -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/mentionedChannels.mdx b/content/docs/(functions)/Text/mentionedChannels.mdx index 356dfe51..90a4230e 100644 --- a/content/docs/(functions)/Text/mentionedChannels.mdx +++ b/content/docs/(functions)/Text/mentionedChannels.mdx @@ -7,12 +7,12 @@ Returns the ID of one of the channels that was mentioned by the user #### Usage: `$mentionedChannels[number]`
    - + !!exec $mentionedChannels[1] user-support - - + + 869243919697846379 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/mentionedRoles.mdx b/content/docs/(functions)/Text/mentionedRoles.mdx index 0aeab349..7b7b6de6 100644 --- a/content/docs/(functions)/Text/mentionedRoles.mdx +++ b/content/docs/(functions)/Text/mentionedRoles.mdx @@ -7,12 +7,12 @@ Returns the ID of one of the roles that was mentioned by the user #### Usage: `$mentionedRoles[number]`
    - + !!exec $mentionedRoles[1] Support - - + + 869243918787686432 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/noMentionMessage.mdx b/content/docs/(functions)/Text/noMentionMessage.mdx index b9b8ac98..cdc74b51 100644 --- a/content/docs/(functions)/Text/noMentionMessage.mdx +++ b/content/docs/(functions)/Text/noMentionMessage.mdx @@ -8,12 +8,12 @@ User's message without any mentions. (members, roles & channels)
    - + !!exec aaa Member $noMentionMessage - - + + aaa - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/numToWord.mdx b/content/docs/(functions)/Text/numToWord.mdx index e81508d6..8e46c235 100644 --- a/content/docs/(functions)/Text/numToWord.mdx +++ b/content/docs/(functions)/Text/numToWord.mdx @@ -13,10 +13,10 @@ $numToWord[Number] ### Example: - + !!exec $numToWord[1001]

    -
    - + + one thousand one - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/numberSeparator.mdx b/content/docs/(functions)/Text/numberSeparator.mdx index 7b0ba2f2..b76dff52 100644 --- a/content/docs/(functions)/Text/numberSeparator.mdx +++ b/content/docs/(functions)/Text/numberSeparator.mdx @@ -12,10 +12,10 @@ $numberSeparator[number;separator (optional)] ### Example: - + !!exec Your number is $numberSeparator[3352311]

    -
    - + + Your number is 3,352,311 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx index 165144d1..1ce16bb8 100644 --- a/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx +++ b/content/docs/(functions)/Text/only/onlyIfMessageContains.mdx @@ -12,10 +12,10 @@ $onlyIfMessageContains[text;word1;word2;...;error message] ## Example - + !!exec $onlyIfMessageContains[$username[$authorID];mem;My username doesn't contain `mem`] My username contains `mem`!

    -
    - + + My username contains `mem`

    -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/padLeft.mdx b/content/docs/(functions)/Text/padLeft.mdx index a6b2218d..9e02c02f 100644 --- a/content/docs/(functions)/Text/padLeft.mdx +++ b/content/docs/(functions)/Text/padLeft.mdx @@ -12,10 +12,10 @@ $padLeft[Text;Max Length;Filling Text] ### Example: - + !!exec $padLeft[5;2;0]
    $padLeft[13;2;0]

    -
    - + + 05
    13 -
    +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/padRight.mdx b/content/docs/(functions)/Text/padRight.mdx index 496307d4..0e99ac1b 100644 --- a/content/docs/(functions)/Text/padRight.mdx +++ b/content/docs/(functions)/Text/padRight.mdx @@ -12,10 +12,10 @@ $padRight[Text;Max Length;Filling Text] ### Example: - + !!exec $padRight[I like custom commands;25;.]

    -
    - + + I like custom commands... - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/repeatMessage.mdx b/content/docs/(functions)/Text/repeatMessage.mdx index 6f860921..2d219126 100644 --- a/content/docs/(functions)/Text/repeatMessage.mdx +++ b/content/docs/(functions)/Text/repeatMessage.mdx @@ -9,12 +9,12 @@ this functions repeats the provided message x times
    - + !!exec $repeatMessage[3;a] - - + + aaa - + diff --git a/content/docs/(functions)/Text/replaceText.mdx b/content/docs/(functions)/Text/replaceText.mdx index 37cc06ed..deffb8a6 100644 --- a/content/docs/(functions)/Text/replaceText.mdx +++ b/content/docs/(functions)/Text/replaceText.mdx @@ -9,12 +9,12 @@ Replaces `A` with `X` in `TEXT`
    - + !!exec $replaceText[testing;ing;] - - + + test - + diff --git a/content/docs/(functions)/Text/stringEndsWith.mdx b/content/docs/(functions)/Text/stringEndsWith.mdx index 76d18a9e..7aa83682 100644 --- a/content/docs/(functions)/Text/stringEndsWith.mdx +++ b/content/docs/(functions)/Text/stringEndsWith.mdx @@ -12,20 +12,20 @@ $stringEndsWith[message;text] ### Example: - + !!exec $stringEndsWith[Hello World;World]

    -
    - + + true

    -
    +
    ### Example: - + !!exec $stringEndsWith[Hello World;Discord]

    -
    - + + false - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/stringStartsWith.mdx b/content/docs/(functions)/Text/stringStartsWith.mdx index 8c255357..b1aa7c00 100644 --- a/content/docs/(functions)/Text/stringStartsWith.mdx +++ b/content/docs/(functions)/Text/stringStartsWith.mdx @@ -12,20 +12,20 @@ $stringStartsWith[message;text] ### Example: - + !!exec $stringStartsWith[Hello World;Hello]

    -
    - + + true

    -
    +
    ### Example: - + !!exec $stringStartsWith[Hello World;Hate]

    -
    - + + false - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/textLength.mdx b/content/docs/(functions)/Text/textLength.mdx index 0d15d168..55937204 100644 --- a/content/docs/(functions)/Text/textLength.mdx +++ b/content/docs/(functions)/Text/textLength.mdx @@ -12,20 +12,20 @@ $textLength or $textLength[text] ### Example: - + !!exec $textLength[Mido]

    -
    - + + 4

    -
    +
    ### Example: - + !!exec $textLength[Hello]

    -
    - + + 6 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/textShuffle.mdx b/content/docs/(functions)/Text/textShuffle.mdx index 434f95c1..0a4a2ac8 100644 --- a/content/docs/(functions)/Text/textShuffle.mdx +++ b/content/docs/(functions)/Text/textShuffle.mdx @@ -13,10 +13,10 @@ $textShuffle[Text;Separator (optional)] ### Example: - + !!exec $textShuffle[Hello WOrld]

    -
    - + + rHl ldeOolW - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/textSlice.mdx b/content/docs/(functions)/Text/textSlice.mdx index 86d0ee97..caaa1485 100644 --- a/content/docs/(functions)/Text/textSlice.mdx +++ b/content/docs/(functions)/Text/textSlice.mdx @@ -12,10 +12,10 @@ $textSlice[text;x;y (optional)] ### Example: - + !!exec $textSlice[Hello world;0;5]

    -
    - + + Hello - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx index ecb072ae..14ab2787 100644 --- a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -10,12 +10,12 @@ fields work as splitters/seperators and new indexes for this new text. #### Usage: `$advancedTextSplit[text;split;index;split;index;...]`
    - + !!exec $advancedTextSplit[Wow, what a nice day, i'll go outside;,;2] /* Will get the second index */ - - + + what a nice day - + diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx index 4496c8c3..9ba6a2db 100644 --- a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -7,12 +7,12 @@ adds an array to the end of an array from `$textsplit` #### Usage: `$concatTextSplit[text;separator(optional, default = ,)]`
    - + !!exec $textsplit[Rake Mido; ]
    $concatTextSplit[Wiki,Mika;,]
    $arrayJoin[ ] -
    - + + Rake Mido Wiki Mika - +
    diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx index 2304c5c0..01223f74 100644 --- a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -7,12 +7,12 @@ adds an element to an array from `$textsplit` or replaces the value by index of #### Usage: `$editTextSplitElement[index;new value]`
    - + !!exec $textsplit[Wiki Rake; ]
    $editTextSplitElement[1;Mido]
    $arrayJoin[ ] -
    - + + Mido Rake - +
    diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx index c4e55434..1706e775 100644 --- a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -7,12 +7,12 @@ returns the index of the first occurrence of a value in an array from `$textspli #### Usage: `$findTextSplitIndex[value]`
    - + !!exec $textsplit[Rake Wiki Mika Mido; ]
    $findTextSplitIndex[Wiki] -
    - + + 2 - +
    diff --git a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx index 838fd6ea..f39faea1 100644 --- a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx +++ b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx @@ -7,16 +7,16 @@ Returns the amount of objects created by `$textSplit`
    - + !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ]
    $getTextSplitLength
    -
    - + + 10 - +
    diff --git a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx index d8e64af9..f923031b 100644 --- a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx +++ b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx @@ -6,16 +6,16 @@ Joins the `$textSplit` indexes by a given separator
    - + !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ]
    $joinSplitText[-]
    -
    - + + 1-2-3-4-5-6-7-8-9-10 - +
    diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx index 4f3be50b..5a2a7561 100644 --- a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -7,12 +7,12 @@ Splits a text with `separator1`, then joins with it `separator2` every `x` times #### Usage: `$spliceTextJoin[text;separator1;separator2;separator3;every]`
    - + !!exec $spliceTextJoin[1 2 3 4 5 6 7; ;+;-;2] - - + + 1+2-3+4-5+6 - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index 9678963e..f9577403 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -7,16 +7,16 @@ returns the element by index from `$textSplit` #### Usage: `$splitText[index]`
    - + !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ]
    $splitText[2]
    -
    - + + 2 - +
    diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index 5dfd2ae8..f423a49d 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -8,11 +8,11 @@ Splits the provided text with `seperator` and creates an array. To access them u #### Usage: `$textSplit[text;separator(optional, default = ,)]`
    - + !!exec $textSplit[1 2 3 4 5 6 7 8 9 10; ] - + **Function difficulty:** diff --git a/content/docs/(functions)/Text/textTrim.mdx b/content/docs/(functions)/Text/textTrim.mdx index 20a08a6f..6c7e33e8 100644 --- a/content/docs/(functions)/Text/textTrim.mdx +++ b/content/docs/(functions)/Text/textTrim.mdx @@ -12,10 +12,10 @@ $textTrim[text] ### Example: - + !!exec $textTrim[ My name is Mido ]

    -
    - + + My name is Mido - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/toLocaleUpperCase.mdx b/content/docs/(functions)/Text/toLocaleUpperCase.mdx index 708f85f1..ced93ed1 100644 --- a/content/docs/(functions)/Text/toLocaleUpperCase.mdx +++ b/content/docs/(functions)/Text/toLocaleUpperCase.mdx @@ -9,12 +9,12 @@ this sentence uppercases every first char of a word in a sentence
    - + !!exec $toLocaleUppercase[hello how are you?] - - + + Hello How Are You? - + diff --git a/content/docs/(functions)/Text/toLowercase.mdx b/content/docs/(functions)/Text/toLowercase.mdx index d840507a..53095b4d 100644 --- a/content/docs/(functions)/Text/toLowercase.mdx +++ b/content/docs/(functions)/Text/toLowercase.mdx @@ -9,12 +9,12 @@ this functions lowercases every character
    - + !!exec $toLowercase[HeLlO] - - + + hello - + diff --git a/content/docs/(functions)/Text/toUppercase.mdx b/content/docs/(functions)/Text/toUppercase.mdx index 133c86d1..c0249736 100644 --- a/content/docs/(functions)/Text/toUppercase.mdx +++ b/content/docs/(functions)/Text/toUppercase.mdx @@ -9,12 +9,12 @@ this functions uppercases every character
    - + !!exec $touppercase[hElLo] - - + + HELLO - + diff --git a/content/docs/(functions)/Text/uri.mdx b/content/docs/(functions)/Text/uri.mdx index 5df117d8..11b0fa41 100644 --- a/content/docs/(functions)/Text/uri.mdx +++ b/content/docs/(functions)/Text/uri.mdx @@ -12,20 +12,20 @@ $uri[decode/encode;text] ### Example (Encoding): - + !!exec $uri[encode;Hello World]

    -
    - + + Hello%20World

    -
    +
    ### Example (Decoding): - + !!exec $uri[decode;Hello%20World]

    -
    - + + Hello World - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Text/void.mdx b/content/docs/(functions)/Text/void.mdx index 57b5ad8d..ba8f6f60 100644 --- a/content/docs/(functions)/Text/void.mdx +++ b/content/docs/(functions)/Text/void.mdx @@ -12,10 +12,10 @@ $void[ANYTHING] ### Example: - + !!exec $let[name;Mido]
    My name is $void[$get[name]]

    -
    - + + My name is - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx index 9fe5a8dc..8ebe0b6f 100644 --- a/content/docs/(functions)/Threads/getThreads.mdx +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -9,12 +9,12 @@ Get all threads from a channel.
    - + !!exec $getThreads[$channelID;name; | ] - - + + Cat Disscussion | Help - + diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx index 8e524d6b..b3583eab 100644 --- a/content/docs/(functions)/Threads/thread.mdx +++ b/content/docs/(functions)/Threads/thread.mdx @@ -9,12 +9,12 @@ Gets info trom a thread.
    - + !!exec <@!$thread[owner]> - - + + Member - + diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index 17575b90..c38d1068 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -16,7 +16,7 @@ $callFunction[printHello;Mika] Call the function, using `$callFunction`
    - + !!exec $function[printHello;name]
    @@ -25,16 +25,16 @@ Hello $name 👋 $endFunction $callFunction[printhello;Mika]
    -
    - + + Hello Mika 👋 - +
    Call the function, using `$printHello`
    - + !!exec $function[printHello;name]
    @@ -43,10 +43,10 @@ Hello $name 👋 $endFunction $printhello[Mika]
    -
    - + + Hello Mika 👋 - +
    diff --git a/content/docs/(functions)/Useful/error.mdx b/content/docs/(functions)/Useful/error.mdx index da77e29e..c1dde339 100644 --- a/content/docs/(functions)/Useful/error.mdx +++ b/content/docs/(functions)/Useful/error.mdx @@ -10,15 +10,15 @@ Returns the error the interpreter threw #### Example:
    - + !!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] $error - - + + ❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] - + diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 8b4e77fa..6ee4cabf 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -26,7 +26,7 @@ $endForEach
    - + !!exec $forEach[member;Rake, Mido, Azz, Mika, Felix, Flinkz, Wiki, Ddk;, ]
    @@ -34,8 +34,8 @@ $get[member], is one of our Staff Members!
    $endForEach
    -
    - + + Rake, is one of our Staff Members!
    @@ -54,7 +54,7 @@ Wiki, is one of our Staff Members! Ddk, is one of our Staff Members!
    -
    +
    diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index f5c81bb5..26fccf7a 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -18,7 +18,7 @@ $endFunction Call the function, using `$callFunction`
    - + !!exec $function[printHello;name]
    @@ -27,16 +27,16 @@ Hello $name 👋 $endFunction $callFunction[printhello;Mika]
    -
    - + + Hello Mika 👋 - +
    Call the function, using `$printHello`
    - + !!exec $function[printHello;name]
    @@ -45,10 +45,10 @@ Hello $name 👋 $endFunction $printhello[Mika]
    -
    - + + Hello Mika 👋 - +
    diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx index d89d93cf..a0eacf92 100644 --- a/content/docs/(functions)/Useful/redirectErrors.mdx +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -10,19 +10,19 @@ To redirect any kind of errors to a specific channel, by default errors will app #### Example:
    - + !!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] $redirectErrors[Channel ID] - +
    - + ❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] - + diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx index 671d0635..9f3d2bdb 100644 --- a/content/docs/(functions)/Useful/seq.mdx +++ b/content/docs/(functions)/Useful/seq.mdx @@ -10,12 +10,12 @@ Returns a sequence of numbers, decided by a starting (inclusive) number and stop #### Example:
    - + !!exec $seq[1;10] - - + + 1 2 3 4 5 6 7 8 9 10 - + diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx index 89a08d4d..bc0ba9ab 100644 --- a/content/docs/(functions)/Useful/spread.mdx +++ b/content/docs/(functions)/Useful/spread.mdx @@ -12,9 +12,9 @@ spreads text as arguments inside functions !!exec Your color is $randomtext[$spread[,;Blue,Yellow,Green]] - + Your color is Yellow - + **Function difficulty:** diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx index a8cb73e3..5b4ab098 100644 --- a/content/docs/(functions)/Useful/stop.mdx +++ b/content/docs/(functions)/Useful/stop.mdx @@ -10,7 +10,7 @@ This function will cause the interpetender to stop the command execution & retur #### Example:
    - + !!exec $sendMessage[This message will be send;no]
    @@ -18,13 +18,13 @@ $stop[This funtion will cause the interpetender to stop the code]
    $sendMesssage[This message won't be send;no]
    -
    - + + This message will be send - - + + This funtion will cause the interpetender to stop the code - +
    diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx index 509408b4..a942ffb9 100644 --- a/content/docs/(functions)/Useful/suppressErrors.mdx +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -10,15 +10,15 @@ Suppress all the errors and sends a custom one. \{error} will contain the error #### Example:
    - + !!exec $suppressErrors[Wrong usage of $modifyChannelPerms] $modifyChannelPerms[$authorID;-sendmessages;$channelID] - - + + Wrong usage of $modifyChannelPerms - + diff --git a/content/docs/(functions)/Useful/triggerExists.mdx b/content/docs/(functions)/Useful/triggerExists.mdx index 05cc658b..92dbd59c 100644 --- a/content/docs/(functions)/Useful/triggerExists.mdx +++ b/content/docs/(functions)/Useful/triggerExists.mdx @@ -12,20 +12,20 @@ $triggerExists[Token] ### Example (An existing trigger): - + !!exec $triggerExists[fx1d53]

    -
    - + + true

    -
    +
    ### Example (not available trigger): - + !!exec $triggerExists[abcdef]

    -
    - + + false - +
    diff --git a/content/docs/(functions)/Useful/wait.mdx b/content/docs/(functions)/Useful/wait.mdx index b8d432e5..8d83084b 100644 --- a/content/docs/(functions)/Useful/wait.mdx +++ b/content/docs/(functions)/Useful/wait.mdx @@ -10,7 +10,7 @@ Will wait an X time, before executing the code below it. #### Example:
    - + !!exec $sendMessage[This part gets executed before the 10s]
    @@ -18,13 +18,13 @@ $wait[10s]
    $sendMessage[This part after the 10s]
    -
    - + + This part gets executed before the 10s - - + + This part after the 10s - +
    diff --git a/content/docs/(functions)/Variables/deleteChannelVar.mdx b/content/docs/(functions)/Variables/deleteChannelVar.mdx index acadff01..3ff11416 100644 --- a/content/docs/(functions)/Variables/deleteChannelVar.mdx +++ b/content/docs/(functions)/Variables/deleteChannelVar.mdx @@ -7,9 +7,9 @@ Deletes a channel variable, from the command trigger channel or from the ID spec #### Usage: `$deleteChannelVar[variable;channelID(optional)]`
    - + !!exec $deleteChannelVar[Creator] - + diff --git a/content/docs/(functions)/Variables/deleteMessageVar.mdx b/content/docs/(functions)/Variables/deleteMessageVar.mdx index 44038b48..cad2ccec 100644 --- a/content/docs/(functions)/Variables/deleteMessageVar.mdx +++ b/content/docs/(functions)/Variables/deleteMessageVar.mdx @@ -7,9 +7,9 @@ Deletes a message variable, from the command trigger or from the ID specified. #### Usage: `$deleteMessageVar[variable;MessageID(optional)]`
    - + !!exec $deleteMessageVar[Author] - + diff --git a/content/docs/(functions)/Variables/deleteServerVar.mdx b/content/docs/(functions)/Variables/deleteServerVar.mdx index c3348f8a..4206ea34 100644 --- a/content/docs/(functions)/Variables/deleteServerVar.mdx +++ b/content/docs/(functions)/Variables/deleteServerVar.mdx @@ -7,9 +7,9 @@ Deletes a server variable. #### Usage: `$deleteServerVar[variable]`
    - + !!exec $deleteServerVar[TopMember] - + diff --git a/content/docs/(functions)/Variables/deleteUserVar.mdx b/content/docs/(functions)/Variables/deleteUserVar.mdx index c5b1619d..21ad6b2c 100644 --- a/content/docs/(functions)/Variables/deleteUserVar.mdx +++ b/content/docs/(functions)/Variables/deleteUserVar.mdx @@ -7,9 +7,9 @@ Deletes a user variable, from the author of the command or from the ID specified #### Usage: `$deleteUserVar[variable;userID]`
    - + !!exec $deleteUserVar[Creator;$authorID] - + diff --git a/content/docs/(functions)/Variables/get.mdx b/content/docs/(functions)/Variables/get.mdx index 5089ef1d..ab26f836 100644 --- a/content/docs/(functions)/Variables/get.mdx +++ b/content/docs/(functions)/Variables/get.mdx @@ -8,22 +8,22 @@ retrieve variable defined by `$let` ### Example 1: - + !!exec $let[orange;10]
    $get[orange] or $orange -
    - + + 10 or 10 - +
    ### Example 2 (Use default value if not exists): - + !!exec Your name is $get[name;Mido] - - + + Your name is Mido - + diff --git a/content/docs/(functions)/Variables/getChannelVar.mdx b/content/docs/(functions)/Variables/getChannelVar.mdx index 4f1673d1..41adde9f 100644 --- a/content/docs/(functions)/Variables/getChannelVar.mdx +++ b/content/docs/(functions)/Variables/getChannelVar.mdx @@ -7,12 +7,12 @@ Gets a channel variable value #### Usage: `$getChannelVar[variable;channelID(optional)]`
    - + !!exec $getChannelVar[Creator] - - + + Mido - + diff --git a/content/docs/(functions)/Variables/getMessageVar.mdx b/content/docs/(functions)/Variables/getMessageVar.mdx index e476c68d..f72c7ce4 100644 --- a/content/docs/(functions)/Variables/getMessageVar.mdx +++ b/content/docs/(functions)/Variables/getMessageVar.mdx @@ -7,12 +7,12 @@ Gets a message variable value #### Usage: `$getMessageVar[variable;messageID(optional)]`
    - + !!exec $getMessageVar[data] - - + + Mido - + diff --git a/content/docs/(functions)/Variables/getServerVar.mdx b/content/docs/(functions)/Variables/getServerVar.mdx index fe091f28..b308ed74 100644 --- a/content/docs/(functions)/Variables/getServerVar.mdx +++ b/content/docs/(functions)/Variables/getServerVar.mdx @@ -7,12 +7,12 @@ Gets a server variable value #### Usage: `$getServerVar[variable]`
    - + !!exec $getServerVar[holder] - - + + Mika - + diff --git a/content/docs/(functions)/Variables/getUserVar.mdx b/content/docs/(functions)/Variables/getUserVar.mdx index 96093e40..e99c1d2f 100644 --- a/content/docs/(functions)/Variables/getUserVar.mdx +++ b/content/docs/(functions)/Variables/getUserVar.mdx @@ -7,23 +7,23 @@ Gets a user variable value #### Usage: `$getUserVar[variable;userid(optional)]`
    - + !!exec $getUserVar[warnings;683630053686378498] - - + + 4 - + or executors(author/you) warning count: - + !!exec $getUserVar[warnings] - - + + 1 - + diff --git a/content/docs/(functions)/Variables/increaseChannelVar.mdx b/content/docs/(functions)/Variables/increaseChannelVar.mdx index 743f33b1..b2db3b43 100644 --- a/content/docs/(functions)/Variables/increaseChannelVar.mdx +++ b/content/docs/(functions)/Variables/increaseChannelVar.mdx @@ -20,10 +20,10 @@ $increaseChannelVar[messages;1] ### Example (double the messages): - + !!exec Before: $getChannelVar[messages]
    $increaseChannelVar[messages;x*2]
    After: $getChannelVar[messages]

    -
    - + + Before: 5
    After: 10 -
    +
    diff --git a/content/docs/(functions)/Variables/increaseServerVar.mdx b/content/docs/(functions)/Variables/increaseServerVar.mdx index c40c9cc4..5db4a6b3 100644 --- a/content/docs/(functions)/Variables/increaseServerVar.mdx +++ b/content/docs/(functions)/Variables/increaseServerVar.mdx @@ -20,10 +20,10 @@ $increaseServerVar[ticket numbers;1] ### Example (double the messages): - + !!exec Before: $getServerVar[ticket numbers]
    $increaseServerVar[ticket numbers;x*2]
    After: $getServerVar[ticket numbers]

    -
    - + + Before: 5
    After: 10 -
    +
    diff --git a/content/docs/(functions)/Variables/increaseUserVar.mdx b/content/docs/(functions)/Variables/increaseUserVar.mdx index 3a795590..4f9f3df0 100644 --- a/content/docs/(functions)/Variables/increaseUserVar.mdx +++ b/content/docs/(functions)/Variables/increaseUserVar.mdx @@ -20,10 +20,10 @@ $increaseUserVar[money;1000] ### Example (double the money): - + !!exec Before: $getUserVar[money]
    $increaseUserVar[money;x*2]
    After: $getUserVar[money]

    -
    - + + Before: 1000
    After: 2000 -
    +
    diff --git a/content/docs/(functions)/Variables/let.mdx b/content/docs/(functions)/Variables/let.mdx index a2461594..e605c496 100644 --- a/content/docs/(functions)/Variables/let.mdx +++ b/content/docs/(functions)/Variables/let.mdx @@ -10,9 +10,9 @@ The first value will only exist until cc ends its execution,the second will stil You can use $get[varname] or $varname to retrieve the value
    - + !!exec $let[orange;10] or $let[apple;10;yes] - + diff --git a/content/docs/(functions)/Variables/resetUserVar.mdx b/content/docs/(functions)/Variables/resetUserVar.mdx index c012f0b6..177fc831 100644 --- a/content/docs/(functions)/Variables/resetUserVar.mdx +++ b/content/docs/(functions)/Variables/resetUserVar.mdx @@ -7,9 +7,9 @@ Resets a user variable for all users. #### Usage: `$resetUserVar[variable]`
    - + !!exec $resetUserVar[warnings] - + diff --git a/content/docs/(functions)/Variables/setChannelVar.mdx b/content/docs/(functions)/Variables/setChannelVar.mdx index 0221c0c5..ba6b6775 100644 --- a/content/docs/(functions)/Variables/setChannelVar.mdx +++ b/content/docs/(functions)/Variables/setChannelVar.mdx @@ -7,17 +7,17 @@ Sets a channel variable value. #### Usage: `$setChannelVar[variable;value;channelID (optional)]`
    - + !!exec $setChannelVar[Creator;Mido;$channelID] - + or for current Channel - + !!exec $setChannelVar[Creator;Mido] - + diff --git a/content/docs/(functions)/Variables/setMessageVar.mdx b/content/docs/(functions)/Variables/setMessageVar.mdx index d7409482..74c65883 100644 --- a/content/docs/(functions)/Variables/setMessageVar.mdx +++ b/content/docs/(functions)/Variables/setMessageVar.mdx @@ -7,9 +7,9 @@ Sets a message variable value. #### Usage: `$setMessageVar[variable;value;messageID(optional)]`
    - + !!exec $setMessageVar[Creator;Mido;$messageID] - + diff --git a/content/docs/(functions)/Variables/setServerVar.mdx b/content/docs/(functions)/Variables/setServerVar.mdx index 9e81c095..16ad1bf0 100644 --- a/content/docs/(functions)/Variables/setServerVar.mdx +++ b/content/docs/(functions)/Variables/setServerVar.mdx @@ -7,9 +7,9 @@ Sets a Server variable value. #### Usage: `$setServerVar[variable;value]`
    - + !!exec $setServerVar[holder;Mika] - + diff --git a/content/docs/(functions)/Variables/setUserVar.mdx b/content/docs/(functions)/Variables/setUserVar.mdx index cd2d935b..999a2e84 100644 --- a/content/docs/(functions)/Variables/setUserVar.mdx +++ b/content/docs/(functions)/Variables/setUserVar.mdx @@ -7,9 +7,9 @@ Sets a user variable value. #### Usage: `$setUserVar[variable;value;userID(optional)]`
    - + !!exec $setMessageVar[warnings;5] - + diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx index 1e62dd79..27927768 100644 --- a/content/docs/(functions)/Variables/userLeaderboard.mdx +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -31,9 +31,9 @@ To use this function your uservar must have numeric values . !!exec $setUserVar[money;100]
    !!exec $userLeaderboard[money;asc;\{top}.- \{username} - \{value}] - + 1.- Mido - 100 - + diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx index 38c788aa..cdbd0e96 100644 --- a/content/docs/(functions)/Variables/userVarRank.mdx +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -12,10 +12,10 @@ $uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);Use ### Example: - + !!exec Your rank is $userVarRank[xp]

    -
    - + + Your rank is 3 - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Variables/viewChannelVars.mdx b/content/docs/(functions)/Variables/viewChannelVars.mdx index e2d95548..594124d7 100644 --- a/content/docs/(functions)/Variables/viewChannelVars.mdx +++ b/content/docs/(functions)/Variables/viewChannelVars.mdx @@ -12,20 +12,20 @@ $viewChannelVars[Channel ID (default: $channelID);Separator;Query Regex (optiona ### Example: - + !!exec $viewChannelVars

    -
    - + + ticket, ticket_owner, staff

    -
    +
    ### Example (return only variables that starts with ticket): - + !!exec $viewChannelVars[$channelID; ,;^ticket]

    -
    - + + ticket, ticket_owner - +
    \ No newline at end of file diff --git a/content/docs/(functions)/Variables/viewServerVars.mdx b/content/docs/(functions)/Variables/viewServerVars.mdx index cccdc5e3..2c45efe8 100644 --- a/content/docs/(functions)/Variables/viewServerVars.mdx +++ b/content/docs/(functions)/Variables/viewServerVars.mdx @@ -12,20 +12,20 @@ $viewServerVars[Separator;Query Regex (optional)] ### Example: - + !!exec $viewServerVars

    -
    - + + level1_xp, names, staffs, level2_xp, level3_xp, level1_reward

    -
    +
    ### Example (return only variables that starts with level): - + !!exec $viewServerVars[, ;^level]

    -
    - + + level1_xp, level2_xp, level3_xp,level1_reward - +
    diff --git a/content/docs/(functions)/Variables/viewUserVars.mdx b/content/docs/(functions)/Variables/viewUserVars.mdx index a9f3c7e7..5f9749f2 100644 --- a/content/docs/(functions)/Variables/viewUserVars.mdx +++ b/content/docs/(functions)/Variables/viewUserVars.mdx @@ -12,10 +12,10 @@ $viewUserVars[User ID;Separator] ### Example: - + !!exec $viewUsersVars[$authorID]

    -
    - + + xp, money, bonus - +
    diff --git a/content/docs/CodeReferences/ref.channel_types.mdx b/content/docs/CodeReferences/ref.channel_types.mdx index 42495dae..90179392 100644 --- a/content/docs/CodeReferences/ref.channel_types.mdx +++ b/content/docs/CodeReferences/ref.channel_types.mdx @@ -39,12 +39,12 @@ We'll use the `$channelType` function inside a **public thread**. #### Result: - + !!exec $channelType - - + + thread_public - + **Tags:** diff --git a/content/docs/CodeReferences/ref.embed.colors.mdx b/content/docs/CodeReferences/ref.embed.colors.mdx index 95a2e4b1..60ea4dbb 100644 --- a/content/docs/CodeReferences/ref.embed.colors.mdx +++ b/content/docs/CodeReferences/ref.embed.colors.mdx @@ -44,24 +44,24 @@ It can also accept hex colors like `#1abc9c` ### Example 1 - + !!exec $sendMessage[
    \{desc:You are awesome}
    \{color:Aqua}
    ] -
    - + + You are awesome - +
    ### Example 2 - + !!exec $description[You are awesome}]
    $color[#0099ff] -
    - + + You are awesome - +
    diff --git a/content/docs/CodeReferences/ref.message_curl_format.mdx b/content/docs/CodeReferences/ref.message_curl_format.mdx index 29db8563..42cbf7b5 100644 --- a/content/docs/CodeReferences/ref.message_curl_format.mdx +++ b/content/docs/CodeReferences/ref.message_curl_format.mdx @@ -18,13 +18,13 @@ Here's how to send an embed with the title "Hello" and the description "World": !!exec $sendMessage[\{title:Hello}\{description:World}] - + World - + ### Available Curl Formats: diff --git a/content/docs/Guide/4.template.mdx b/content/docs/Guide/4.template.mdx index 52513e68..0a282db2 100644 --- a/content/docs/Guide/4.template.mdx +++ b/content/docs/Guide/4.template.mdx @@ -25,7 +25,7 @@ Once everything is done, you're ready to go! After the commands are clonned, it !wordle - + There is a word of 5 characters, can you guess it? @@ -39,7 +39,7 @@ There is a word of 5 characters, can you guess it? Guess - + ## Sharing Your Templates diff --git a/content/docs/Guide/5.comment.mdx b/content/docs/Guide/5.comment.mdx index 043528b2..366c6b7f 100644 --- a/content/docs/Guide/5.comment.mdx +++ b/content/docs/Guide/5.comment.mdx @@ -38,9 +38,9 @@ $let[age;$math[$year-$userYear]] // $userYear is year the user was born in
    Your age is: $age

    // TODO: Save into user variable - + Your age is: 26 - + ## Multi-Line Comments @@ -71,9 +71,9 @@ $let[userYear;2000]
    $let[age;$math[$year /* current year - born year */ - $userYear]]
    Your age is: $age /* \<- The variable */ - + Your age is: 26 - + diff --git a/content/docs/Guide/6.variables.mdx b/content/docs/Guide/6.variables.mdx index e18eda0c..8bf3d279 100644 --- a/content/docs/Guide/6.variables.mdx +++ b/content/docs/Guide/6.variables.mdx @@ -31,9 +31,9 @@ User’s name: $name $let[name;$displayName[$uid]]

    Random User's name: $name - + Random User's name: Member - + ## Permanent Variables diff --git a/content/docs/Guide/7.array.mdx b/content/docs/Guide/7.array.mdx index d0cd1ad3..900972c8 100644 --- a/content/docs/Guide/7.array.mdx +++ b/content/docs/Guide/7.array.mdx @@ -28,9 +28,9 @@ First item: $arrayGet[1]
    Last item: $arrayGet[$arrayLength]
    All items: $arrayJoin[/] - + First item: Apple
    Last item: Kiwi
    All items: Apple/Banana/Kiwi -
    + diff --git a/content/docs/Guide/syntax.mdx b/content/docs/Guide/syntax.mdx index 29e1d7e7..1822bc5a 100644 --- a/content/docs/Guide/syntax.mdx +++ b/content/docs/Guide/syntax.mdx @@ -54,9 +54,9 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] !!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] - + 2 = 2 = 2 - + Function doesn't have to be closed at the same line where it was opened: @@ -73,12 +73,12 @@ Click to reveal: ||$math[2^11]||] $description[What is 2^11?
    Click to reveal: ||$math[2^11]||] - + What is 2^11?
    Click to reveal: 2048
    -
    + ## Function Actions @@ -111,7 +111,7 @@ Example of using `$msg` with multiple arguments !!exec Message content: $msg[$channelID;$messageID;content] - + Message content: !!exec Message content: $msg[$channelID;$messageID;content] - + diff --git a/content/docs/Other/syntax.mdx b/content/docs/Other/syntax.mdx index 679ae5c2..66a92723 100644 --- a/content/docs/Other/syntax.mdx +++ b/content/docs/Other/syntax.mdx @@ -57,9 +57,9 @@ $math[1+1] = $mAtH[1+1] = $MATH[1+1] !!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] - + 2 = 2 = 2 - + Function doesn't have to be closed at the same line where it was opened: @@ -76,12 +76,12 @@ Click to reveal: ||$math[2^11]||] $description[What is 2^11?
    Click to reveal: ||$math[2^11]||] - + What is 2^11?
    Click to reveal: 2048
    -
    + ## Function Actions @@ -114,7 +114,7 @@ Example of using `$msg` with multiple arguments !!exec Message content: $msg[$channelID;$messageID;content] - + Message content: !!exec Message content: $msg[$channelID;$messageID;content] - + diff --git a/content/docs/Trigger/joinorleave.mdx b/content/docs/Trigger/joinorleave.mdx index 42724bb7..b21cefd7 100644 --- a/content/docs/Trigger/joinorleave.mdx +++ b/content/docs/Trigger/joinorleave.mdx @@ -27,9 +27,9 @@ Hello $displayName! Welcome to our server. Wait for a user to join and see if it worked! - + Hello Member! Welcome to our server. - + @@ -42,9 +42,9 @@ For member joins/leaves you can use `!!emit` command to trigger the On Join/Leav !!emit uadd - + Hello Member! Welcome to our server. - + diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index f8fb76f2..5de35c84 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -18,9 +18,9 @@ In the code part we will type `pong!`, so the bot will respond with it. !ping - + pong! - + ## Using parameters @@ -48,9 +48,9 @@ Here's how the final command should look like: ?hug fajfaj - + Member hugs fajfaj - + ## Case insensitivity @@ -70,21 +70,21 @@ Let's test different variations: ?hello - + Hello Member! - + ?HELLO - + Hello Member! - + ?HeLLo - + Hello Member! - + @@ -109,21 +109,21 @@ Let's test it out: ?hug fajfaj - + Member hugs fajfaj - + ?abrazo fajfaj - + Member hugs fajfaj - + ?étreinte fajfaj - + Member hugs fajfaj - + Works as expected! @@ -164,15 +164,15 @@ Let's try sending some mentions: Hey fajfaj! How is it going? - + You've pinged someone! - + Mido, have you found your chocolate yet? - + You've pinged someone! - + It detects all of them! @@ -242,15 +242,15 @@ Let's see if we get any compliments: How is it going? - + Cool message! - + Does anyone here have a monkey as a pet? - + Wonderful punctuation! - + Amazing, we've just got complimented by the bot automatically. diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index ca5194a3..cbb05f8b 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -52,15 +52,15 @@ The command will trigger when a message starts with `!hello`. !hello - + Hello Member! - + !hello everyone - + Hello Member! - + However, a message where `!hello` appears later will not trigger the command. @@ -95,15 +95,15 @@ The command will trigger when the message ends with `good morning`. Everyone, good morning - + Good morning, Member! - + Good morning - + Good morning, Member! - + A message where the text appears in the middle will not trigger the command. @@ -136,15 +136,15 @@ will trigger whenever `banana` appears in the message. I really like bananas! - + 🍌 Banana detected! - + Does anyone have a banana? - + 🍌 Banana detected! - + The text does not need to be at the beginning or end of the message. @@ -173,9 +173,9 @@ This can detect mentions such as: Hey Mido! - + You have mentioned Mido! - + Regex can be used to create much more advanced message matching rules. @@ -202,9 +202,9 @@ For example: Check out this image! [attachment: image.png] - + Nice image! - + The message does not need to contain any particular text. @@ -220,9 +220,9 @@ For example: [Discord system message: A message was pinned] - + A message was pinned! - + This can be useful for automatically responding when someone pins a message. @@ -238,9 +238,9 @@ For example: [Discord system message: A thread was created] - + A new thread has been created! - + This can be useful for automatically responding to newly created threads. @@ -261,9 +261,9 @@ Minecraft Fortnite Terraria - + Thanks for creating a poll! - + The command does not need to know the poll's question or answers. @@ -279,9 +279,9 @@ For example: Hey Mido, check this out! - + Someone was mentioned! - + The mention can appear anywhere in the message. @@ -313,9 +313,9 @@ For example: This is the original message. - + A message was forwarded! - + This allows you to create commands that react specifically to forwarded messages without needing to inspect their text. @@ -331,9 +331,9 @@ For example, when a user sends a message that violates an AutoMod rule: This message triggered AutoMod - + AutoMod has detected a violation. - + The user who triggered the AutoMod action is considered the executor of the command. @@ -353,15 +353,15 @@ For example, a command configured with **Every Message** could automatically res Hello everyone! - + Have a great day! - + Does anyone want to play? - + Have a great day! - + This can be useful for automatic responses, message logging, counters, or other systems that need to process every message. diff --git a/content/docs/Tutorials/3.report.mdx b/content/docs/Tutorials/3.report.mdx index 34fb5d8e..8c2c2f2e 100644 --- a/content/docs/Tutorials/3.report.mdx +++ b/content/docs/Tutorials/3.report.mdx @@ -51,16 +51,16 @@ $mention you report has been submitted, thank you for keeping our community safe !report fajfaj breaking server rule #5 - + Member your report has been submitted, thank you for keeping our community safe. - + Meanwhile in #reports - + Member has reported fajfaj, for breaking server rule #5 - + ### 🎉 Congrats! diff --git a/content/docs/Tutorials/4.collect.mdx b/content/docs/Tutorials/4.collect.mdx index 0c22b777..9b0925b9 100644 --- a/content/docs/Tutorials/4.collect.mdx +++ b/content/docs/Tutorials/4.collect.mdx @@ -82,15 +82,15 @@ Let's see if it works correctly !collect - + Enjoy your 100$ reward! - + !collect - + You cannot collect the same reward more than once! - + From 1cb9e913c758bef9da87b2f6678ac04cd00c4588 Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 8 Aug 2026 23:01:53 +0200 Subject: [PATCH 22/62] fix typescript check --- components/discord.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/discord.tsx b/components/discord.tsx index e1ecb10a..afb260c7 100644 --- a/components/discord.tsx +++ b/components/discord.tsx @@ -96,7 +96,7 @@ export function DiscordEmbed({ child.type === 'p'; const description = isParagraph - ? child.props.children + ? (child.props as { children?: ReactNode }).children : children; const isPlainContent = From 6930249a00e8e86f1d1b19bbe950e7febb8d7d37 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 13:45:21 +0200 Subject: [PATCH 23/62] remove legacy function $error --- content/docs/(functions)/Useful/error.mdx | 36 ----------------------- 1 file changed, 36 deletions(-) delete mode 100644 content/docs/(functions)/Useful/error.mdx diff --git a/content/docs/(functions)/Useful/error.mdx b/content/docs/(functions)/Useful/error.mdx deleted file mode 100644 index c1dde339..00000000 --- a/content/docs/(functions)/Useful/error.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: "$error" ---- - -Returns the error the interpreter threw - -#### Usage: -`$error` - -#### Example: -
    - - - -!!exec $modifyChannelPerms[$authorID;-sendmessages;$channelID] -$error - - - -❌ Invalid channel ID in $modifyChannelPerms[787695068306866198;-sendmessages;879380104768278608] - - - - - - -The way `$modifyChannelPerms` shown here is **NOT** correct! - -Check the `$modifyChannelPerms` for the correct usage - - - -**Function Difficulty:** - -**Tags:** - From 9501f5b9b033605469bfa84cbe6a6ff9edae703e Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 18:23:29 +0200 Subject: [PATCH 24/62] optimized view-related vars function --- content/docs/Changelogs/1.v1.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 166483ba..4f18373d 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -20,6 +20,7 @@ title: "v1.x (Current)" * New trigger for Message Commands (Context Menu), [learn more here](/Trigger/app_cmd_message). * New function `$eventTargetID` to retrieve the User ID or Message ID for the new User Command and Message Command triggers. * For testing purposes, the `emit` command now supports the Upvote event. Use `[prefix]emit upvote`. +* `$viewServerVars`, `$viewUserVars`, `$viewChannelVars` query significant speed optimization (100x speed for some servers). #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 1aece1152ffb15c05394cd6b18ca26cb55bd9487 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:12:26 +0200 Subject: [PATCH 25/62] add query regex for $viewUserVars --- .../docs/(functions)/Variables/viewUserVars.mdx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/content/docs/(functions)/Variables/viewUserVars.mdx b/content/docs/(functions)/Variables/viewUserVars.mdx index 5f9749f2..5d70fabd 100644 --- a/content/docs/(functions)/Variables/viewUserVars.mdx +++ b/content/docs/(functions)/Variables/viewUserVars.mdx @@ -7,7 +7,7 @@ View a list of all the variables that are defined for a specific user ## Usage ```cc -$viewUserVars[User ID;Separator] +$viewUserVars[User ID;Separator (optional);Query Regex (optional)] ``` ### Example: @@ -16,6 +16,19 @@ $viewUserVars[User ID;Separator] !!exec $viewUsersVars[$authorID]

    -xp, money, bonus +xp, money, bonus, xp-global + +!!exec $viewUsersVars[$authorID;/]

    +
    + +xp/money/bonus/xp-global + + +!!exec $viewUsersVars[$authorID;/;xp]

    +
    + +xp/x-global + + From 61ca544c7c0a17cafec91ce92447a0986479e28b Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:16:16 +0200 Subject: [PATCH 26/62] use local bot-profile --- components/discord.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/discord.tsx b/components/discord.tsx index afb260c7..4e578c8b 100644 --- a/components/discord.tsx +++ b/components/discord.tsx @@ -165,7 +165,7 @@ export function DiscordMessageBot({ author="Custom Command" bot roleColor="#0099ff" - avatar="https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678e032f74a.webp" + avatar="/bot-profile.png" > {children} From 540a4e274dbae7b8de30bbe224b93d05a3b2248a Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:18:15 +0200 Subject: [PATCH 27/62] add example with separator in $viewServerVars --- content/docs/(functions)/Variables/viewServerVars.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/content/docs/(functions)/Variables/viewServerVars.mdx b/content/docs/(functions)/Variables/viewServerVars.mdx index 2c45efe8..3dc39b9b 100644 --- a/content/docs/(functions)/Variables/viewServerVars.mdx +++ b/content/docs/(functions)/Variables/viewServerVars.mdx @@ -18,6 +18,15 @@ $viewServerVars[Separator;Query Regex (optional)] level1_xp, names, staffs, level2_xp, level3_xp, level1_reward

    + + +!!exec $viewServerVars[/]

    +
    + +level1_xp/names/staffs/level2_xp/level3_xp/level1_reward

    +
    + + ### Example (return only variables that starts with level): From fcf87830a6c5d8086993ffab52783fc5b7c6dec6 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:35:59 +0200 Subject: [PATCH 28/62] add example to $sendMessage --- content/docs/(functions)/Message/sendMessage.mdx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 5628a27b..692188e2 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -26,15 +26,18 @@ Sends a message to the channel where the command was executed. This is a fantastic message! - - -#### More Examples + +!!exec $sendMessage[
    \{description: This is a fantastic message! \}
    \{color:GREEN\}
    ] +
    -**Sending an embed:** + + +This is a fantastic message! + + -It is recommended to use [Message Curl Format](/CodeReferences/ref.message_curl_format) to send more complex messages like embeds + -![](https://i.imgur.com/A7UbSpj.png) From 9791eb24b7982f0ad6209f4453739abcf225c435 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:46:09 +0200 Subject: [PATCH 29/62] use cc lang for usage function --- content/docs/(functions)/Bot/botCount.mdx | 7 +++++-- content/docs/(functions)/Bot/cacheMember.mdx | 5 ++++- content/docs/(functions)/Bot/clientID.mdx | 5 ++++- content/docs/(functions)/Bot/ping.mdx | 5 ++++- content/docs/(functions)/Bot/ram.mdx | 5 ++++- content/docs/(functions)/Bot/serverCount.mdx | 5 ++++- content/docs/(functions)/Bot/uptime.mdx | 5 ++++- content/docs/(functions)/Channel/channelCount.mdx | 5 ++++- content/docs/(functions)/Channel/channelID.mdx | 5 ++++- content/docs/(functions)/Channel/channelName.mdx | 5 ++++- content/docs/(functions)/Channel/channelType.mdx | 5 ++++- content/docs/(functions)/Channel/channelUsed.mdx | 5 ++++- content/docs/(functions)/Channel/closeTicket.mdx | 5 ++++- content/docs/(functions)/Channel/eventChannelID.mdx | 5 ++++- content/docs/(functions)/Channel/newTicket.mdx | 5 ++++- content/docs/(functions)/Channel/useChannel.mdx | 5 ++++- content/docs/(functions)/Date/creationDate.mdx | 5 ++++- content/docs/(functions)/Date/dateStamp.mdx | 5 ++++- content/docs/(functions)/Date/day.mdx | 5 ++++- content/docs/(functions)/Date/formatDate.mdx | 5 ++++- content/docs/(functions)/Date/hour.mdx | 5 ++++- content/docs/(functions)/Date/humanizeMS.mdx | 5 ++++- content/docs/(functions)/Date/memberJoinedDate.mdx | 5 ++++- content/docs/(functions)/Date/month.mdx | 5 ++++- content/docs/(functions)/Date/parseDate.mdx | 5 ++++- content/docs/(functions)/Date/second.mdx | 5 ++++- content/docs/(functions)/Date/timeStamp.mdx | 5 ++++- content/docs/(functions)/Date/timezone.mdx | 5 ++++- .../docs/(functions)/Interaction/interactionDelete.mdx | 5 ++++- .../docs/(functions)/Interaction/interactionEdit.mdx | 5 ++++- content/docs/(functions)/Interaction/interactionId.mdx | 5 ++++- .../docs/(functions)/Interaction/interactionReply.mdx | 5 ++++- content/docs/(functions)/Interaction/modal.mdx | 5 ++++- content/docs/(functions)/Interaction/modalAnswer.mdx | 5 ++++- content/docs/(functions)/Interaction/modalID.mdx | 5 ++++- content/docs/(functions)/Message/DM.mdx | 5 ++++- content/docs/(functions)/Message/addCmdReactions.mdx | 5 ++++- .../docs/(functions)/Message/addMessageReactions.mdx | 5 ++++- content/docs/(functions)/Message/addReactions.mdx | 5 ++++- .../docs/(functions)/Message/channelSendMessage.mdx | 5 ++++- content/docs/(functions)/Message/clearReaction.mdx | 5 ++++- content/docs/(functions)/Message/clearReactions.mdx | 5 ++++- content/docs/(functions)/Message/createWebhook.mdx | 5 ++++- content/docs/(functions)/Message/deleteIn.mdx | 5 ++++- content/docs/(functions)/Message/deleteMessage.mdx | 5 ++++- content/docs/(functions)/Message/deleteWebhook.mdx | 5 ++++- content/docs/(functions)/Message/editMessage.mdx | 5 ++++- content/docs/(functions)/Message/forwardMessage.mdx | 5 ++++- content/docs/(functions)/Message/getCommandOption.mdx | 5 ++++- content/docs/(functions)/Message/getReactions.mdx | 5 ++++- content/docs/(functions)/Message/messageFlags.mdx | 5 ++++- content/docs/(functions)/Message/messageID.mdx | 7 +++++-- content/docs/(functions)/Message/messageSlice.mdx | 5 ++++- content/docs/(functions)/Message/messageType.mdx | 5 ++++- content/docs/(functions)/Message/msg.mdx | 5 ++++- content/docs/(functions)/Message/noEscapingMessage.mdx | 5 ++++- content/docs/(functions)/Message/sendDM.mdx | 5 ++++- content/docs/(functions)/Message/sendMessage.mdx | 5 ++++- content/docs/(functions)/Message/sendWebhook.mdx | 5 ++++- content/docs/(functions)/Random/resetRandom.mdx | 5 ++++- content/docs/(functions)/Role/blackListRoleIDs.mdx | 5 ++++- content/docs/(functions)/Role/colorRole.mdx | 5 ++++- content/docs/(functions)/Role/getRoleColor.mdx | 5 ++++- content/docs/(functions)/Role/hasRole.mdx | 5 ++++- content/docs/(functions)/Role/highestServerRole.mdx | 5 ++++- content/docs/(functions)/Role/lowestServerRole.mdx | 5 ++++- content/docs/(functions)/Role/role.mdx | 5 ++++- content/docs/(functions)/Role/roleCount.mdx | 5 ++++- content/docs/(functions)/Role/roleMembersCount.mdx | 5 ++++- content/docs/(functions)/Server/addEmoji.mdx | 5 ++++- content/docs/(functions)/Server/allMembersCount.mdx | 5 ++++- content/docs/(functions)/Server/guild.mdx | 5 ++++- content/docs/(functions)/Server/membersCount.mdx | 5 ++++- content/docs/(functions)/Server/ownerID.mdx | 5 ++++- content/docs/(functions)/Server/serverBanner.mdx | 5 ++++- content/docs/(functions)/Server/serverBoostCount.mdx | 5 ++++- content/docs/(functions)/Server/serverBoostLevel.mdx | 5 ++++- .../docs/(functions)/Server/serverContentFilter.mdx | 5 ++++- content/docs/(functions)/Server/serverDescription.mdx | 10 ++++++++-- content/docs/(functions)/Server/serverEmojis.mdx | 5 ++++- content/docs/(functions)/Server/serverFeatures.mdx | 5 ++++- content/docs/(functions)/Server/serverIcon.mdx | 5 ++++- content/docs/(functions)/Server/serverName.mdx | 5 ++++- content/docs/(functions)/Server/serverRegion.mdx | 5 ++++- content/docs/(functions)/Server/serverSplash.mdx | 5 ++++- .../(functions)/Server/serverVerificationLevel.mdx | 5 ++++- content/docs/(functions)/Server/setGuildIcon.mdx | 5 ++++- content/docs/(functions)/Server/setGuildName.mdx | 5 ++++- content/docs/(functions)/Server/systemChannelID.mdx | 5 ++++- .../docs/(functions)/Text/Components/awaitButton.mdx | 5 ++++- .../docs/(functions)/Text/Components/disableButton.mdx | 5 ++++- .../docs/(functions)/Text/Components/editButton.mdx | 5 ++++- .../docs/(functions)/Text/Components/removeButton.mdx | 5 ++++- .../docs/(functions)/Text/Components/removeButtons.mdx | 5 ++++- .../docs/(functions)/Text/Components/selectMenu.mdx | 5 ++++- content/docs/(functions)/Text/Embed/addField.mdx | 5 ++++- content/docs/(functions)/Text/Embed/addTimestamp.mdx | 5 ++++- content/docs/(functions)/Text/Embed/author.mdx | 5 ++++- content/docs/(functions)/Text/Embed/description.mdx | 5 ++++- content/docs/(functions)/Text/Embed/footer.mdx | 5 ++++- content/docs/(functions)/Text/Embed/image.mdx | 5 ++++- content/docs/(functions)/Text/Embed/thumbnail.mdx | 5 ++++- content/docs/(functions)/Text/Embed/title.mdx | 5 ++++- content/docs/(functions)/Text/Math/abbreviate.mdx | 5 ++++- content/docs/(functions)/Text/Math/divide.mdx | 5 ++++- content/docs/(functions)/Text/Math/math.mdx | 10 ++++++++-- content/docs/(functions)/Text/Math/modulo.mdx | 5 ++++- content/docs/(functions)/Text/Math/multi.mdx | 5 ++++- content/docs/(functions)/Text/Math/ordinal.mdx | 5 ++++- content/docs/(functions)/Text/Math/round.mdx | 5 ++++- content/docs/(functions)/Text/Math/roundTenth.mdx | 5 ++++- content/docs/(functions)/Text/Math/sub.mdx | 5 ++++- content/docs/(functions)/Text/Math/sum.mdx | 5 ++++- content/docs/(functions)/Text/Math/truncate.mdx | 5 ++++- content/docs/(functions)/Text/Object/ObjectCreate.mdx | 5 ++++- content/docs/(functions)/Text/Object/ObjectGet.mdx | 5 ++++- content/docs/(functions)/Text/Object/ObjectSet.mdx | 5 ++++- content/docs/(functions)/Text/Object/getObject.mdx | 5 ++++- content/docs/(functions)/Text/Regex/regexMatch.mdx | 5 ++++- content/docs/(functions)/Text/channelNSFW.mdx | 5 ++++- content/docs/(functions)/Text/disableMentions.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isBoosting.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isBot.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isDeafened.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isEmoji.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isHoisted.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isManaged.mdx | 5 ++++- .../docs/(functions)/Text/isandhas/isMentionable.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isMentioned.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isMuted.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isNumber.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isTicket.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isValidHex.mdx | 5 ++++- .../docs/(functions)/Text/isandhas/isValidInvite.mdx | 5 ++++- content/docs/(functions)/Text/isandhas/isValidLink.mdx | 5 ++++- .../docs/(functions)/Text/isandhas/isValidObject.mdx | 5 ++++- content/docs/(functions)/Text/mentionedChannels.mdx | 5 ++++- content/docs/(functions)/Text/mentionedRoles.mdx | 5 ++++- content/docs/(functions)/Text/noMentionMessage.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyBotPerms.mdx | 5 ++++- .../docs/(functions)/Text/only/onlyForCategories.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyForIDs.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyForRoles.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyIf.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyNSFW.mdx | 5 ++++- content/docs/(functions)/Text/only/onlyPerms.mdx | 5 ++++- .../(functions)/Text/textSplit/advancedTextSplit.mdx | 5 ++++- .../(functions)/Text/textSplit/concatTextSplit.mdx | 5 ++++- .../Text/textSplit/editTextSplitElement.mdx | 5 ++++- .../(functions)/Text/textSplit/findTextSplitIndex.mdx | 5 ++++- .../Text/textSplit/removeTextSplitElement.mdx | 5 ++++- .../docs/(functions)/Text/textSplit/spliceTextJoin.mdx | 5 ++++- content/docs/(functions)/Text/textSplit/splitText.mdx | 5 ++++- content/docs/(functions)/Text/textSplit/textSplit.mdx | 5 ++++- content/docs/(functions)/Threads/deleteThreads.mdx | 5 ++++- content/docs/(functions)/Threads/joinThreads.mdx | 5 ++++- content/docs/(functions)/Threads/leaveThreads.mdx | 5 ++++- content/docs/(functions)/Useful/spread.mdx | 5 ++++- .../docs/(functions)/Variables/deleteChannelVar.mdx | 5 ++++- .../docs/(functions)/Variables/deleteMessageVar.mdx | 5 ++++- content/docs/(functions)/Variables/deleteServerVar.mdx | 5 ++++- content/docs/(functions)/Variables/deleteUserVar.mdx | 5 ++++- content/docs/(functions)/Variables/get.mdx | 5 ++++- content/docs/(functions)/Variables/getChannelVar.mdx | 5 ++++- content/docs/(functions)/Variables/getMessageVar.mdx | 5 ++++- content/docs/(functions)/Variables/getServerVar.mdx | 5 ++++- content/docs/(functions)/Variables/getUserVar.mdx | 5 ++++- content/docs/(functions)/Variables/let.mdx | 5 ++++- content/docs/(functions)/Variables/resetUserVar.mdx | 5 ++++- content/docs/(functions)/Variables/setChannelVar.mdx | 5 ++++- content/docs/(functions)/Variables/setMessageVar.mdx | 5 ++++- content/docs/(functions)/Variables/setServerVar.mdx | 5 ++++- content/docs/(functions)/Variables/setUserVar.mdx | 5 ++++- content/docs/(functions)/Variables/userLeaderboard.mdx | 5 ++++- content/docs/CodeReferences/ref.channel_types.mdx | 5 ++++- content/docs/Contribution_Info/function_template.mdx | 5 ++++- 176 files changed, 714 insertions(+), 180 deletions(-) diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index c487bde6..08fb316e 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -4,11 +4,14 @@ title: "$botCount" This function returns the total number of bots present in your Discord server (guild). -#### Usage: `$botCount` +#### Usage +```cc +$botCount +``` Here's how you can use the `$botCount` function: -``` +```cc !!exec There are $botCount bots in the server! ``` diff --git a/content/docs/(functions)/Bot/cacheMember.mdx b/content/docs/(functions)/Bot/cacheMember.mdx index ceb69f12..cd881e62 100644 --- a/content/docs/(functions)/Bot/cacheMember.mdx +++ b/content/docs/(functions)/Bot/cacheMember.mdx @@ -8,7 +8,10 @@ This function caches a member in the bot's memory. This is useful for functions **Note:** Functions like `$toggleRoles` and `$giveRoles` don't require you to manually cache members, as they handle member retrieval internally. -#### Usage: `$cacheMember[userID (optional)]` +#### Usage +```cc +$cacheMember[userID (optional)] +``` * **`userID (optional)`:** The ID of the user you want to cache. If omitted, the function will attempt to cache the user who triggered the command. diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx index 806fff78..c10465d6 100644 --- a/content/docs/(functions)/Bot/clientID.mdx +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -4,7 +4,10 @@ title: "$clientID" Retrieves the bot's User ID, also referred to as the Client ID. This is a unique identifier for your bot on Discord. -#### Usage: `$clientID` +#### Usage +```cc +$clientID +```
    diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx index a65d9f5d..a05ba34a 100644 --- a/content/docs/(functions)/Bot/ping.mdx +++ b/content/docs/(functions)/Bot/ping.mdx @@ -4,7 +4,10 @@ title: "$ping" This command provides the bot's ping (latency) in milliseconds. It's a quick and easy way to check if the bot is online, responsive, and functioning correctly. Think of it like a simple "health check" for the bot! -#### Usage: `$ping` +#### Usage +```cc +$ping +```
    diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx index 2a3514b0..8bc9f790 100644 --- a/content/docs/(functions)/Bot/ram.mdx +++ b/content/docs/(functions)/Bot/ram.mdx @@ -4,7 +4,10 @@ title: "$ram" Displays the amount of RAM (Random Access Memory) currently being used by the bot. This command provides insight into the bot's resource consumption. -#### Usage: `$ram` +#### Usage +```cc +$ram +```
    diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx index 7b6ed1e7..420efc09 100644 --- a/content/docs/(functions)/Bot/serverCount.mdx +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -4,7 +4,10 @@ title: "$serverCount" This function returns the total number of servers (guilds) the bot is currently in. It's a simple way to display the bot's reach. -#### Usage: `$serverCount` +#### Usage +```cc +$serverCount +``` This function doesn't require any arguments. Just include it in your command response.
    diff --git a/content/docs/(functions)/Bot/uptime.mdx b/content/docs/(functions)/Bot/uptime.mdx index 419f0336..0aa08e75 100644 --- a/content/docs/(functions)/Bot/uptime.mdx +++ b/content/docs/(functions)/Bot/uptime.mdx @@ -4,7 +4,10 @@ title: "$uptime" This command displays how long the bot has been running since it was last started. -#### Usage: `$uptime` +#### Usage +```cc +$uptime +```
    diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index a2b6b11d..bfe534fc 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -4,7 +4,10 @@ title: "$channelCount" This function returns the total number of channels present in the server. -#### Usage: `$channelCount[Channel Type (optional)]` +#### Usage +```cc +$channelCount[Channel Type (optional)] +``` You can optionally specify a channel type to count only channels of that specific type. Refer to this [list](/CodeReferences/ref.channel_types) for valid channel types. diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index 98fb94d6..f6a03850 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -4,7 +4,10 @@ title: "$channelID" Returns the ID of the channel where the command is executed. You can also use it to find the ID of another channel by providing its name. -#### Usage: `$channelID[channel name (optional)]` +#### Usage +```cc +$channelID[channel name (optional)] +``` * If no channel name is provided, it returns the ID of the channel where the command was used. * If a channel name is provided, it returns the ID of the channel with that name. diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index b12f87ac..44345f7b 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -4,7 +4,10 @@ title: "$channelName" Retrieves the name of a Discord channel. -#### Usage: `$channelName[channelID]` +#### Usage +```cc +$channelName[channelID] +``` `` (Required): The ID of the channel you want to get the name of. diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index b403a022..f8659842 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -4,7 +4,10 @@ title: "$channelType" Retrieves the type of a channel based on its ID. -#### Usage: `$channelType[channelID]` +#### Usage +```cc +$channelType[channelID] +``` This function allows you to determine the type of a specific channel using its unique ID. diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index a3ceea62..e6521e89 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -4,7 +4,10 @@ title: "$channelUsed" Returns the ID of the channel used. If no channel ID is specified, it defaults to the current channel where the command was executed. -#### Usage: `$channelUsed[channelID (optional)]` +#### Usage +```cc +$channelUsed[channelID (optional)] +``` **Parameters:** diff --git a/content/docs/(functions)/Channel/closeTicket.mdx b/content/docs/(functions)/Channel/closeTicket.mdx index 0498b392..3840fda2 100644 --- a/content/docs/(functions)/Channel/closeTicket.mdx +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -4,7 +4,10 @@ title: "$closeTicket" Closes a ticket that was previously created by the bot using the `$newTicket` command. This is used to finalize and close a support or request ticket channel. -#### Usage: `$closeTicket[optional error message]` +#### Usage +```cc +$closeTicket[optional error message] +``` `$closeTicket` can optionally take an error message as an argument. This message will be displayed if there's an issue closing the ticket (although in most cases the ticket will close without errors). diff --git a/content/docs/(functions)/Channel/eventChannelID.mdx b/content/docs/(functions)/Channel/eventChannelID.mdx index fdf20c19..00537114 100644 --- a/content/docs/(functions)/Channel/eventChannelID.mdx +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -4,7 +4,10 @@ title: "$eventChannelID" Returns the ID of the channel that was created or deleted. This function is used specifically for the **Channel Creation** or **Channel Deletion** triggers. -#### Usage: `$eventChannelID` +#### Usage +```cc +$eventChannelID +``` diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index 6e3c70e7..8078b983 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -4,7 +4,10 @@ title: "$newTicket" Create a new support ticket. This function allows users to easily open tickets for assistance, which can be closed later using the `$closeTicket` function. -#### Usage: `$newTicket[ticket name;ticket message (optional);categoryID (optional);return ticket ID (yes/no) (optional);error message (optional)]` +#### Usage +```cc +$newTicket[ticket name;ticket message (optional);categoryID (optional);return ticket ID (yes/no) (optional);error message (optional)] +``` **Parameters:** diff --git a/content/docs/(functions)/Channel/useChannel.mdx b/content/docs/(functions)/Channel/useChannel.mdx index f4dfda3d..c50e3895 100644 --- a/content/docs/(functions)/Channel/useChannel.mdx +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -4,7 +4,10 @@ title: "$useChannel" This function allows you to specify a different channel for subsequent actions within your command. It essentially redirects where the following functions will execute. -#### Usage: `$useChannel[channelID]` +#### Usage +```cc +$useChannel[channelID] +``` * `channelID`: The ID of the channel you want to use. Make sure the bot has access to this channel. diff --git a/content/docs/(functions)/Date/creationDate.mdx b/content/docs/(functions)/Date/creationDate.mdx index 5af3fef4..ae5af6c4 100644 --- a/content/docs/(functions)/Date/creationDate.mdx +++ b/content/docs/(functions)/Date/creationDate.mdx @@ -4,7 +4,10 @@ title: "$creationDate" Retrieves the creation date of a Discord entity (channel, guild, emoji, user, or role) based on its ID. -#### Usage: `$creationDate[entityID;format (optional)]` +#### Usage +```cc +$creationDate[entityID;format (optional)] +``` **Arguments:** diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx index 4f81f556..6f051bc7 100644 --- a/content/docs/(functions)/Date/dateStamp.mdx +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -4,7 +4,10 @@ title: "$dateStamp" Returns the current Unix timestamp (the number of milliseconds that have elapsed since January 1, 1970 UTC). -#### Usage: `$dateStamp[Return in Seconds (Yes/No)]` +#### Usage +```cc +$dateStamp[Return in Seconds (Yes/No)] +``` This function allows you to retrieve the current timestamp in either milliseconds or seconds. diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx index 134d5606..3f4601bc 100644 --- a/content/docs/(functions)/Date/day.mdx +++ b/content/docs/(functions)/Date/day.mdx @@ -4,7 +4,10 @@ title: "$day" Returns the current date. Optionally, you can also retrieve the day of the week. -#### Usage: `$day[yes/no (optional)]` +#### Usage +```cc +$day[yes/no (optional)] +``` * **`$day`**: Returns the current date (day of the month). * **`$day[yes]`**: Returns the current date (day of the month) followed by the day of the week. diff --git a/content/docs/(functions)/Date/formatDate.mdx b/content/docs/(functions)/Date/formatDate.mdx index e4df33e9..a532b8ca 100644 --- a/content/docs/(functions)/Date/formatDate.mdx +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -4,7 +4,10 @@ title: "$formatDate" Formats a date provided as milliseconds, a string, or an ISO string into a specified format. You can find a detailed explanation of the formatting syntax [here](https://momentjs.com/docs/#/parsing/string-format/). -#### Usage: `$formatDate[date;format]` +#### Usage +```cc +$formatDate[date;format] +``` * **date:** The date to format. This can be: * Milliseconds (e.g., `1678886400000`) diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx index a8ca520f..6d6e495c 100644 --- a/content/docs/(functions)/Date/hour.mdx +++ b/content/docs/(functions)/Date/hour.mdx @@ -4,7 +4,10 @@ title: "$hour" This command returns the current hour (in 24-hour format). -#### Usage: `$hour` +#### Usage +```cc +$hour +``` **Example:** diff --git a/content/docs/(functions)/Date/humanizeMS.mdx b/content/docs/(functions)/Date/humanizeMS.mdx index dac78b6f..080e14c1 100644 --- a/content/docs/(functions)/Date/humanizeMS.mdx +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -4,7 +4,10 @@ title: "$humanizeMS" Converts milliseconds into a human-readable duration string. This function is useful for displaying elapsed time or time remaining in a user-friendly format. -#### Usage: `$humanizeMS[milliseconds; limit (optional); separator (optional)]` +#### Usage +```cc +$humanizeMS[milliseconds; limit (optional); separator (optional)] +``` * **`milliseconds`**: The number of milliseconds to convert. This is a required argument. * **`limit` (optional)**: The maximum number of units to display (e.g., if the limit is 2, it might show "2 years, 3 months" and omit days, hours, etc.). Defaults to showing all units if not specified. Must be a number. diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 3d447f94..42d373c7 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -4,7 +4,10 @@ title: "$memberJoinedDate" Retrieves the date and time a member joined the server. You can specify a user ID or use it without any arguments to get the join date of the command executor. -#### Usage: `$memberJoinedDate[userID;format(optional)]` or `$memberJoinedDate` +#### Usage +```cc +$memberJoinedDate[userID;format(optional)] +``` or `$memberJoinedDate` * `userID`: (Optional) The ID of the member you want to retrieve the join date for. If omitted, it will use the command executor's join date. * `format`: (Optional) Specifies whether to return the date or time. Can be either `date` or `time`. If omitted, it returns the full date and time. diff --git a/content/docs/(functions)/Date/month.mdx b/content/docs/(functions)/Date/month.mdx index 853740e9..4e498ea2 100644 --- a/content/docs/(functions)/Date/month.mdx +++ b/content/docs/(functions)/Date/month.mdx @@ -4,7 +4,10 @@ title: "$month" Returns the current month's number or name. -#### Usage: `$month[return name (yes/no)]` +#### Usage +```cc +$month[return name (yes/no)] +``` This function allows you to retrieve the current month in either its numerical representation (1-12) or its full name (e.g., January, February). diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx index 71253022..97fdd2ef 100644 --- a/content/docs/(functions)/Date/parseDate.mdx +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -4,7 +4,10 @@ title: "$parseDate" Converts milliseconds into a human-readable date or time format. -#### Usage: `$parseDate[milliseconds; format]` +#### Usage +```cc +$parseDate[milliseconds; format] +``` **Arguments:** diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx index 6517286c..39fb1a07 100644 --- a/content/docs/(functions)/Date/second.mdx +++ b/content/docs/(functions)/Date/second.mdx @@ -4,7 +4,10 @@ title: "$second" Returns the current second (0-59). -#### Usage: `$second` +#### Usage +```cc +$second +``` This function is simple! It just retrieves the current second of the minute. diff --git a/content/docs/(functions)/Date/timeStamp.mdx b/content/docs/(functions)/Date/timeStamp.mdx index a6fa96c9..88be38d6 100644 --- a/content/docs/(functions)/Date/timeStamp.mdx +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -6,7 +6,10 @@ Returns the current Unix timestamp (the number of milliseconds that have elapsed **Think of it as:** Getting a numerical representation of the current date and time. -#### Usage: `$timeStamp[Return in Seconds (Yes/No)]` +#### Usage +```cc +$timeStamp[Return in Seconds (Yes/No)] +``` * **`Return in Seconds (Yes/No)`**: This is an optional argument. * If set to `Yes`, the function will return the timestamp in seconds instead of milliseconds. diff --git a/content/docs/(functions)/Date/timezone.mdx b/content/docs/(functions)/Date/timezone.mdx index 1d93f4c6..a49a7c47 100644 --- a/content/docs/(functions)/Date/timezone.mdx +++ b/content/docs/(functions)/Date/timezone.mdx @@ -8,7 +8,10 @@ This function sets the timezone used by subsequent date and time functions withi To find a valid timezone name, refer to the comprehensive list on [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Use the values from the "TZ database name" column. -#### Usage: `$timezone[Region/City]` +#### Usage +```cc +$timezone[Region/City] +``` Replace `Region/City` with the desired timezone. For example, `Europe/Zurich` or `America/Los_Angeles`. diff --git a/content/docs/(functions)/Interaction/interactionDelete.mdx b/content/docs/(functions)/Interaction/interactionDelete.mdx index 402fdb22..c4bcce04 100644 --- a/content/docs/(functions)/Interaction/interactionDelete.mdx +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -4,7 +4,10 @@ title: "$interactionDelete" Deletes an interaction reply previously sent using `$interactionReply`. -#### Usage: `$interactionDelete[message ID (optional, defaults to the previous interaction reply)]` +#### Usage +```cc +$interactionDelete[message ID (optional, defaults to the previous interaction reply)] +```
    diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx index d2deaeb9..d5d6165e 100644 --- a/content/docs/(functions)/Interaction/interactionEdit.mdx +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -4,7 +4,10 @@ title: "$interactionEdit" Edits a previously sent interaction, typically one created using `$interactionReply`. -#### Usage: `$interactionEdit[New Message;message id (optional, defaults to the original interaction reply)]` +#### Usage +```cc +$interactionEdit[New Message;message id (optional, defaults to the original interaction reply)] +```
    diff --git a/content/docs/(functions)/Interaction/interactionId.mdx b/content/docs/(functions)/Interaction/interactionId.mdx index 945be3b5..fa7db3c9 100644 --- a/content/docs/(functions)/Interaction/interactionId.mdx +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -4,7 +4,10 @@ title: "$interactionId" Retrieves the unique ID of an interaction (e.g., button press, menu selection). -#### Usage: `$interactionId` +#### Usage +```cc +$interactionId +``` This function returns the unique identifier associated with a user interaction like pressing a button or selecting an option from a menu. This ID can be useful for tracking or logging specific interactions. diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 0bca422a..473e53f8 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -4,7 +4,10 @@ title: "$interactionReply" Sends a reply to an interaction (buttons, menus, slash commands). -#### Usage: `$interactionReply[message; ephemeral(yes/no); return id(yes/no)]` +#### Usage +```cc +$interactionReply[message; ephemeral(yes/no); return id(yes/no)] +``` **Parameters:** diff --git a/content/docs/(functions)/Interaction/modal.mdx b/content/docs/(functions)/Interaction/modal.mdx index cf1ca5c5..007dfbce 100644 --- a/content/docs/(functions)/Interaction/modal.mdx +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -3,7 +3,10 @@ title: "$modal" --- Used to send a modal, it must be used inside interaction like button/menu/slash triggers -#### Usage: `$modal[Input]` +#### Usage +```cc +$modal[Input] +``` **Input** will accept this format: diff --git a/content/docs/(functions)/Interaction/modalAnswer.mdx b/content/docs/(functions)/Interaction/modalAnswer.mdx index 6c89eca5..3abd8a09 100644 --- a/content/docs/(functions)/Interaction/modalAnswer.mdx +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -4,7 +4,10 @@ title: "$modalAnswer" Retrieves the value entered by a user in a modal. This function is used to access the data submitted through a modal triggered by the [`modal` trigger](/Trigger/modal). -**Usage:** `$modalAnswer[Input Value;Seperator (optional)]` +#### Usage +```cc +$modalAnswer[Input Value;Seperator (optional)] +``` **Parameters:** diff --git a/content/docs/(functions)/Interaction/modalID.mdx b/content/docs/(functions)/Interaction/modalID.mdx index 1159f9e6..1b006ab4 100644 --- a/content/docs/(functions)/Interaction/modalID.mdx +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -4,7 +4,10 @@ title: "$modalID" This variable returns the unique ID of the modal that activated the [modal trigger](/Trigger/modal). -**Usage:** `$modalID` +#### Usage +```cc +$modalID +``` diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/DM.mdx index a50e51d3..dec30551 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/DM.mdx @@ -6,7 +6,10 @@ title: "$DM" Sends the output of your code directly to the author via Discord Direct Message (DM), or to the specified user ID's DM. -#### Usage: `$dm[userID (optional)]` +#### Usage +```cc +$dm[userID (optional)] +``` **Explanation:** diff --git a/content/docs/(functions)/Message/addCmdReactions.mdx b/content/docs/(functions)/Message/addCmdReactions.mdx index e023e088..f20a5d01 100644 --- a/content/docs/(functions)/Message/addCmdReactions.mdx +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -6,7 +6,10 @@ Reacts to the user's message with multiple emojis. This function allows you to add multiple reactions to the message that triggered the command. -#### Usage: `$addCmdReactions[emoji1;emoji2;...]` +#### Usage +```cc +$addCmdReactions[emoji1;emoji2;...] +``` **Parameters:** diff --git a/content/docs/(functions)/Message/addMessageReactions.mdx b/content/docs/(functions)/Message/addMessageReactions.mdx index 4fa9b85d..6f4164c1 100644 --- a/content/docs/(functions)/Message/addMessageReactions.mdx +++ b/content/docs/(functions)/Message/addMessageReactions.mdx @@ -4,7 +4,10 @@ title: "$addMessageReactions" Adds reactions (emojis) to a message by its ID. -#### Usage: `$addMessageReactions[channelId;messageId;emoji;emoji;...]` +#### Usage +```cc +$addMessageReactions[channelId;messageId;emoji;emoji;...] +``` * **`channelId`**: The ID of the channel where the message is located. * **`messageId`**: The ID of the message to react to. diff --git a/content/docs/(functions)/Message/addReactions.mdx b/content/docs/(functions)/Message/addReactions.mdx index 30cf028b..50d15a37 100644 --- a/content/docs/(functions)/Message/addReactions.mdx +++ b/content/docs/(functions)/Message/addReactions.mdx @@ -4,7 +4,10 @@ title: "$addReactions" Adds reactions to the bot's response. -#### Usage: `$addReactions[emoji1;emoji2;...]` +#### Usage +```cc +$addReactions[emoji1;emoji2;...] +```
    diff --git a/content/docs/(functions)/Message/channelSendMessage.mdx b/content/docs/(functions)/Message/channelSendMessage.mdx index 3dc2f99e..5aae2aba 100644 --- a/content/docs/(functions)/Message/channelSendMessage.mdx +++ b/content/docs/(functions)/Message/channelSendMessage.mdx @@ -4,7 +4,10 @@ title: "$channelSendMessage" Sends a message to a specified channel. This function allows you to send messages to any channel your bot has access to. -#### Usage: `$channelSendMessage[channelID;message;return ID (yes/no) (optional, default=no)]` +#### Usage +```cc +$channelSendMessage[channelID;message;return ID (yes/no) (optional, default=no)] +``` | Parameter | Description | Required | Default | |---------------|----------------------------------------------------------------------------------------------------------------------------------------------------|----------|---------| diff --git a/content/docs/(functions)/Message/clearReaction.mdx b/content/docs/(functions)/Message/clearReaction.mdx index c4f548c0..e045aadc 100644 --- a/content/docs/(functions)/Message/clearReaction.mdx +++ b/content/docs/(functions)/Message/clearReaction.mdx @@ -4,7 +4,10 @@ title: "$clearReaction" Removes a specific reaction from a message for a given user. -#### Usage: `$clearReaction[channelId;messageId;userId;emoji]` +#### Usage +```cc +$clearReaction[channelId;messageId;userId;emoji] +``` **Parameters:** diff --git a/content/docs/(functions)/Message/clearReactions.mdx b/content/docs/(functions)/Message/clearReactions.mdx index 4fa6b363..245f998a 100644 --- a/content/docs/(functions)/Message/clearReactions.mdx +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -4,7 +4,10 @@ title: "$clearReactions" This function allows you to clear reactions from a specific message. You can either clear all reactions or only those associated with a particular emoji. -#### Usage: `$clearReactions[channelId;messageId;all/emoji]` +#### Usage +```cc +$clearReactions[channelId;messageId;all/emoji] +``` **Arguments:** diff --git a/content/docs/(functions)/Message/createWebhook.mdx b/content/docs/(functions)/Message/createWebhook.mdx index d68e6a39..9e90aec1 100644 --- a/content/docs/(functions)/Message/createWebhook.mdx +++ b/content/docs/(functions)/Message/createWebhook.mdx @@ -16,7 +16,10 @@ The bot requires the `Manage Webhooks` permission in the target channel to execu
    -#### Usage: `$createWebhook[channelID;name;avatarURL;returnWebhookID&Token (yes/no);separator]` +#### Usage +```cc +$createWebhook[channelID;name;avatarURL;returnWebhookID&Token (yes/no);separator] +``` **Parameters:** diff --git a/content/docs/(functions)/Message/deleteIn.mdx b/content/docs/(functions)/Message/deleteIn.mdx index 2ea4833b..5b2b98ce 100644 --- a/content/docs/(functions)/Message/deleteIn.mdx +++ b/content/docs/(functions)/Message/deleteIn.mdx @@ -4,7 +4,10 @@ title: "$deleteIn" Deletes the bot's message after a specified duration. -#### Usage: `$deleteIn[time]` +#### Usage +```cc +$deleteIn[time] +``` **Argument:** diff --git a/content/docs/(functions)/Message/deleteMessage.mdx b/content/docs/(functions)/Message/deleteMessage.mdx index f917158b..2edeb1ac 100644 --- a/content/docs/(functions)/Message/deleteMessage.mdx +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -4,7 +4,10 @@ title: "$deleteMessage" Deletes a specified message from a channel. -#### Usage: `$deleteMessage[channelID;messageID]` +#### Usage +```cc +$deleteMessage[channelID;messageID] +``` * **`channelID`**: The ID of the channel where the message is located. * **`messageID`**: The ID of the message to delete. diff --git a/content/docs/(functions)/Message/deleteWebhook.mdx b/content/docs/(functions)/Message/deleteWebhook.mdx index 01886b04..3ddaa443 100644 --- a/content/docs/(functions)/Message/deleteWebhook.mdx +++ b/content/docs/(functions)/Message/deleteWebhook.mdx @@ -4,7 +4,10 @@ title: "$deleteWebhook" Deletes a webhook using its ID and token. -#### Usage: `$deleteWebhook[webhookID;webhookToken]` +#### Usage +```cc +$deleteWebhook[webhookID;webhookToken] +``` This function requires both the Webhook ID and Token to function correctly. Ensure you have both available before using this function. diff --git a/content/docs/(functions)/Message/editMessage.mdx b/content/docs/(functions)/Message/editMessage.mdx index f2b1d378..18aa0f5a 100644 --- a/content/docs/(functions)/Message/editMessage.mdx +++ b/content/docs/(functions)/Message/editMessage.mdx @@ -4,7 +4,10 @@ title: "$editMessage" Edits a message previously sent by the bot. This function allows you to modify the content of a message. -#### Usage: `$editMessage[messageId;newMessage;channelId (optional)]` +#### Usage +```cc +$editMessage[messageId;newMessage;channelId (optional)] +``` * **`messageId`**: The ID of the message you want to edit. * **`newMessage`**: The new content of the message. diff --git a/content/docs/(functions)/Message/forwardMessage.mdx b/content/docs/(functions)/Message/forwardMessage.mdx index 66f1d1b7..8fb2177e 100644 --- a/content/docs/(functions)/Message/forwardMessage.mdx +++ b/content/docs/(functions)/Message/forwardMessage.mdx @@ -4,7 +4,10 @@ title: "$forwardMessage" forward a message to another channel -#### Usage: `$forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return the new message id (yes/no)]` +#### Usage +```cc +$forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return the new message id (yes/no)] +``` #### Example Forwarding a message with ID `1234` to another channel called `Target Channel` diff --git a/content/docs/(functions)/Message/getCommandOption.mdx b/content/docs/(functions)/Message/getCommandOption.mdx index 72ff4f97..7107387c 100644 --- a/content/docs/(functions)/Message/getCommandOption.mdx +++ b/content/docs/(functions)/Message/getCommandOption.mdx @@ -4,7 +4,10 @@ title: "$getCommandOption" Retrieves the value of a specific option from a slash command. -#### Usage: `$getCommandOption[type;Option Name]` +#### Usage +```cc +$getCommandOption[type;Option Name] +``` ## Option Types diff --git a/content/docs/(functions)/Message/getReactions.mdx b/content/docs/(functions)/Message/getReactions.mdx index f5122a0c..aed6c875 100644 --- a/content/docs/(functions)/Message/getReactions.mdx +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -4,7 +4,10 @@ title: "$getReactions" Retrieve a list of users who reacted with a specific emoji to a message. -#### Usage: `$getReactions[channelId;messageId;emoji;mention/username/id]` +#### Usage +```cc +$getReactions[channelId;messageId;emoji;mention/username/id] +``` **Parameters:** diff --git a/content/docs/(functions)/Message/messageFlags.mdx b/content/docs/(functions)/Message/messageFlags.mdx index 3317a263..d245ffd4 100644 --- a/content/docs/(functions)/Message/messageFlags.mdx +++ b/content/docs/(functions)/Message/messageFlags.mdx @@ -4,7 +4,10 @@ title: "$messageFlags" This function retrieves the flags associated with a message. Message flags provide additional information about the message, such as whether it's a crosspost or if it's a system message. -#### Usage: `$messageFlags` +#### Usage +```cc +$messageFlags +```
    diff --git a/content/docs/(functions)/Message/messageID.mdx b/content/docs/(functions)/Message/messageID.mdx index 87013139..818e5ab4 100644 --- a/content/docs/(functions)/Message/messageID.mdx +++ b/content/docs/(functions)/Message/messageID.mdx @@ -4,9 +4,12 @@ title: "$messageID" Retrieves the ID of the message that triggered the command. -**Description:** This function returns the unique ID of the Discord message that initiated the execution of your custom command. +This function returns the unique ID of the Discord message that initiated the execution of your custom command. -**Usage:** `$messageID` +#### Usage +```cc +$messageID +``` **Example:** diff --git a/content/docs/(functions)/Message/messageSlice.mdx b/content/docs/(functions)/Message/messageSlice.mdx index b6c4bbad..72697d70 100644 --- a/content/docs/(functions)/Message/messageSlice.mdx +++ b/content/docs/(functions)/Message/messageSlice.mdx @@ -4,7 +4,10 @@ title: "$messageSlice" Extracts a portion of the message arguments, from a specified start position to an optional end position. -#### Usage: `$messageSlice[from;to (optional)]` +#### Usage +```cc +$messageSlice[from;to (optional)] +``` * `from`: The starting index (1-based) of the argument you want to extract. * `to`: (Optional) The ending index (1-based) of the argument you want to extract. If omitted, it slices from `from` to the end of the message. diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx index da7590cb..bbe83a16 100644 --- a/content/docs/(functions)/Message/messageType.mdx +++ b/content/docs/(functions)/Message/messageType.mdx @@ -4,7 +4,10 @@ title: "$messageType" This function returns the type of the message that triggered the command. This can be useful for creating commands that behave differently depending on how they were called. -#### Usage: `$messageType` +#### Usage +```cc +$messageType +```
    diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index cc89e717..9f0c166e 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -4,7 +4,10 @@ title: "$msg" The `$msg` function is a powerful and compact tool that lets you extract a wide range of information from Discord messages. -### Usage: `$msg[channelid;messageid;property]` +### Usage +```cc +$msg[channelid;messageid;property] +``` To use the `$msg` function, you need to provide the channel ID, the message ID, and the specific property you want to retrieve. Let's break it down: diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx index 3c3ec5c7..eee12e3a 100644 --- a/content/docs/(functions)/Message/noEscapingMessage.mdx +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -6,7 +6,10 @@ title: "$noEscapingMessage" This function behaves similarly to `$message`, but it **does not escape special characters**. This means characters like backticks (`) or newlines will be interpreted literally and won't be replaced with their escaped counterparts. -#### Usage: `$noEscapingMessage` +#### Usage +```cc +$noEscapingMessage +```
    diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index 757825b9..ad4feab5 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -6,7 +6,10 @@ title: "$sendDM" Sends the output of the code to the message author's DMs or to the DMs of a specified user. -#### Usage: `$sendDM[userID;message]` +#### Usage +```cc +$sendDM[userID;message] +``` * `userID`: (Optional) The ID of the user to send the DM to. If omitted, the DM will be sent to the message author. * `message`: The message to send in the DM. diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 692188e2..4738abdb 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -4,7 +4,10 @@ title: "$sendMessage" Sends a message to the channel where the command was executed. -#### Usage: `$sendMessage[message;return ID (yes/no) (optional)]` +#### Usage +```cc +$sendMessage[message;return ID (yes/no) (optional)] +``` **Arguments:** diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index 99e39401..d8035c49 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -4,7 +4,10 @@ title: "$sendWebhook" Sends a message via a Discord webhook using its ID and token. -#### Usage: `$sendWebhook[webhookID;webhookToken;message;return message ID (yes/no, optional);username (optional);avatar URL (optional)]` +#### Usage +```cc +$sendWebhook[webhookID;webhookToken;message;return message ID (yes/no, optional);username (optional);avatar URL (optional)] +``` * **webhookID:** The ID of the webhook. * **webhookToken:** The token of the webhook. diff --git a/content/docs/(functions)/Random/resetRandom.mdx b/content/docs/(functions)/Random/resetRandom.mdx index 60617440..0ce7c063 100644 --- a/content/docs/(functions)/Random/resetRandom.mdx +++ b/content/docs/(functions)/Random/resetRandom.mdx @@ -4,7 +4,10 @@ title: "$resetRandom" The `$resetRandom` function clears the stored seed used by the `$random` function, effectively resetting the random number generator. This means that subsequent calls to `$random` will generate a new sequence of random numbers, potentially different from the previous sequence before the reset. This is useful when you want to ensure a fresh set of random numbers. -### Usage: `$resetRandom` +### Usage +```cc +$resetRandom +``` **Explanation:** diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index 279a58bc..754599f2 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -4,7 +4,10 @@ title: "$blackListRoleIds" This function prevents users with specific roles from using a command. You specify the role IDs and an error message to display when someone with a blacklisted role tries to execute the command. -#### Usage: `$blackListRoleIDs[roleID;roleID;...;error message]` +#### Usage +```cc +$blackListRoleIDs[roleID;roleID;...;error message] +``` * **roleID:** The ID of the role you want to blacklist. Separate multiple role IDs with a semicolon (;). * **error message:** The message the bot will send if a user with a blacklisted role tries to use the command. diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx index 272c0d05..75f119fd 100644 --- a/content/docs/(functions)/Role/colorRole.mdx +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -4,7 +4,10 @@ title: "$colorRole" Changes the color of given role ID -#### Usage: `$colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)]` +#### Usage +```cc +$colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)] +``` ### Example (Primary Color) ```cc diff --git a/content/docs/(functions)/Role/getRoleColor.mdx b/content/docs/(functions)/Role/getRoleColor.mdx index 0e3cd3c7..e42e0901 100644 --- a/content/docs/(functions)/Role/getRoleColor.mdx +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -4,7 +4,10 @@ title: "$getRoleColor" Retrieves the hexadecimal color code of a role. -#### Usage: `$getRoleColor[roleID]` +#### Usage +```cc +$getRoleColor[roleID] +``` **Arguments:** diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx index eb07205b..68576639 100644 --- a/content/docs/(functions)/Role/hasRole.mdx +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -4,7 +4,10 @@ title: "$hasRole" Determines if a user possesses a specific role within the server. Returns `true` if the user has the role, and `false` otherwise. -#### Usage: `$hasRole[userID;roleID]` +#### Usage +```cc +$hasRole[userID;roleID] +``` * **userID:** The ID of the user you want to check. You can use `$authorID` to check the message author. * **roleID:** The ID of the role you want to check for. diff --git a/content/docs/(functions)/Role/highestServerRole.mdx b/content/docs/(functions)/Role/highestServerRole.mdx index 03bf133c..0275eb0f 100644 --- a/content/docs/(functions)/Role/highestServerRole.mdx +++ b/content/docs/(functions)/Role/highestServerRole.mdx @@ -4,7 +4,10 @@ title: "$highestServerRole" Retrieves the ID of the server's highest role. This is the role with the highest position in the server's role hierarchy. -#### Usage: `$highestServerRole` +#### Usage +```cc +$highestServerRole +``` This function is very simple to use and requires no arguments. It will simply return the ID of the highest role on the server where the command is executed. diff --git a/content/docs/(functions)/Role/lowestServerRole.mdx b/content/docs/(functions)/Role/lowestServerRole.mdx index 2cf77874..6d3ff645 100644 --- a/content/docs/(functions)/Role/lowestServerRole.mdx +++ b/content/docs/(functions)/Role/lowestServerRole.mdx @@ -4,7 +4,10 @@ title: "$lowestServerRole" Retrieves the ID of the server's lowest role (the role with the highest position in the role hierarchy). -#### Usage: `$lowestServerRole` +#### Usage +```cc +$lowestServerRole +``` This function returns the ID of the role that's at the bottom of your server's role list. Think of it as the highest role in terms of permissions and precedence. diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index b511738d..bbdd2fbc 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -4,7 +4,10 @@ title: "$role" A powerful and compact function to retrieve various properties of a Discord role! -### Usage: `$role[roleid;property]` +### Usage +```cc +$role[roleid;property] +``` This function takes two arguments: diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index d62d38cc..c816df05 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -4,7 +4,10 @@ title: "$roleCount" The `$roleCount` function returns the total number of roles present in your Discord server (guild). -#### Usage: `$roleCount` +#### Usage +```cc +$roleCount +``` This function is straightforward to use. Simply include it in your command response to display the role count. diff --git a/content/docs/(functions)/Role/roleMembersCount.mdx b/content/docs/(functions)/Role/roleMembersCount.mdx index 1fa40985..e0e66979 100644 --- a/content/docs/(functions)/Role/roleMembersCount.mdx +++ b/content/docs/(functions)/Role/roleMembersCount.mdx @@ -10,7 +10,10 @@ The data used by this function comes from the bot's cache, not the Discord API d
    -**Usage:** `$roleMembersCount[roleId]` +#### Usage +```cc +$roleMembersCount[roleId] +``` * `roleId`: The ID of the Discord role you want to count members for. You can get this ID by right-clicking the role in your server settings (make sure you have Developer Mode enabled in Discord settings). diff --git a/content/docs/(functions)/Server/addEmoji.mdx b/content/docs/(functions)/Server/addEmoji.mdx index 67c30610..9fbe9c54 100644 --- a/content/docs/(functions)/Server/addEmoji.mdx +++ b/content/docs/(functions)/Server/addEmoji.mdx @@ -4,7 +4,10 @@ title: "$addEmoji" Adds an emoji to the current Discord server (guild). You can optionally restrict the emoji's use to specific roles. -#### Usage: `$addEmoji[url;name;returnEmoji (yes/no)(optional);roleID1;roleID2;...]` +#### Usage +```cc +$addEmoji[url;name;returnEmoji (yes/no)(optional);roleID1;roleID2;...] +``` **Parameters:** diff --git a/content/docs/(functions)/Server/allMembersCount.mdx b/content/docs/(functions)/Server/allMembersCount.mdx index 28877860..a23d78a3 100644 --- a/content/docs/(functions)/Server/allMembersCount.mdx +++ b/content/docs/(functions)/Server/allMembersCount.mdx @@ -4,7 +4,10 @@ title: "$allMembersCount" Returns the total number of users the bot is currently serving across all servers it's in. -#### Usage: `$allMembersCount` +#### Usage +```cc +$allMembersCount +```
    diff --git a/content/docs/(functions)/Server/guild.mdx b/content/docs/(functions)/Server/guild.mdx index 156e1f98..aa4f6b07 100644 --- a/content/docs/(functions)/Server/guild.mdx +++ b/content/docs/(functions)/Server/guild.mdx @@ -4,7 +4,10 @@ title: "$guild" A versatile function packed with information about the current server! -### Usage: `$guild[property]` +### Usage +```cc +$guild[property] +``` This function allows you to retrieve various details about the server where the command is executed. Simply specify the desired property within the square brackets. diff --git a/content/docs/(functions)/Server/membersCount.mdx b/content/docs/(functions)/Server/membersCount.mdx index f3818eaf..d44b92ae 100644 --- a/content/docs/(functions)/Server/membersCount.mdx +++ b/content/docs/(functions)/Server/membersCount.mdx @@ -4,7 +4,10 @@ title: "$membersCount" Returns the amount of users in your server/guild! -#### Usage: `$membersCount` +#### Usage +```cc +$membersCount +``` ```cc !!exec There are `$membersCount` members in the server! diff --git a/content/docs/(functions)/Server/ownerID.mdx b/content/docs/(functions)/Server/ownerID.mdx index 6b18e3ea..fd8eb681 100644 --- a/content/docs/(functions)/Server/ownerID.mdx +++ b/content/docs/(functions)/Server/ownerID.mdx @@ -4,7 +4,10 @@ title: "$ownerID" Returns the guild's owner ID. -#### Usage: `$ownerID` +#### Usage +```cc +$ownerID +```
    diff --git a/content/docs/(functions)/Server/serverBanner.mdx b/content/docs/(functions)/Server/serverBanner.mdx index eb4c1256..589a21e5 100644 --- a/content/docs/(functions)/Server/serverBanner.mdx +++ b/content/docs/(functions)/Server/serverBanner.mdx @@ -4,7 +4,10 @@ title: "$serverBanner" Returns the current server banner -#### Usage: `$serverBanner[size (optional);dynamic (yes/no)(optional)]` +#### Usage +```cc +$serverBanner[size (optional);dynamic (yes/no)(optional)] +``` **Description:** diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx index 791c779d..b8ad5f0d 100644 --- a/content/docs/(functions)/Server/serverBoostCount.mdx +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -4,7 +4,10 @@ title: "$serverBoostCount" Returns the number of boosts this server has. -#### Usage: `$serverBoostCount` +#### Usage +```cc +$serverBoostCount +```
    diff --git a/content/docs/(functions)/Server/serverBoostLevel.mdx b/content/docs/(functions)/Server/serverBoostLevel.mdx index d5e3a718..894f91c1 100644 --- a/content/docs/(functions)/Server/serverBoostLevel.mdx +++ b/content/docs/(functions)/Server/serverBoostLevel.mdx @@ -4,7 +4,10 @@ title: "$serverBoostLevel" Returns the boost level of the server. -#### Usage: `$serverBoostLevel` +#### Usage +```cc +$serverBoostLevel +``` This command retrieves the current boost level of the Discord server. Boost levels range from 0 (no boosts) to 3 (highest level). diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index a1953eb9..b64bff48 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -4,7 +4,10 @@ title: "$serverContentFilter" Returns the content filter level of this guild. This determines the level of explicit content filtering applied to media content within the server. -#### Usage: `$serverContentFilter` +#### Usage +```cc +$serverContentFilter +```
    diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx index 8952d656..538d6f08 100644 --- a/content/docs/(functions)/Server/serverDescription.mdx +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -4,7 +4,10 @@ title: "$serverDescription" Returns the current server description -#### Usage: `$serverDescription` +#### Usage +```cc +$serverDescription +```
    @@ -22,7 +25,10 @@ Custom Command Support Server Returns the current server description. This command retrieves the description set for the Discord server. -#### Usage: `$serverDescription` +#### Usage +```cc +$serverDescription +```
    diff --git a/content/docs/(functions)/Server/serverEmojis.mdx b/content/docs/(functions)/Server/serverEmojis.mdx index c15fe0dd..597692d6 100644 --- a/content/docs/(functions)/Server/serverEmojis.mdx +++ b/content/docs/(functions)/Server/serverEmojis.mdx @@ -4,7 +4,10 @@ title: "serverEmojis" Returns the server emojis. -#### Usage: `$serverEmojis` +#### Usage +```cc +$serverEmojis +```
    diff --git a/content/docs/(functions)/Server/serverFeatures.mdx b/content/docs/(functions)/Server/serverFeatures.mdx index 82bca8ad..18f0a9db 100644 --- a/content/docs/(functions)/Server/serverFeatures.mdx +++ b/content/docs/(functions)/Server/serverFeatures.mdx @@ -4,7 +4,10 @@ title: "serverFeatures" Returns the server features. This function returns a comma-separated list of features enabled on the server. -#### Usage: `$serverFeatures` +#### Usage +```cc +$serverFeatures +```
    diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx index 214c7705..35e38bac 100644 --- a/content/docs/(functions)/Server/serverIcon.mdx +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -4,7 +4,10 @@ title: "$serverIcon" Returns the current server's icon. -#### Usage: `$serverIcon` +#### Usage +```cc +$serverIcon +```
    diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx index 0169ddc6..a0cc105e 100644 --- a/content/docs/(functions)/Server/serverName.mdx +++ b/content/docs/(functions)/Server/serverName.mdx @@ -4,7 +4,10 @@ title: "$serverName" Returns the name of the current server. -#### Usage: `$serverName` +#### Usage +```cc +$serverName +```
    diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx index 92fd0f26..96631702 100644 --- a/content/docs/(functions)/Server/serverRegion.mdx +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -4,7 +4,10 @@ title: "$serverRegion" Returns the current server region or `undefined` if not available. -#### Usage: `$serverRegion` +#### Usage +```cc +$serverRegion +```
    diff --git a/content/docs/(functions)/Server/serverSplash.mdx b/content/docs/(functions)/Server/serverSplash.mdx index 8ac3fead..128a9ebd 100644 --- a/content/docs/(functions)/Server/serverSplash.mdx +++ b/content/docs/(functions)/Server/serverSplash.mdx @@ -4,7 +4,10 @@ title: "$serverSplash" Returns the current server invite splash -#### Usage: `$serverSplash[size (optional)]` +#### Usage +```cc +$serverSplash[size (optional)] +``` Learn more about it: https://support.discord.com/hc/en-us/articles/360028716472-Server-Banner-Background-Invite-Splash-Image diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx index 6eacdb69..45495224 100644 --- a/content/docs/(functions)/Server/serverVerificationLevel.mdx +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -4,7 +4,10 @@ title: "$serverVerificationLevel" Returns the verification level of the server -#### Usage: `$serverVerificationLevel` +#### Usage +```cc +$serverVerificationLevel +```
    diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx index 2f95820b..24f9ad1d 100644 --- a/content/docs/(functions)/Server/setGuildIcon.mdx +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -4,7 +4,10 @@ title: "$setGuildIcon" Sets a new Icon for the server -#### Usage: `$setGuildIcon[URL]` +#### Usage +```cc +$setGuildIcon[URL] +``` diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx index f54dc92a..9d9dafe9 100644 --- a/content/docs/(functions)/Server/setGuildName.mdx +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -4,7 +4,10 @@ title: "$setGuildName" Sets the name of your server to something, you have put in. -#### Usage: `$setGuildName[name]` +#### Usage +```cc +$setGuildName[name] +``` diff --git a/content/docs/(functions)/Server/systemChannelID.mdx b/content/docs/(functions)/Server/systemChannelID.mdx index 3a1e7185..578cbfca 100644 --- a/content/docs/(functions)/Server/systemChannelID.mdx +++ b/content/docs/(functions)/Server/systemChannelID.mdx @@ -6,7 +6,10 @@ title: "$systemChannelID" Returns the system channel ID of this server (if any) -#### Usage: `$systemChannelID` +#### Usage +```cc +$systemChannelID +```
    diff --git a/content/docs/(functions)/Text/Components/awaitButton.mdx b/content/docs/(functions)/Text/Components/awaitButton.mdx index 29bc9e41..5b7f41d4 100644 --- a/content/docs/(functions)/Text/Components/awaitButton.mdx +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -10,7 +10,10 @@ This way, you can send a message with buttons by using `{button:label:style/url:
    -#### Usage: `$awaitButton[Message (optional);user id (optional, default:author);timeout (optional, default:15s);button id1 (optional);button id2...]` +#### Usage +```cc +$awaitButton[Message (optional);user id (optional, default:author);timeout (optional, default:15s);button id1 (optional);button id2...] +```
    ### Timeout diff --git a/content/docs/(functions)/Text/Components/disableButton.mdx b/content/docs/(functions)/Text/Components/disableButton.mdx index d5eac1e9..84f473d0 100644 --- a/content/docs/(functions)/Text/Components/disableButton.mdx +++ b/content/docs/(functions)/Text/Components/disableButton.mdx @@ -4,7 +4,10 @@ title: "$disableButton" Disables a button using its `(ID/label/Emoji/URL)`. -#### Usage: `$disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the last button); Channel ID (optional, default $channelID)]` +#### Usage +```cc +$disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the last button); Channel ID (optional, default $channelID)] +``` ##### Example (Disable button by emoji) diff --git a/content/docs/(functions)/Text/Components/editButton.mdx b/content/docs/(functions)/Text/Components/editButton.mdx index e035c5f9..2cadda74 100644 --- a/content/docs/(functions)/Text/Components/editButton.mdx +++ b/content/docs/(functions)/Text/Components/editButton.mdx @@ -4,7 +4,10 @@ title: "$editButton" Edits an existing button using its `(ID/label/Emoji/URL)`. -#### Usage: `$editButton[Message ID;Query (optional, default: edit the last button);label/style/emoji/disabled/url/custom_id;New Value]` +#### Usage +```cc +$editButton[Message ID;Query (optional, default: edit the last button);label/style/emoji/disabled/url/custom_id;New Value] +``` diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx index e3651e27..84810160 100644 --- a/content/docs/(functions)/Text/Components/removeButton.mdx +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -4,7 +4,10 @@ title: "$removeButton" Removes a button from an existing message using its `(ID/label/Emoji/URL)`. -#### Usage: `$removeButton[Message ID;Label/Emoji/URL/ID (optional, empty means removing the last button)]` +#### Usage +```cc +$removeButton[Message ID;Label/Emoji/URL/ID (optional, empty means removing the last button)] +```
    diff --git a/content/docs/(functions)/Text/Components/removeButtons.mdx b/content/docs/(functions)/Text/Components/removeButtons.mdx index 3ac20c7f..ef609407 100644 --- a/content/docs/(functions)/Text/Components/removeButtons.mdx +++ b/content/docs/(functions)/Text/Components/removeButtons.mdx @@ -4,7 +4,10 @@ title: "$removeButtons" Removes multiple buttons from a message using their IDs. -#### Usage: `$removeButtons[Message ID;Button ID1;Button ID2...]` +#### Usage +```cc +$removeButtons[Message ID;Button ID1;Button ID2...] +```
    ![](https://cdn.discordapp.com/attachments/914682255346118687/938537575486980136/Screenshot_20220202175147_1.jpg) diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index d81b40e3..73d824e1 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -4,7 +4,10 @@ title: "$selectMenu" Creates a Menu with options. -#### Usage: `$selectMenu[{menu structure]` works only for one option +#### Usage +```cc +$selectMenu[{menu structure] +``` works only for one option #### Menu Structure to construct a menu inside $selectMenu, it needs to follow this structure diff --git a/content/docs/(functions)/Text/Embed/addField.mdx b/content/docs/(functions)/Text/Embed/addField.mdx index 9107fbb3..dbfaae04 100644 --- a/content/docs/(functions)/Text/Embed/addField.mdx +++ b/content/docs/(functions)/Text/Embed/addField.mdx @@ -4,7 +4,10 @@ title: "$addField" Adds fields to a message embed. -#### Usage: `$addField[title;value;inline(yes/no default=yes)(optional)]` +#### Usage +```cc +$addField[title;value;inline(yes/no default=yes)(optional)] +```
    diff --git a/content/docs/(functions)/Text/Embed/addTimestamp.mdx b/content/docs/(functions)/Text/Embed/addTimestamp.mdx index 24e14776..e2b6ede9 100644 --- a/content/docs/(functions)/Text/Embed/addTimestamp.mdx +++ b/content/docs/(functions)/Text/Embed/addTimestamp.mdx @@ -4,7 +4,10 @@ title: "$addTimestamp" Adds a timestamp to a message embed. -#### Usage: `$addTimestamp` or `$addTimestamp[ms]` +#### Usage +```cc +$addTimestamp +``` or `$addTimestamp[ms]`
    diff --git a/content/docs/(functions)/Text/Embed/author.mdx b/content/docs/(functions)/Text/Embed/author.mdx index 479ecd12..852e41ec 100644 --- a/content/docs/(functions)/Text/Embed/author.mdx +++ b/content/docs/(functions)/Text/Embed/author.mdx @@ -4,7 +4,10 @@ title: "$author" Adds an author to a message embed, with an optional icon url and/or hyperlink. -#### Usage: `$author[text;icon url(optional);hyperlink(optional)]` +#### Usage +```cc +$author[text;icon url(optional);hyperlink(optional)] +```
    diff --git a/content/docs/(functions)/Text/Embed/description.mdx b/content/docs/(functions)/Text/Embed/description.mdx index cd982154..d672a9ee 100644 --- a/content/docs/(functions)/Text/Embed/description.mdx +++ b/content/docs/(functions)/Text/Embed/description.mdx @@ -4,7 +4,10 @@ title: "$description" Adds a description to a message embed. -#### Usage: `$description[your text]` +#### Usage +```cc +$description[your text] +```
    diff --git a/content/docs/(functions)/Text/Embed/footer.mdx b/content/docs/(functions)/Text/Embed/footer.mdx index 2ebb73ef..9a4f1f62 100644 --- a/content/docs/(functions)/Text/Embed/footer.mdx +++ b/content/docs/(functions)/Text/Embed/footer.mdx @@ -4,7 +4,10 @@ title: "$footer" Adds a footer to a message embed with an optional icon url -#### Usage: `$footer[text;icon url(optional)]` +#### Usage +```cc +$footer[text;icon url(optional)] +```
    diff --git a/content/docs/(functions)/Text/Embed/image.mdx b/content/docs/(functions)/Text/Embed/image.mdx index a6225401..0a28a6e7 100644 --- a/content/docs/(functions)/Text/Embed/image.mdx +++ b/content/docs/(functions)/Text/Embed/image.mdx @@ -4,7 +4,10 @@ title: "$image" Adds an image to a message embed -#### Usage: `$image[YOUR URL HERE]` +#### Usage +```cc +$image[YOUR URL HERE] +```
    diff --git a/content/docs/(functions)/Text/Embed/thumbnail.mdx b/content/docs/(functions)/Text/Embed/thumbnail.mdx index 216ba7cf..9b1172ff 100644 --- a/content/docs/(functions)/Text/Embed/thumbnail.mdx +++ b/content/docs/(functions)/Text/Embed/thumbnail.mdx @@ -4,7 +4,10 @@ title: "$thumbnail" Adds a thumbnail to a message embed. -#### Usage: `$thumbnail[YOUR URL HERE]` +#### Usage +```cc +$thumbnail[YOUR URL HERE] +```
    diff --git a/content/docs/(functions)/Text/Embed/title.mdx b/content/docs/(functions)/Text/Embed/title.mdx index 30998f14..0b6eddff 100644 --- a/content/docs/(functions)/Text/Embed/title.mdx +++ b/content/docs/(functions)/Text/Embed/title.mdx @@ -4,7 +4,10 @@ title: "$title" Adds a title to a message embed. -#### Usage: `$title[YOUR TITLE TEXT HERE;url(optional)]` +#### Usage +```cc +$title[YOUR TITLE TEXT HERE;url(optional)] +```
    diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx index 92f889d0..1469d47b 100644 --- a/content/docs/(functions)/Text/Math/abbreviate.mdx +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -9,7 +9,10 @@ Abbreviation to: * b - billions * t - trillions -#### Usage: `$abbreviate[number]` +#### Usage +```cc +$abbreviate[number] +```
    diff --git a/content/docs/(functions)/Text/Math/divide.mdx b/content/docs/(functions)/Text/Math/divide.mdx index e700dd7f..bb9852ad 100644 --- a/content/docs/(functions)/Text/Math/divide.mdx +++ b/content/docs/(functions)/Text/Math/divide.mdx @@ -4,7 +4,10 @@ title: "$divide" divides (a) number(s) from each other, from left to right -#### Usage: `$divide[10;2;...]` +#### Usage +```cc +$divide[10;2;...] +```
    diff --git a/content/docs/(functions)/Text/Math/math.mdx b/content/docs/(functions)/Text/Math/math.mdx index 62c089b5..1ed73d29 100644 --- a/content/docs/(functions)/Text/Math/math.mdx +++ b/content/docs/(functions)/Text/Math/math.mdx @@ -5,8 +5,14 @@ title: "$math" Calculates numbers with any mathematically correct quantifier(s) in between. -#### Usage: `$math[10*(2+5)/7*8-2]` -e#### Usage: `$math[Expression;Name1=Value1;Name1=Value2]` +#### Usage +```cc +$math[10*(2+5)/7*8-2] +``` +e#### Usage +```cc +$math[Expression;Name1=Value1;Name1=Value2] +```
    diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx index 32265fa5..34e5025c 100644 --- a/content/docs/(functions)/Text/Math/modulo.mdx +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -4,7 +4,10 @@ title: "$modulo" calculates the remainder of a division operation -#### Usage: `$modulo[10;2;...]` +#### Usage +```cc +$modulo[10;2;...] +```
    diff --git a/content/docs/(functions)/Text/Math/multi.mdx b/content/docs/(functions)/Text/Math/multi.mdx index a57c0a96..48a06a87 100644 --- a/content/docs/(functions)/Text/Math/multi.mdx +++ b/content/docs/(functions)/Text/Math/multi.mdx @@ -4,7 +4,10 @@ title: "$multi" Multiplies (a) number(s) with each other -#### Usage: `$multi[10;4;...]` +#### Usage +```cc +$multi[10;4;...] +```
    diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx index 7992ce98..593b7642 100644 --- a/content/docs/(functions)/Text/Math/ordinal.mdx +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -5,7 +5,10 @@ title: "$ordinal" adds the correct suffix after the number `st`,`nd`,`rd`,`th` -#### Usage: `$ordinal[number]` +#### Usage +```cc +$ordinal[number] +```
    diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx index 53f6aa34..6477e7a4 100644 --- a/content/docs/(functions)/Text/Math/round.mdx +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -4,7 +4,10 @@ title: "$round" Rounds the number to the nearest integer. -#### Usage: `$round[number]` +#### Usage +```cc +$round[number] +```
    diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx index 490aca7f..96885b33 100644 --- a/content/docs/(functions)/Text/Math/roundTenth.mdx +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -4,7 +4,10 @@ title: "$roundTenth" Rounds the number to the nearest decimal specified in `toFixed` -#### Usage: `$roundTenth[number;tofixed]` +#### Usage +```cc +$roundTenth[number;tofixed] +```
    diff --git a/content/docs/(functions)/Text/Math/sub.mdx b/content/docs/(functions)/Text/Math/sub.mdx index c357d27c..f2f73158 100644 --- a/content/docs/(functions)/Text/Math/sub.mdx +++ b/content/docs/(functions)/Text/Math/sub.mdx @@ -4,7 +4,10 @@ title: "$sub" Subtracts (a) number(s) from each other -#### Usage: `$sub[10;4;...]` +#### Usage +```cc +$sub[10;4;...] +```
    diff --git a/content/docs/(functions)/Text/Math/sum.mdx b/content/docs/(functions)/Text/Math/sum.mdx index d6a1b170..04b2ccfd 100644 --- a/content/docs/(functions)/Text/Math/sum.mdx +++ b/content/docs/(functions)/Text/Math/sum.mdx @@ -4,7 +4,10 @@ title: "$sum" Sum's up the given args -#### Usage: `$sum[1;3;...]` +#### Usage +```cc +$sum[1;3;...] +```
    diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx index 0dd1f63c..f18b5379 100644 --- a/content/docs/(functions)/Text/Math/truncate.mdx +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -4,7 +4,10 @@ title: "$truncate" Truncates the number to 0 decimals. -#### Usage: `$truncate[number]` +#### Usage +```cc +$truncate[number] +```
    diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/ObjectCreate.mdx index c511a025..45034a55 100644 --- a/content/docs/(functions)/Text/Object/ObjectCreate.mdx +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -5,7 +5,10 @@ title: "$objectCreate" Creates a json object from the input Use `$getObjectProperty` or `$objectGet` to get a key value. -#### Usage: `$objectCreate[JSON string]` +#### Usage +```cc +$objectCreate[JSON string] +```
    diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/ObjectGet.mdx index 3c4c7a5b..848ab585 100644 --- a/content/docs/(functions)/Text/Object/ObjectGet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectGet.mdx @@ -4,7 +4,10 @@ title: "$objectGet" Get a object value/property by key, if the key is not found then return `undefined` (same as `$getObjectProperty`) -#### Usage: `$objectGet[key]` +#### Usage +```cc +$objectGet[key] +```
    diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index 67b1dd25..4662a5ae 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -4,7 +4,10 @@ title: "$objectSet" set an object property value by key -#### Usage: `$objectSet[key;key;key....;value]` +#### Usage +```cc +$objectSet[key;key;key....;value] +```
    diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx index 022441a7..1aff2534 100644 --- a/content/docs/(functions)/Text/Object/getObject.mdx +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -4,7 +4,10 @@ title: "$getObject" returns the JSON of the created/modified object -#### Usage: `$getObject[spaces(optional, default 0)]` +#### Usage +```cc +$getObject[spaces(optional, default 0)] +```
    diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx index c5dee16d..cd325322 100644 --- a/content/docs/(functions)/Text/Regex/regexMatch.mdx +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -4,7 +4,10 @@ title: "$regexMatch" Matches a string with the given Regex Pattern and returns the matched text or multiple matches seperated by the seperator -#### Usage: `$regexMatch[text;regexp;flags(optional);group index(optional, 0 by default) or all;separator (optional)]` +#### Usage +```cc +$regexMatch[text;regexp;flags(optional);group index(optional, 0 by default) or all;separator (optional)] +``` ## Note about Separator It can only be used when group index is `all`.\ diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index 8241304d..3be30835 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -4,7 +4,10 @@ title: "$channelNSFW" Returns whether the channel is nsfw or not -#### Usage: `$channelNSFW[channelID]` +#### Usage +```cc +$channelNSFW[channelID] +```
    diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx index b81f7311..168c1dab 100644 --- a/content/docs/(functions)/Text/disableMentions.mdx +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -4,7 +4,10 @@ title: "$disableMentions" will not ping a user even though mentioned -#### Usage: `$disableMentions` +#### Usage +```cc +$disableMentions +```
    diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx index 02f3b5ed..0dd5c822 100644 --- a/content/docs/(functions)/Text/isandhas/isBoosting.mdx +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -4,7 +4,10 @@ title: "$isBoosting" checks if a user is Boosting ,returns true or false -#### Usage: `$isBoosting[userid]` +#### Usage +```cc +$isBoosting[userid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx index b224b11a..b596551a 100644 --- a/content/docs/(functions)/Text/isandhas/isBot.mdx +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -4,7 +4,10 @@ title: "$isbot" checks if the user is a bot or not ,returns true or false -#### Usage: `$isbot` or `$isbot[userid]` +#### Usage +```cc +$isbot +``` or `$isbot[userid]` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx index ec3b5746..0949938a 100644 --- a/content/docs/(functions)/Text/isandhas/isDeafened.mdx +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -4,7 +4,10 @@ title: "$isDeafened" checks if a user is Deafened ,returns true,false or undefined -#### Usage: `$isDeafened[userid]` +#### Usage +```cc +$isDeafened[userid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx index 5e6ee6a5..45d9bed1 100644 --- a/content/docs/(functions)/Text/isandhas/isEmoji.mdx +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -4,7 +4,10 @@ title: "$isEmoji" Checks if the given Emoji is a default emoji ,returns true or false -#### Usage: `$isEmoji[emoji]` +#### Usage +```cc +$isEmoji[emoji] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx index 3b38f93c..1a4f808c 100644 --- a/content/docs/(functions)/Text/isandhas/isHoisted.mdx +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -4,7 +4,10 @@ title: "$isHoisted" Checks if the given id of role is hoisted above all the other roles ,returns true or false -#### Usage: `$isHoisted[roleid]` +#### Usage +```cc +$isHoisted[roleid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx index 6a308666..901d2065 100644 --- a/content/docs/(functions)/Text/isandhas/isManaged.mdx +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -4,7 +4,10 @@ title: "$isManaged" Checks if the given id of role is Managed ,returns true or false -#### Usage: `$isManaged[roleid]` +#### Usage +```cc +$isManaged[roleid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx index c1e4f093..f6486257 100644 --- a/content/docs/(functions)/Text/isandhas/isMentionable.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -4,7 +4,10 @@ title: "$isMentionable" Checks if the given id of role is Mentionable ,returns true or false -#### Usage: `$isMentionable[roleid]` +#### Usage +```cc +$isMentionable[roleid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx index 02fd8fdb..67ba3614 100644 --- a/content/docs/(functions)/Text/isandhas/isMentioned.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -4,7 +4,10 @@ title: "$isMentioned" Checks if the given id of userID/roleID/channelID/everyone is Mentioned ,returns true or false -#### Usage: `$isMentioned[userID/roleID/channelID/everyone]` +#### Usage +```cc +$isMentioned[userID/roleID/channelID/everyone] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx index b11e25e6..99a6a159 100644 --- a/content/docs/(functions)/Text/isandhas/isMuted.mdx +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -4,7 +4,10 @@ title: "$isMuted" checks if a user is selfMuted ,returns true,false or undefined -#### Usage: `$isMuted[userid]` +#### Usage +```cc +$isMuted[userid] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index 2152d428..ee3f8a75 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -4,7 +4,10 @@ title: "$isNumber" Checks if a string is a valid number. -#### Usage: `$isNumber[number]` +#### Usage +```cc +$isNumber[number] +```
    diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx index a85502fe..7d2d89f2 100644 --- a/content/docs/(functions)/Text/isandhas/isTicket.mdx +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -4,7 +4,10 @@ title: "$isTicket" checks if a channel is a ticket or not created with $newTicket function,returns true or false -#### Usage: `$isTicket` or `$isTicket[channelid]` +#### Usage +```cc +$isTicket +``` or `$isTicket[channelid]` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx index 02c0cbce..fa380477 100644 --- a/content/docs/(functions)/Text/isandhas/isValidHex.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -4,7 +4,10 @@ title: "$isValidHex" checks if the given int or hex code or [color name](/CodeReferences/ref.embed.colors) is valid ,returns true,false -#### Usage: `$isValidHex[int or hexcode or color name]` +#### Usage +```cc +$isValidHex[int or hexcode or color name] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx index 6e94597f..70d107c3 100644 --- a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -4,7 +4,10 @@ title: "$isValidInvite" checks if the given Invite code is valid ,returns true,false -#### Usage: `$isValidInvite[invite code]` +#### Usage +```cc +$isValidInvite[invite code] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx index c2ffbd64..39244541 100644 --- a/content/docs/(functions)/Text/isandhas/isValidLink.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -4,7 +4,10 @@ title: "$isValidLink" checks if the given Link / url is valid ,returns true,false -#### Usage: `$isValidLink[Link]` +#### Usage +```cc +$isValidLink[Link] +``` Example:
    diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx index 08e64f67..5a25f4e9 100644 --- a/content/docs/(functions)/Text/isandhas/isValidObject.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -4,7 +4,10 @@ title: "$isValidObject" checks if the given Object is valid ,returns true,false -#### Usage: `$isValidObject[Object]` +#### Usage +```cc +$isValidObject[Object] +``` Example:
    diff --git a/content/docs/(functions)/Text/mentionedChannels.mdx b/content/docs/(functions)/Text/mentionedChannels.mdx index 90a4230e..4f185ed7 100644 --- a/content/docs/(functions)/Text/mentionedChannels.mdx +++ b/content/docs/(functions)/Text/mentionedChannels.mdx @@ -4,7 +4,10 @@ title: "$mentionedChannels" Returns the ID of one of the channels that was mentioned by the user -#### Usage: `$mentionedChannels[number]` +#### Usage +```cc +$mentionedChannels[number] +```
    diff --git a/content/docs/(functions)/Text/mentionedRoles.mdx b/content/docs/(functions)/Text/mentionedRoles.mdx index 7b7b6de6..1487b0a4 100644 --- a/content/docs/(functions)/Text/mentionedRoles.mdx +++ b/content/docs/(functions)/Text/mentionedRoles.mdx @@ -4,7 +4,10 @@ title: "$mentionedRoles" Returns the ID of one of the roles that was mentioned by the user -#### Usage: `$mentionedRoles[number]` +#### Usage +```cc +$mentionedRoles[number] +```
    diff --git a/content/docs/(functions)/Text/noMentionMessage.mdx b/content/docs/(functions)/Text/noMentionMessage.mdx index cdc74b51..7969e948 100644 --- a/content/docs/(functions)/Text/noMentionMessage.mdx +++ b/content/docs/(functions)/Text/noMentionMessage.mdx @@ -4,7 +4,10 @@ title: "$noMentionMessage" User's message without any mentions. (members, roles & channels) -#### Usage: `$noMentionMessage` +#### Usage +```cc +$noMentionMessage +```
    diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx index d5561685..68913904 100644 --- a/content/docs/(functions)/Text/only/onlyBotPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -4,7 +4,10 @@ title: "$onlyBotPerms" Only if custom command bot has the permssions,user will be able to execute this command -#### Usage: `$onlyBotPerms[perm;perm;...;error message]` +#### Usage +```cc +$onlyBotPerms[perm;perm;...;error message] +``` #### Example: `$onlyBotPerms[managemessage;:x: - Bot does not have manage message permission]` diff --git a/content/docs/(functions)/Text/only/onlyForCategories.mdx b/content/docs/(functions)/Text/only/onlyForCategories.mdx index d94032a0..0b70433e 100644 --- a/content/docs/(functions)/Text/only/onlyForCategories.mdx +++ b/content/docs/(functions)/Text/only/onlyForCategories.mdx @@ -4,7 +4,10 @@ title: "$onlyForCategories" The command will only be executable in the provided categories. -#### Usage: `$onlyForCategories[categoryID;categoryID;...;error message]` +#### Usage +```cc +$onlyForCategories[categoryID;categoryID;...;error message] +``` #### Example: `$onlyForCategories[797978978978988;:x: - this command is restricted to the Main category]` diff --git a/content/docs/(functions)/Text/only/onlyForIDs.mdx b/content/docs/(functions)/Text/only/onlyForIDs.mdx index 670c181c..086f290d 100644 --- a/content/docs/(functions)/Text/only/onlyForIDs.mdx +++ b/content/docs/(functions)/Text/only/onlyForIDs.mdx @@ -4,7 +4,10 @@ title: "$onlyForIDs" Only given user IDs will be able to execute this command -#### Usage: `$onlyForIDs[userID;userID;...;error message]` +#### Usage +```cc +$onlyForIDs[userID;userID;...;error message] +``` #### Example: `$onlyForIDs[$guild[owner];:x: - this command is restricted to the guild owner]` diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx index 574861fc..5a5d4263 100644 --- a/content/docs/(functions)/Text/only/onlyForRoles.mdx +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -4,7 +4,10 @@ title: "$onlyForRoles" Only person with the given Roles will be able to execute this command -#### Usage: `$onlyForRoles[roleID;roleID;...;error message]` +#### Usage +```cc +$onlyForRoles[roleID;roleID;...;error message] +``` #### Example: `$onlyForRoles[797978978978988;:x: - this command is restricted to person with test role]` diff --git a/content/docs/(functions)/Text/only/onlyIf.mdx b/content/docs/(functions)/Text/only/onlyIf.mdx index 07b1bc5e..b45e02df 100644 --- a/content/docs/(functions)/Text/only/onlyIf.mdx +++ b/content/docs/(functions)/Text/only/onlyIf.mdx @@ -4,7 +4,10 @@ title: "$onlyIf" Continue the execution only if certain [expression](/CodeReferences/ref.expression) is satisfied, otherwise stop the execution and send the error message. In theory $onlyif can replace all other $onlyFor with the proper [expression](/CodeReferences/ref.expression) -#### Usage: `$onlyif[Expression;error message]` +#### Usage +```cc +$onlyif[Expression;error message] +``` #### Example: `$onlyIf[$username==Mido;You are not mido]` diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx index b91d014e..46546d78 100644 --- a/content/docs/(functions)/Text/only/onlyNSFW.mdx +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -4,7 +4,10 @@ title: "$onlyNSFW" Only in given nsfw channel user will be able to execute this command -#### Usage: `$onlyNSFW[channelID;channelID;...;error message]` +#### Usage +```cc +$onlyNSFW[channelID;channelID;...;error message] +``` #### Example: `$onlyNSFW[797978978978988;:x: - this command is restricted to nsfw channel]` diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx index f6c2f93b..d1fe078f 100644 --- a/content/docs/(functions)/Text/only/onlyPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -4,7 +4,10 @@ title: "$onlyPerms" Only if user has the given permssions,they will be able to execute this command -#### Usage: `$onlyPerms[perm;perm;...;error message]` +#### Usage +```cc +$onlyPerms[perm;perm;...;error message] +``` #### Example: `$onlyPerms[managemessage;:x: - You don't have manage message permission]` diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx index 14ab2787..688ec0dc 100644 --- a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -7,7 +7,10 @@ field would be the split/seperator used in the text, and the next field would ge fields work as splitters/seperators and new indexes for this new text. -#### Usage: `$advancedTextSplit[text;split;index;split;index;...]` +#### Usage +```cc +$advancedTextSplit[text;split;index;split;index;...] +```
    diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx index 9ba6a2db..34d296ab 100644 --- a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -4,7 +4,10 @@ title: "$concatTextSplit" adds an array to the end of an array from `$textsplit` -#### Usage: `$concatTextSplit[text;separator(optional, default = ,)]` +#### Usage +```cc +$concatTextSplit[text;separator(optional, default = ,)] +```
    diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx index 01223f74..fdca1133 100644 --- a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -4,7 +4,10 @@ title: "$editTextSplitElement" adds an element to an array from `$textsplit` or replaces the value by index of the split text from `$textsplit` -#### Usage: `$editTextSplitElement[index;new value]` +#### Usage +```cc +$editTextSplitElement[index;new value] +```
    diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx index 1706e775..30b15f60 100644 --- a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -4,7 +4,10 @@ title: "$findTextSplitIndex" returns the index of the first occurrence of a value in an array from `$textsplit` -#### Usage: `$findTextSplitIndex[value]` +#### Usage +```cc +$findTextSplitIndex[value] +```
    diff --git a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx index 5c487f15..3cc98026 100644 --- a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx @@ -4,7 +4,10 @@ title: "$removeTextSplitElement" removes an element from an array from `$textsplit` -#### Usage: `$removeTextSplitElement[Index]` +#### Usage +```cc +$removeTextSplitElement[Index] +```
    diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx index 5a2a7561..673d5d20 100644 --- a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -4,7 +4,10 @@ title: "$spliceTextJoin" Splits a text with `separator1`, then joins with it `separator2` every `x` times, and then joins with `separator3` every `x-1` times. -#### Usage: `$spliceTextJoin[text;separator1;separator2;separator3;every]` +#### Usage +```cc +$spliceTextJoin[text;separator1;separator2;separator3;every] +```
    diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index f9577403..fb324274 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -4,7 +4,10 @@ title: "$splitText" returns the element by index from `$textSplit` -#### Usage: `$splitText[index]` +#### Usage +```cc +$splitText[index] +```
    diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index f423a49d..8846d5b4 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -5,7 +5,10 @@ title: "$textSplit" Splits the provided text with `seperator` and creates an array. To access them use: `$arrayGet` or other array functions -#### Usage: `$textSplit[text;separator(optional, default = ,)]` +#### Usage +```cc +$textSplit[text;separator(optional, default = ,)] +```
    diff --git a/content/docs/(functions)/Threads/deleteThreads.mdx b/content/docs/(functions)/Threads/deleteThreads.mdx index 76838b35..b7dfcb43 100644 --- a/content/docs/(functions)/Threads/deleteThreads.mdx +++ b/content/docs/(functions)/Threads/deleteThreads.mdx @@ -3,7 +3,10 @@ title: "$deleteThreads" --- threads with the provided thread id gets deleted -### Usage: `$deleteThreads[threadid;threadid2;...]` +### Usage +```cc +$deleteThreads[threadid;threadid2;...] +``` Example: `$deleteThreads[809890890890000]` Don't forget to change the thread id diff --git a/content/docs/(functions)/Threads/joinThreads.mdx b/content/docs/(functions)/Threads/joinThreads.mdx index a8fe2b80..577785eb 100644 --- a/content/docs/(functions)/Threads/joinThreads.mdx +++ b/content/docs/(functions)/Threads/joinThreads.mdx @@ -3,7 +3,10 @@ title: "$joinThreads" --- custom command bot joins the threads with the provided thread id -### Usage: `$joinThreads[threadid;threadid2;...]` +### Usage +```cc +$joinThreads[threadid;threadid2;...] +``` Example: `$joinThreads[809890890890000]` Don't forget to change the thread id diff --git a/content/docs/(functions)/Threads/leaveThreads.mdx b/content/docs/(functions)/Threads/leaveThreads.mdx index 962c6290..984f87e6 100644 --- a/content/docs/(functions)/Threads/leaveThreads.mdx +++ b/content/docs/(functions)/Threads/leaveThreads.mdx @@ -3,7 +3,10 @@ title: "$leaveThreads" --- custom command bot leaves the threads with the provided thread id -### Usage: `$leaveThreads[threadid;threadid2;...]` +### Usage +```cc +$leaveThreads[threadid;threadid2;...] +``` Example: `$leaveThreads[809890890890000]` Don't forget to change the thread id diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx index bc0ba9ab..1608cd7d 100644 --- a/content/docs/(functions)/Useful/spread.mdx +++ b/content/docs/(functions)/Useful/spread.mdx @@ -4,7 +4,10 @@ title: "$spread" spreads text as arguments inside functions -#### Usage: `$spread[separator (optional, default: ,);data to spread]` +#### Usage +```cc +$spread[separator (optional, default: ,);data to spread] +``` #### Example:
    diff --git a/content/docs/(functions)/Variables/deleteChannelVar.mdx b/content/docs/(functions)/Variables/deleteChannelVar.mdx index 3ff11416..5308a158 100644 --- a/content/docs/(functions)/Variables/deleteChannelVar.mdx +++ b/content/docs/(functions)/Variables/deleteChannelVar.mdx @@ -4,7 +4,10 @@ title: "$deleteChannelVar" Deletes a channel variable, from the command trigger channel or from the ID specified. -#### Usage: `$deleteChannelVar[variable;channelID(optional)]` +#### Usage +```cc +$deleteChannelVar[variable;channelID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/deleteMessageVar.mdx b/content/docs/(functions)/Variables/deleteMessageVar.mdx index cad2ccec..537636d7 100644 --- a/content/docs/(functions)/Variables/deleteMessageVar.mdx +++ b/content/docs/(functions)/Variables/deleteMessageVar.mdx @@ -4,7 +4,10 @@ title: "$deleteMessageVar" Deletes a message variable, from the command trigger or from the ID specified. -#### Usage: `$deleteMessageVar[variable;MessageID(optional)]` +#### Usage +```cc +$deleteMessageVar[variable;MessageID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/deleteServerVar.mdx b/content/docs/(functions)/Variables/deleteServerVar.mdx index 4206ea34..5707fb97 100644 --- a/content/docs/(functions)/Variables/deleteServerVar.mdx +++ b/content/docs/(functions)/Variables/deleteServerVar.mdx @@ -4,7 +4,10 @@ title: "$deleteServerVar" Deletes a server variable. -#### Usage: `$deleteServerVar[variable]` +#### Usage +```cc +$deleteServerVar[variable] +```
    diff --git a/content/docs/(functions)/Variables/deleteUserVar.mdx b/content/docs/(functions)/Variables/deleteUserVar.mdx index 21ad6b2c..efc2a161 100644 --- a/content/docs/(functions)/Variables/deleteUserVar.mdx +++ b/content/docs/(functions)/Variables/deleteUserVar.mdx @@ -4,7 +4,10 @@ title: "$deleteUserVar" Deletes a user variable, from the author of the command or from the ID specified. -#### Usage: `$deleteUserVar[variable;userID]` +#### Usage +```cc +$deleteUserVar[variable;userID] +```
    diff --git a/content/docs/(functions)/Variables/get.mdx b/content/docs/(functions)/Variables/get.mdx index ab26f836..3815d3ae 100644 --- a/content/docs/(functions)/Variables/get.mdx +++ b/content/docs/(functions)/Variables/get.mdx @@ -4,7 +4,10 @@ title: "$get" retrieve variable defined by `$let` -## Usage: `$get[varname;value if not exists] or $varname` +## Usage +```cc +$get[varname;value if not exists] or $varname +``` ### Example 1: diff --git a/content/docs/(functions)/Variables/getChannelVar.mdx b/content/docs/(functions)/Variables/getChannelVar.mdx index 41adde9f..14609865 100644 --- a/content/docs/(functions)/Variables/getChannelVar.mdx +++ b/content/docs/(functions)/Variables/getChannelVar.mdx @@ -4,7 +4,10 @@ title: "$getChannelVar" Gets a channel variable value -#### Usage: `$getChannelVar[variable;channelID(optional)]` +#### Usage +```cc +$getChannelVar[variable;channelID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/getMessageVar.mdx b/content/docs/(functions)/Variables/getMessageVar.mdx index f72c7ce4..08ed6dd0 100644 --- a/content/docs/(functions)/Variables/getMessageVar.mdx +++ b/content/docs/(functions)/Variables/getMessageVar.mdx @@ -4,7 +4,10 @@ title: "$getMessageVar" Gets a message variable value -#### Usage: `$getMessageVar[variable;messageID(optional)]` +#### Usage +```cc +$getMessageVar[variable;messageID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/getServerVar.mdx b/content/docs/(functions)/Variables/getServerVar.mdx index b308ed74..b836de77 100644 --- a/content/docs/(functions)/Variables/getServerVar.mdx +++ b/content/docs/(functions)/Variables/getServerVar.mdx @@ -4,7 +4,10 @@ title: "$getServerVar" Gets a server variable value -#### Usage: `$getServerVar[variable]` +#### Usage +```cc +$getServerVar[variable] +```
    diff --git a/content/docs/(functions)/Variables/getUserVar.mdx b/content/docs/(functions)/Variables/getUserVar.mdx index e99c1d2f..34576a28 100644 --- a/content/docs/(functions)/Variables/getUserVar.mdx +++ b/content/docs/(functions)/Variables/getUserVar.mdx @@ -4,7 +4,10 @@ title: "$getUserVar" Gets a user variable value -#### Usage: `$getUserVar[variable;userid(optional)]` +#### Usage +```cc +$getUserVar[variable;userid(optional)] +```
    diff --git a/content/docs/(functions)/Variables/let.mdx b/content/docs/(functions)/Variables/let.mdx index e605c496..5aade053 100644 --- a/content/docs/(functions)/Variables/let.mdx +++ b/content/docs/(functions)/Variables/let.mdx @@ -5,7 +5,10 @@ title: "$let" Define a variable, that you can access later through `$get`. This function is useful to temporarily store variables, like to save the result of a calculation -#### Usage: `$let[variable name;variable value;remain after execution (yes/no , default no) (optional)]` +#### Usage +```cc +$let[variable name;variable value;remain after execution (yes/no , default no) (optional)] +``` The first value will only exist until cc ends its execution,the second will still be accessable until next bot restart (every 5d) You can use $get[varname] or $varname to retrieve the value
    diff --git a/content/docs/(functions)/Variables/resetUserVar.mdx b/content/docs/(functions)/Variables/resetUserVar.mdx index 177fc831..2676fc0c 100644 --- a/content/docs/(functions)/Variables/resetUserVar.mdx +++ b/content/docs/(functions)/Variables/resetUserVar.mdx @@ -4,7 +4,10 @@ title: "$resetUserVar" Resets a user variable for all users. -#### Usage: `$resetUserVar[variable]` +#### Usage +```cc +$resetUserVar[variable] +```
    diff --git a/content/docs/(functions)/Variables/setChannelVar.mdx b/content/docs/(functions)/Variables/setChannelVar.mdx index ba6b6775..f2f0a0c1 100644 --- a/content/docs/(functions)/Variables/setChannelVar.mdx +++ b/content/docs/(functions)/Variables/setChannelVar.mdx @@ -4,7 +4,10 @@ title: "$setChannelVar" Sets a channel variable value. -#### Usage: `$setChannelVar[variable;value;channelID (optional)]` +#### Usage +```cc +$setChannelVar[variable;value;channelID (optional)] +```
    diff --git a/content/docs/(functions)/Variables/setMessageVar.mdx b/content/docs/(functions)/Variables/setMessageVar.mdx index 74c65883..d2deb71c 100644 --- a/content/docs/(functions)/Variables/setMessageVar.mdx +++ b/content/docs/(functions)/Variables/setMessageVar.mdx @@ -4,7 +4,10 @@ title: "$setMessageVar" Sets a message variable value. -#### Usage: `$setMessageVar[variable;value;messageID(optional)]` +#### Usage +```cc +$setMessageVar[variable;value;messageID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/setServerVar.mdx b/content/docs/(functions)/Variables/setServerVar.mdx index 16ad1bf0..f87a5c75 100644 --- a/content/docs/(functions)/Variables/setServerVar.mdx +++ b/content/docs/(functions)/Variables/setServerVar.mdx @@ -4,7 +4,10 @@ title: "$setServerVar" Sets a Server variable value. -#### Usage: `$setServerVar[variable;value]` +#### Usage +```cc +$setServerVar[variable;value] +```
    diff --git a/content/docs/(functions)/Variables/setUserVar.mdx b/content/docs/(functions)/Variables/setUserVar.mdx index 999a2e84..817de1c4 100644 --- a/content/docs/(functions)/Variables/setUserVar.mdx +++ b/content/docs/(functions)/Variables/setUserVar.mdx @@ -4,7 +4,10 @@ title: "$setUserVar" Sets a user variable value. -#### Usage: `$setUserVar[variable;value;userID(optional)]` +#### Usage +```cc +$setUserVar[variable;value;userID(optional)] +```
    diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx index 27927768..01ee8e59 100644 --- a/content/docs/(functions)/Variables/userLeaderboard.mdx +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -4,7 +4,10 @@ title: "$userLeaderboard" Generates a leaderboard of a user variable and return it. -#### Usage: `$userLeaderboard[variable;asc/desc (optional);{top}.- {username} - {value};list (optional, max=40);page (optional)]` +#### Usage +```cc +$userLeaderboard[variable;asc/desc (optional);{top}.- {username} - {value};list (optional, max=40);page (optional)] +``` Available Variables: | Variable | Description | diff --git a/content/docs/CodeReferences/ref.channel_types.mdx b/content/docs/CodeReferences/ref.channel_types.mdx index 90179392..4c15c1aa 100644 --- a/content/docs/CodeReferences/ref.channel_types.mdx +++ b/content/docs/CodeReferences/ref.channel_types.mdx @@ -22,7 +22,10 @@ Here's a list of the currently supported channel types: * `forum`: Forum channel type. * `stage`: Stage channels for audio and video broadcasting. -### Example Usage: `$channelType` in a Public Thread +### Example Usage +```cc +$channelType +``` in a Public Thread This example demonstrates how `$channelType` returns the type of the current channel. diff --git a/content/docs/Contribution_Info/function_template.mdx b/content/docs/Contribution_Info/function_template.mdx index af4c9607..2747f3cd 100644 --- a/content/docs/Contribution_Info/function_template.mdx +++ b/content/docs/Contribution_Info/function_template.mdx @@ -6,7 +6,10 @@ title: "Function Template" # $FUNCTION -#### Usage: `$FUNCTION NAME + PARAMETERS` +#### Usage +```cc +$FUNCTION NAME + PARAMETERS +```
    From 8371e6e5708eee1a99cbdb9667bf63e10370a6ed Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 19:51:57 +0200 Subject: [PATCH 30/62] fix func template and update it --- .../Text/Components/selectMenu.mdx | 4 ++-- .../Contribution_Info/function_template.mdx | 24 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index 73d824e1..63f11788 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -6,8 +6,8 @@ Creates a Menu with options. #### Usage ```cc -$selectMenu[{menu structure] -``` works only for one option +$selectMenu[{menu structure}] +``` #### Menu Structure to construct a menu inside $selectMenu, it needs to follow this structure diff --git a/content/docs/Contribution_Info/function_template.mdx b/content/docs/Contribution_Info/function_template.mdx index 2747f3cd..00083829 100644 --- a/content/docs/Contribution_Info/function_template.mdx +++ b/content/docs/Contribution_Info/function_template.mdx @@ -2,7 +2,7 @@ title: "Function Template" --- -```md +````md # $FUNCTION @@ -10,16 +10,16 @@ title: "Function Template" ```cc $FUNCTION NAME + PARAMETERS ``` -
    - - - !!exec There is $botCount bots in the server! - - - There is 1 bot in the server - - -##### Function difficulty: + + +!!exec There is $botCount bots in the server! + + +There is 1 bot in the server + + + +##### Function difficulty: ###### Tags: -``` \ No newline at end of file +```` \ No newline at end of file From 7957db1d806190abcec87d15e904ca26a363bb14 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:01:21 +0200 Subject: [PATCH 31/62] use new discord message format --- .../(functions)/Date/memberJoinedDate.mdx | 28 ++++++++---------- content/docs/(functions)/Date/month.mdx | 14 ++++----- .../docs/(functions)/Message/messageSlice.mdx | 29 +++++++++---------- .../docs/(functions)/Random/resetRandom.mdx | 29 +++++-------------- content/docs/(functions)/Role/roleExists.mdx | 21 ++++++-------- 5 files changed, 48 insertions(+), 73 deletions(-) diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 42d373c7..63fb7af0 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -16,29 +16,25 @@ $memberJoinedDate[userID;format(optional)]
    -```html - - + + !!exec $memberJoinedDate[725721249652670555;date] - - +
    + Sat Oct 31 2020 -
    -
    -``` + +
    -```html - - + + !!exec $memberJoinedDate[725721249652670555] - - + + Sat Oct 31 2020 10:55:30 GMT+0000 (Coordinated Universal Time) - - -``` + + diff --git a/content/docs/(functions)/Date/month.mdx b/content/docs/(functions)/Date/month.mdx index 4e498ea2..d79bd11e 100644 --- a/content/docs/(functions)/Date/month.mdx +++ b/content/docs/(functions)/Date/month.mdx @@ -16,16 +16,14 @@ This function allows you to retrieve the current month in either its numerical r **Example:** -```html - - + + !!exec $month, $month[yes] - - + + 11, November - - -``` + + **Explanation:** diff --git a/content/docs/(functions)/Message/messageSlice.mdx b/content/docs/(functions)/Message/messageSlice.mdx index 72697d70..bf78abdc 100644 --- a/content/docs/(functions)/Message/messageSlice.mdx +++ b/content/docs/(functions)/Message/messageSlice.mdx @@ -18,16 +18,14 @@ $messageSlice[from;to (optional)] Let's say the message sent is: `!!exec a b c d e` -```html - - + + !!exec $messageSlice[1] - - + + b c d e - - -``` + + In this example, `$messageSlice[1]` extracts arguments from index 1 to the end, resulting in `b c d e`. Remember that arguments are separated by spaces, and the command itself (`!!exec` in this case) is not included. @@ -37,16 +35,15 @@ In this example, `$messageSlice[1]` extracts arguments from index 1 to the end, Using the same message: `!!exec a b c d e` -```html - - + + !!exec $messageSlice[1;2] - - + + b c - - -``` + + + Here, `$messageSlice[1;2]` extracts arguments from index 1 to index 2, resulting in `b c`. diff --git a/content/docs/(functions)/Random/resetRandom.mdx b/content/docs/(functions)/Random/resetRandom.mdx index 0ce7c063..2b65e0ce 100644 --- a/content/docs/(functions)/Random/resetRandom.mdx +++ b/content/docs/(functions)/Random/resetRandom.mdx @@ -14,28 +14,15 @@ $resetRandom When you use `$random` multiple times without resetting, it might produce the same number due to how it's seeded. `$resetRandom` ensures each subsequent `$random` call behaves truly randomly by clearing that internal seed. **Example:** + + + !!exec Picked Number: $random[1;6]
    Another Picked Number: $random[1;6]
    $resetRandom
    Picked Number After Reset: $random[1;6] +
    + + Picked Number: 5
    Another Picked Number: 5
    Picked Number After Reset: 3 +
    +
    -```html - - - !!exec Number:$random[1;6] - Number:$random[1;6] - $resetRandom after reset - $random[1;6] - - - Number:5 - Number:5 - after reset - 1 - - -``` - -**Breakdown of the Example:** -1. `Number:$random[1;6]` is called twice *before* the reset. In this example, the same number `5` is generated for both calls. *Note: The actual number generated here is random and will vary.* -2. `$resetRandom after reset` resets the random seed. The text "after reset" is just literal text included for explanation. -3. `$random[1;6]` is called again *after* the reset. It now generates a new, potentially different random number (in this example, it's `1`). **Function difficulty:** diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index 9b8d4df3..48da0ca2 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -6,26 +6,23 @@ Checks if a role exists within the server and returns a boolean value (true or f #### Usage: -`$roleExists[roleID]` +`$roleExists[Role Name/ID]` **Parameters:** -* `roleID`: The ID of the role you want to check. +* `Role Name or ID`: The Name/ID of the role you want to check.
    **Example:** - -```cc - - - !!exec $roleExists[$roleID[muted]] - - + + + !!exec $roleExists[Muted] + + true - - -``` + + **Explanation:** From 4b9f143554de9bbaf9bd942c901795ed5a6540a4 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:07:04 +0200 Subject: [PATCH 32/62] adjust the spacing for discord messages --- app/global.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/global.css b/app/global.css index 05cb360e..c9480f7c 100644 --- a/app/global.css +++ b/app/global.css @@ -17,3 +17,8 @@ discord-messages { border-radius: 8px; overflow: hidden; } +@layer utilities { + .prose p { + margin-top: 0.25rem !important; + } +} \ No newline at end of file From 5d0c16199a01dd4fd8ec1e3556f487294224ddbc Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:18:42 +0200 Subject: [PATCH 33/62] Use new Tag wrapper --- components/badge.tsx | 6 ++++++ components/mdx.tsx | 3 ++- content/docs/(functions)/Bot/botCount.mdx | 2 +- content/docs/(functions)/Bot/cacheMember.mdx | 2 +- content/docs/(functions)/Bot/clientID.mdx | 2 +- content/docs/(functions)/Bot/ping.mdx | 2 +- content/docs/(functions)/Bot/ram.mdx | 2 +- content/docs/(functions)/Bot/serverCount.mdx | 2 +- content/docs/(functions)/Bot/uptime.mdx | 2 +- content/docs/(functions)/Channel/channel.mdx | 2 +- content/docs/(functions)/Channel/channelCategoryID.mdx | 2 +- content/docs/(functions)/Channel/channelCount.mdx | 2 +- content/docs/(functions)/Channel/channelExists.mdx | 2 +- content/docs/(functions)/Channel/channelID.mdx | 2 +- content/docs/(functions)/Channel/channelName.mdx | 2 +- content/docs/(functions)/Channel/channelType.mdx | 2 +- content/docs/(functions)/Channel/channelUsed.mdx | 2 +- content/docs/(functions)/Channel/closeTicket.mdx | 2 +- content/docs/(functions)/Channel/createChannel.mdx | 2 +- content/docs/(functions)/Channel/deleteChannels.mdx | 2 +- content/docs/(functions)/Channel/editChannel.mdx | 2 +- content/docs/(functions)/Channel/eventChannelID.mdx | 2 +- content/docs/(functions)/Channel/findChannel.mdx | 2 +- content/docs/(functions)/Channel/modifyChannelPerms.mdx | 2 +- content/docs/(functions)/Channel/newTicket.mdx | 2 +- content/docs/(functions)/Channel/useChannel.mdx | 2 +- content/docs/(functions)/Cooldown/channelCooldown.mdx | 2 +- content/docs/(functions)/Cooldown/cooldown.mdx | 2 +- content/docs/(functions)/Cooldown/serverCooldown.mdx | 2 +- content/docs/(functions)/Date/dateStamp.mdx | 2 +- content/docs/(functions)/Date/day.mdx | 2 +- content/docs/(functions)/Date/formatDate.mdx | 2 +- content/docs/(functions)/Date/hour.mdx | 2 +- content/docs/(functions)/Date/humanizeMS.mdx | 2 +- content/docs/(functions)/Date/memberJoinedDate.mdx | 2 +- content/docs/(functions)/Date/minute.mdx | 2 +- content/docs/(functions)/Date/month.mdx | 2 +- content/docs/(functions)/Date/parseDate.mdx | 2 +- content/docs/(functions)/Date/second.mdx | 2 +- content/docs/(functions)/Date/timeStamp.mdx | 2 +- content/docs/(functions)/Date/year.mdx | 2 +- content/docs/(functions)/Interaction/interactionDelete.mdx | 2 +- content/docs/(functions)/Interaction/interactionEdit.mdx | 2 +- content/docs/(functions)/Interaction/interactionId.mdx | 2 +- content/docs/(functions)/Interaction/interactionReply.mdx | 2 +- content/docs/(functions)/Interaction/modal.mdx | 2 +- content/docs/(functions)/Interaction/modalAnswer.mdx | 2 +- content/docs/(functions)/Interaction/modalID.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/ban.mdx | 2 +- content/docs/(functions)/Member/changeNickname.mdx | 2 +- content/docs/(functions)/Member/isBanned.mdx | 2 +- content/docs/(functions)/Member/kick.mdx | 2 +- content/docs/(functions)/Member/mention.mdx | 2 +- content/docs/(functions)/Member/nickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Member/unban.mdx | 2 +- content/docs/(functions)/Member/user.mdx | 2 +- content/docs/(functions)/Member/userExists.mdx | 2 +- content/docs/(functions)/Member/userID.mdx | 2 +- content/docs/(functions)/Member/userPerms.mdx | 2 +- content/docs/(functions)/Member/userReacted.mdx | 2 +- content/docs/(functions)/Member/userRoleColor.mdx | 2 +- content/docs/(functions)/Member/userRoles.mdx | 2 +- content/docs/(functions)/Member/userTag.mdx | 2 +- content/docs/(functions)/Member/username.mdx | 2 +- content/docs/(functions)/Member/usersBanned.mdx | 2 +- content/docs/(functions)/Member/usersInChannel.mdx | 2 +- content/docs/(functions)/Message/DM.mdx | 2 +- content/docs/(functions)/Message/addCmdReactions.mdx | 2 +- content/docs/(functions)/Message/addMessageReactions.mdx | 2 +- content/docs/(functions)/Message/addReactions.mdx | 2 +- content/docs/(functions)/Message/clearReaction.mdx | 2 +- content/docs/(functions)/Message/clearReactions.mdx | 2 +- content/docs/(functions)/Message/createWebhook.mdx | 2 +- content/docs/(functions)/Message/deleteCommand.mdx | 2 +- content/docs/(functions)/Message/deleteIn.mdx | 2 +- content/docs/(functions)/Message/deleteMessage.mdx | 2 +- content/docs/(functions)/Message/deleteWebhook.mdx | 2 +- content/docs/(functions)/Message/editMessage.mdx | 2 +- content/docs/(functions)/Message/getCommandOption.mdx | 2 +- content/docs/(functions)/Message/getReactions.mdx | 2 +- content/docs/(functions)/Message/message.mdx | 2 +- content/docs/(functions)/Message/messageAttachment.mdx | 2 +- content/docs/(functions)/Message/messageExists.mdx | 2 +- content/docs/(functions)/Message/messageSlice.mdx | 2 +- content/docs/(functions)/Message/messageType.mdx | 2 +- content/docs/(functions)/Message/messageWebhookID.mdx | 2 +- content/docs/(functions)/Message/modifyWebhook.mdx | 2 +- content/docs/(functions)/Message/msg.mdx | 2 +- content/docs/(functions)/Message/noEscapingMessage.mdx | 2 +- content/docs/(functions)/Message/noMentionMessage.mdx | 2 +- content/docs/(functions)/Message/sendDM.mdx | 2 +- content/docs/(functions)/Message/sendMessage.mdx | 2 +- content/docs/(functions)/Message/sendWebhook.mdx | 2 +- content/docs/(functions)/Message/webhookExists.mdx | 2 +- content/docs/(functions)/Random/random.mdx | 2 +- content/docs/(functions)/Random/randomChannelID.mdx | 2 +- content/docs/(functions)/Random/randomMention.mdx | 2 +- content/docs/(functions)/Random/randomRoleID.mdx | 2 +- content/docs/(functions)/Random/randomString.mdx | 2 +- content/docs/(functions)/Random/randomText.mdx | 2 +- content/docs/(functions)/Random/randomUserID.mdx | 2 +- content/docs/(functions)/Role/blackListRoleIDs.mdx | 2 +- content/docs/(functions)/Role/colorRole.mdx | 2 +- content/docs/(functions)/Role/createRole.mdx | 2 +- content/docs/(functions)/Role/deleteRoles.mdx | 2 +- content/docs/(functions)/Role/findRole.mdx | 2 +- content/docs/(functions)/Role/getRoleColor.mdx | 2 +- content/docs/(functions)/Role/giveRoles.mdx | 2 +- content/docs/(functions)/Role/guildRoles.mdx | 2 +- content/docs/(functions)/Role/hasRole.mdx | 2 +- content/docs/(functions)/Role/highestRole.mdx | 2 +- content/docs/(functions)/Role/highestServerRole.mdx | 2 +- content/docs/(functions)/Role/lowestRole.mdx | 2 +- content/docs/(functions)/Role/lowestServerRole.mdx | 2 +- content/docs/(functions)/Role/modifyRole.mdx | 4 ++-- content/docs/(functions)/Role/modifyRolePerms.mdx | 2 +- content/docs/(functions)/Role/role.mdx | 2 +- content/docs/(functions)/Role/roleCount.mdx | 2 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleID.mdx | 2 +- content/docs/(functions)/Role/roleMembersCount.mdx | 2 +- content/docs/(functions)/Role/roleName.mdx | 2 +- content/docs/(functions)/Server/ownerID.mdx | 2 +- content/docs/(functions)/Server/serverBoostCount.mdx | 2 +- content/docs/(functions)/Server/serverContentFilter.mdx | 2 +- content/docs/(functions)/Server/serverDescription.mdx | 2 +- content/docs/(functions)/Server/serverIcon.mdx | 2 +- content/docs/(functions)/Server/serverName.mdx | 2 +- content/docs/(functions)/Server/serverRegion.mdx | 2 +- content/docs/(functions)/Server/serverSplash.mdx | 2 +- content/docs/(functions)/Server/serverVerificationLevel.mdx | 2 +- content/docs/(functions)/Server/setGuildIcon.mdx | 2 +- content/docs/(functions)/Server/setGuildName.mdx | 2 +- content/docs/(functions)/Text/Components/addButton.mdx | 2 +- content/docs/(functions)/Text/Components/awaitButton.mdx | 2 +- content/docs/(functions)/Text/Components/button.mdx | 2 +- content/docs/(functions)/Text/Components/disableButton.mdx | 2 +- content/docs/(functions)/Text/Components/editButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButtons.mdx | 2 +- content/docs/(functions)/Text/Components/selectMenu.mdx | 2 +- content/docs/(functions)/Text/Condition/if.mdx | 2 +- content/docs/(functions)/Text/Embed/example.mdx | 2 +- content/docs/(functions)/Text/Math/abbreviate.mdx | 2 +- content/docs/(functions)/Text/Math/divide.mdx | 2 +- content/docs/(functions)/Text/Math/math.mdx | 2 +- content/docs/(functions)/Text/Math/modulo.mdx | 2 +- content/docs/(functions)/Text/Math/multi.mdx | 2 +- content/docs/(functions)/Text/Math/ordinal.mdx | 2 +- content/docs/(functions)/Text/Math/round.mdx | 2 +- content/docs/(functions)/Text/Math/roundTenth.mdx | 2 +- content/docs/(functions)/Text/Math/sub.mdx | 2 +- content/docs/(functions)/Text/Math/sum.mdx | 2 +- content/docs/(functions)/Text/Math/truncate.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectCreate.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectGet.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectKeyExists.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectSet.mdx | 2 +- content/docs/(functions)/Text/Object/getObject.mdx | 2 +- content/docs/(functions)/Text/Regex/regexMatch.mdx | 2 +- .../docs/(functions)/Text/Regex/replaceTextWithRegex.mdx | 2 +- content/docs/(functions)/Text/channelNSFW.mdx | 2 +- content/docs/(functions)/Text/charCount.mdx | 2 +- content/docs/(functions)/Text/disableMentions.mdx | 2 +- content/docs/(functions)/Text/isandhas/isBoosting.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isBot.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isDeafened.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isEmoji.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isHoisted.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isManaged.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isMentionable.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isMentioned.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isMuted.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isNumber.mdx | 2 +- content/docs/(functions)/Text/isandhas/isTicket.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidHex.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidInvite.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidLink.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidObject.mdx | 4 ++-- content/docs/(functions)/Text/mentionedChannels.mdx | 2 +- content/docs/(functions)/Text/mentionedRoles.mdx | 2 +- content/docs/(functions)/Text/noMentionMessage.mdx | 2 +- content/docs/(functions)/Text/only/onlyBotPerms.mdx | 2 +- content/docs/(functions)/Text/only/onlyForCategories.mdx | 2 +- content/docs/(functions)/Text/only/onlyForIDs.mdx | 2 +- content/docs/(functions)/Text/only/onlyForRoles.mdx | 2 +- content/docs/(functions)/Text/only/onlyIf.mdx | 2 +- content/docs/(functions)/Text/only/onlyNSFW.mdx | 2 +- content/docs/(functions)/Text/only/onlyPerms.mdx | 2 +- content/docs/(functions)/Text/repeatMessage.mdx | 2 +- content/docs/(functions)/Text/replaceText.mdx | 2 +- .../docs/(functions)/Text/textSplit/advancedTextSplit.mdx | 2 +- content/docs/(functions)/Text/textSplit/concatTextSplit.mdx | 2 +- .../(functions)/Text/textSplit/editTextSplitElement.mdx | 2 +- .../docs/(functions)/Text/textSplit/findTextSplitIndex.mdx | 2 +- .../docs/(functions)/Text/textSplit/getTextSplitLength.mdx | 2 +- content/docs/(functions)/Text/textSplit/joinSplitText.mdx | 2 +- .../(functions)/Text/textSplit/removeTextSplitElement.mdx | 2 +- content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx | 2 +- content/docs/(functions)/Text/textSplit/splitText.mdx | 2 +- content/docs/(functions)/Text/textSplit/textSplit.mdx | 2 +- content/docs/(functions)/Text/toLocaleUpperCase.mdx | 2 +- content/docs/(functions)/Text/toLowercase.mdx | 2 +- content/docs/(functions)/Text/toUppercase.mdx | 2 +- content/docs/(functions)/Threads/createThread.mdx | 2 +- content/docs/(functions)/Threads/deleteThreads.mdx | 2 +- content/docs/(functions)/Threads/editThread.mdx | 2 +- content/docs/(functions)/Threads/getThreads.mdx | 2 +- content/docs/(functions)/Threads/joinThreads.mdx | 2 +- content/docs/(functions)/Threads/leaveThreads.mdx | 2 +- content/docs/(functions)/Threads/thread.mdx | 2 +- content/docs/(functions)/Useful/callFunction.mdx | 2 +- content/docs/(functions)/Useful/forEach.mdx | 2 +- content/docs/(functions)/Useful/function.mdx | 2 +- content/docs/(functions)/Useful/redirectErrors.mdx | 2 +- content/docs/(functions)/Useful/seq.mdx | 2 +- content/docs/(functions)/Useful/setTimeout.mdx | 2 +- content/docs/(functions)/Useful/spread.mdx | 2 +- content/docs/(functions)/Useful/stop.mdx | 2 +- content/docs/(functions)/Useful/suppressErrors.mdx | 2 +- content/docs/(functions)/Useful/wait.mdx | 2 +- content/docs/CodeReferences/ref.channel_types.mdx | 2 +- content/docs/CodeReferences/ref.message_curl_format.mdx | 2 +- content/docs/Contribution_Info/function_template.mdx | 2 +- content/docs/Other/troubleshooting.mdx | 2 +- content/docs/Templates/eco_bal.mdx | 2 +- content/docs/Templates/eco_rob.mdx | 2 +- content/docs/Templates/mod_ban.mdx | 2 +- content/docs/Templates/mod_mute.mdx | 2 +- content/docs/Templates/mod_warn.mdx | 2 +- content/docs/Trigger/modal.mdx | 2 +- 233 files changed, 254 insertions(+), 247 deletions(-) diff --git a/components/badge.tsx b/components/badge.tsx index 67159ee0..9d8f0107 100644 --- a/components/badge.tsx +++ b/components/badge.tsx @@ -33,3 +33,9 @@ export function Badge({ ); } + +export function Tag({text}: {text: string}) { + return ( + + ); +} diff --git a/components/mdx.tsx b/components/mdx.tsx index 71fc1cb1..0d976ef5 100644 --- a/components/mdx.tsx +++ b/components/mdx.tsx @@ -2,7 +2,7 @@ import defaultMdxComponents from "fumadocs-ui/mdx"; import { Accordion, Accordions } from "fumadocs-ui/components/accordion"; import type { MDXComponents } from "mdx/types"; import type { ComponentProps, ComponentType } from "react"; -import { Badge } from "@/components/badge"; +import { Badge, Tag } from "@/components/badge"; import { Arg } from "@/components/arg"; import * as Discord from "@/components/discord"; import { ImageZoom } from "fumadocs-ui/components/image-zoom"; @@ -54,6 +54,7 @@ export function getMDXComponents(components?: MDXComponents) { Accordion, Accordions, Badge, + Tag, Arg, ...Discord, ...components, diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index 08fb316e..728c5314 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -35,4 +35,4 @@ The bot count is retrieved from the bot's cache, not directly from the Discord A **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/cacheMember.mdx b/content/docs/(functions)/Bot/cacheMember.mdx index cd881e62..535c02b6 100644 --- a/content/docs/(functions)/Bot/cacheMember.mdx +++ b/content/docs/(functions)/Bot/cacheMember.mdx @@ -30,4 +30,4 @@ $cacheMember[userID (optional)] **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx index c10465d6..81d792d7 100644 --- a/content/docs/(functions)/Bot/clientID.mdx +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -28,4 +28,4 @@ As you can see, the command `!!exec $clientID` returns the bot's ID: `7257212496 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx index a05ba34a..005bdbe5 100644 --- a/content/docs/(functions)/Bot/ping.mdx +++ b/content/docs/(functions)/Bot/ping.mdx @@ -27,4 +27,4 @@ In this example, the bot responded with `20 ms`, indicating a ping of 20 millise **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx index 8bc9f790..ade32668 100644 --- a/content/docs/(functions)/Bot/ram.mdx +++ b/content/docs/(functions)/Bot/ram.mdx @@ -28,4 +28,4 @@ This indicates that the bot is currently using approximately 2143.55 MB of RAM. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx index 420efc09..d917e833 100644 --- a/content/docs/(functions)/Bot/serverCount.mdx +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -24,4 +24,4 @@ I am in 15000 servers. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/uptime.mdx b/content/docs/(functions)/Bot/uptime.mdx index 0aa08e75..e129c080 100644 --- a/content/docs/(functions)/Bot/uptime.mdx +++ b/content/docs/(functions)/Bot/uptime.mdx @@ -27,4 +27,4 @@ In this example, the bot has been running for 3 days, 17 hours, 53 minutes, and **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channel.mdx b/content/docs/(functions)/Channel/channel.mdx index 85396382..ee9b252b 100644 --- a/content/docs/(functions)/Channel/channel.mdx +++ b/content/docs/(functions)/Channel/channel.mdx @@ -61,4 +61,4 @@ The `type` option returns the channel's type. Refer to this [list](/CodeReferen **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCategoryID.mdx b/content/docs/(functions)/Channel/channelCategoryID.mdx index 156974ec..d090515c 100644 --- a/content/docs/(functions)/Channel/channelCategoryID.mdx +++ b/content/docs/(functions)/Channel/channelCategoryID.mdx @@ -29,4 +29,4 @@ In this example, the command `!!exec $channelCategoryID` is used in a channel th **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index bfe534fc..fbadec94 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -31,4 +31,4 @@ There are 13 threads in the server! **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelExists.mdx b/content/docs/(functions)/Channel/channelExists.mdx index 03d37260..407d4d4c 100644 --- a/content/docs/(functions)/Channel/channelExists.mdx +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -45,4 +45,4 @@ You can use the `$channelID` function to retrieve the ID of a channel based on i **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index f6a03850..6a89d29a 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -48,4 +48,4 @@ This function will **not** work with the channel creation/deletion trigger. Use **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index 44345f7b..dd163018 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -45,4 +45,4 @@ Use `$findChannel` to find a channel using its name. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index f8659842..19beee95 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -32,4 +32,4 @@ The `$channelType` function returns a string representing the channel type. Ref **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index e6521e89..2f7f3fb3 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -39,4 +39,4 @@ In the first example, the bot set the specified channel ID `839090554205241394` **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/closeTicket.mdx b/content/docs/(functions)/Channel/closeTicket.mdx index 3840fda2..4bdd6106 100644 --- a/content/docs/(functions)/Channel/closeTicket.mdx +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -32,4 +32,4 @@ $closeTicket **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/createChannel.mdx b/content/docs/(functions)/Channel/createChannel.mdx index b72806c4..fb7d67d5 100644 --- a/content/docs/(functions)/Channel/createChannel.mdx +++ b/content/docs/(functions)/Channel/createChannel.mdx @@ -53,4 +53,4 @@ For a complete list of valid channel types, see [this reference page](/CodeRefer **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/deleteChannels.mdx b/content/docs/(functions)/Channel/deleteChannels.mdx index 5607d32e..d47b48e5 100644 --- a/content/docs/(functions)/Channel/deleteChannels.mdx +++ b/content/docs/(functions)/Channel/deleteChannels.mdx @@ -34,4 +34,4 @@ This example will delete the channels with IDs 123456789012345678 and 9876543210 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/editChannel.mdx b/content/docs/(functions)/Channel/editChannel.mdx index 48bc421a..caaa1b18 100644 --- a/content/docs/(functions)/Channel/editChannel.mdx +++ b/content/docs/(functions)/Channel/editChannel.mdx @@ -47,4 +47,4 @@ Use `$modifyChannelPerms` to manage channel permissions in more detail. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/eventChannelID.mdx b/content/docs/(functions)/Channel/eventChannelID.mdx index 00537114..307dd554 100644 --- a/content/docs/(functions)/Channel/eventChannelID.mdx +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -22,4 +22,4 @@ $eventChannelID **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/findChannel.mdx b/content/docs/(functions)/Channel/findChannel.mdx index 4437d7c2..3a9cb502 100644 --- a/content/docs/(functions)/Channel/findChannel.mdx +++ b/content/docs/(functions)/Channel/findChannel.mdx @@ -51,4 +51,4 @@ Here, the bot attempts to find a channel named "bot-cmnds" (note the typo). Sin **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/modifyChannelPerms.mdx b/content/docs/(functions)/Channel/modifyChannelPerms.mdx index e126f53a..920751ef 100644 --- a/content/docs/(functions)/Channel/modifyChannelPerms.mdx +++ b/content/docs/(functions)/Channel/modifyChannelPerms.mdx @@ -55,4 +55,4 @@ A comprehensive list of all available permissions can be found [here](/CodeRefer **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index 8078b983..17667c3a 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -50,4 +50,4 @@ Enhance your ticket messages by using embeds! Utilize the [Message Curl Format]( **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/useChannel.mdx b/content/docs/(functions)/Channel/useChannel.mdx index c50e3895..ac0f4c1e 100644 --- a/content/docs/(functions)/Channel/useChannel.mdx +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -34,4 +34,4 @@ Hi! **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index d591cced..fa743893 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -65,4 +65,4 @@ You can send embeds, select menus and buttons by using the [message curl format] **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index 6d5f0a20..4ebb4662 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -66,4 +66,4 @@ You can send embeds, select menus and buttons by using the [message curl format] **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index 4714308b..d353a052 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -65,4 +65,4 @@ You can send embeds, select menus and buttons by using the [message curl format] **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx index 6f051bc7..13631474 100644 --- a/content/docs/(functions)/Date/dateStamp.mdx +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -31,4 +31,4 @@ In this example, the first `$dateStamp` call returns the timestamp in millisecon **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx index 3f4601bc..b2b8a2b0 100644 --- a/content/docs/(functions)/Date/day.mdx +++ b/content/docs/(functions)/Date/day.mdx @@ -34,4 +34,4 @@ Date functions default to the UTC timezone. You can customize the timezone used **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/formatDate.mdx b/content/docs/(functions)/Date/formatDate.mdx index a532b8ca..be2b13ac 100644 --- a/content/docs/(functions)/Date/formatDate.mdx +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -61,4 +61,4 @@ Date functions use the default UTC timezone. You can change this. [Learn More](/ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx index 6d6e495c..8430be9c 100644 --- a/content/docs/(functions)/Date/hour.mdx +++ b/content/docs/(functions)/Date/hour.mdx @@ -33,4 +33,4 @@ Date functions use the UTC timezone by default. You can change the timezone for **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/humanizeMS.mdx b/content/docs/(functions)/Date/humanizeMS.mdx index 080e14c1..b6fb9245 100644 --- a/content/docs/(functions)/Date/humanizeMS.mdx +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -59,4 +59,4 @@ Date functions by default use the UTC timezone, but you can change it. [Learn Mo **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 63fb7af0..fb22aff6 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -45,4 +45,4 @@ Date functions default to UTC timezone. You can customize the timezone by follow **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx index 3239e80c..0d70fb4e 100644 --- a/content/docs/(functions)/Date/minute.mdx +++ b/content/docs/(functions)/Date/minute.mdx @@ -32,4 +32,4 @@ By default, date and time functions use the UTC timezone. You can change the tim **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/month.mdx b/content/docs/(functions)/Date/month.mdx index d79bd11e..88a53b90 100644 --- a/content/docs/(functions)/Date/month.mdx +++ b/content/docs/(functions)/Date/month.mdx @@ -38,4 +38,4 @@ Date functions default to using the UTC timezone. You can change the timezone us **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx index 97fdd2ef..6d6a14e5 100644 --- a/content/docs/(functions)/Date/parseDate.mdx +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -36,4 +36,4 @@ The command `$parseDate[1000;time]` converts 1000 milliseconds to a time format, **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx index 39fb1a07..ac5ce038 100644 --- a/content/docs/(functions)/Date/second.mdx +++ b/content/docs/(functions)/Date/second.mdx @@ -32,4 +32,4 @@ Date functions default to using UTC timezone. You can change this if needed. [Le **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/timeStamp.mdx b/content/docs/(functions)/Date/timeStamp.mdx index 88be38d6..de6fc2c1 100644 --- a/content/docs/(functions)/Date/timeStamp.mdx +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -38,4 +38,4 @@ $timeStamp[Return in Seconds (Yes/No)] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx index 62f0821d..aa65bb77 100644 --- a/content/docs/(functions)/Date/year.mdx +++ b/content/docs/(functions)/Date/year.mdx @@ -34,4 +34,4 @@ Date functions default to the UTC timezone. You can customize the timezone used **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionDelete.mdx b/content/docs/(functions)/Interaction/interactionDelete.mdx index c4bcce04..ce030652 100644 --- a/content/docs/(functions)/Interaction/interactionDelete.mdx +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -36,4 +36,4 @@ $interactionDelete[123456789012345678] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx index d5d6165e..28bf530f 100644 --- a/content/docs/(functions)/Interaction/interactionEdit.mdx +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -43,4 +43,4 @@ You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionId.mdx b/content/docs/(functions)/Interaction/interactionId.mdx index fa7db3c9..fa500f31 100644 --- a/content/docs/(functions)/Interaction/interactionId.mdx +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -28,4 +28,4 @@ This example demonstrates how to use `$interactionId` within the `$interactionRe **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 473e53f8..46116a5b 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -52,4 +52,4 @@ You can send embedded messages using the [Message Curl Format](/CodeReferences/r **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modal.mdx b/content/docs/(functions)/Interaction/modal.mdx index 007dfbce..68d60d3e 100644 --- a/content/docs/(functions)/Interaction/modal.mdx +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -139,4 +139,4 @@ Read more about the menu structure in [selectMenu](/Text/Components/selectMenu) **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modalAnswer.mdx b/content/docs/(functions)/Interaction/modalAnswer.mdx index 3abd8a09..7d5a4ef2 100644 --- a/content/docs/(functions)/Interaction/modalAnswer.mdx +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -28,4 +28,4 @@ The following image illustrates how to use `$modalAnswer` inside the `modal` tri **Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Interaction/modalID.mdx b/content/docs/(functions)/Interaction/modalID.mdx index 1b006ab4..48f49696 100644 --- a/content/docs/(functions)/Interaction/modalID.mdx +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -25,4 +25,4 @@ Imagine you have two modals: "Contact Form" and "Subscription Form". When the " **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index 8c2cad2b..f92a62e7 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -29,4 +29,4 @@ My ID is 123456789123456789 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index 138188e6..8c5854f6 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -55,4 +55,4 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid banning **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 3789188c..1ee80ac5 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -43,4 +43,4 @@ Discord doesn't allow others to change owners nickname. If you will try to chang **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index 603b7d7c..56306b2f 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -30,4 +30,4 @@ false **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index fd20ed60..c2aee715 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -55,4 +55,4 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid kicking **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index 230c3014..a8b55b36 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -32,4 +32,4 @@ Other user: Other User **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 829b584d..0e98c51a 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -30,4 +30,4 @@ ImUser **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index 8b10d3af..2911d832 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -38,4 +38,4 @@ This function requires the Presence Intent to be enabled. You can change that in **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index f793895e..0fcc6872 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -34,4 +34,4 @@ Make sure that the bot does have sufficient permission. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 08cdafaa..476bbc8e 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -54,4 +54,4 @@ Wednesday, January 1, 2025 08:30 PM **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index b5f329cd..9ca59a20 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -39,4 +39,4 @@ To have all members cached, you will need Tier 5 Bot. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index 8db895e3..be23dff3 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -38,4 +38,4 @@ To have all members cached, you will need Tier 5 Bot. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index 5d6e40ff..e861d259 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -40,4 +40,4 @@ To have all members cached, you will need Tier 5 Bot. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index a2fd91d4..456a9012 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -45,4 +45,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index 486744b9..1e623c6b 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -39,4 +39,4 @@ To have all members cached, you will need Tier 5 Bot. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index 6cdfc24c..d1ab6eba 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -41,4 +41,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index 807017eb..e3d5dcb9 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -36,4 +36,4 @@ This feature is deprecated because Discord switched to usernames. This function **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index aaab51de..51f0866a 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -39,4 +39,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 29e11a41..331f6d1f 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -37,4 +37,4 @@ Make sure that the bot does have sufficient permission. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index b9323e3d..78befbaa 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -41,4 +41,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/DM.mdx index dec30551..0bdf1a79 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/DM.mdx @@ -50,4 +50,4 @@ This is a fantastic message! **Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Message/addCmdReactions.mdx b/content/docs/(functions)/Message/addCmdReactions.mdx index f20a5d01..050f773c 100644 --- a/content/docs/(functions)/Message/addCmdReactions.mdx +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -34,4 +34,4 @@ $addCmdReactions[✅;❌] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/addMessageReactions.mdx b/content/docs/(functions)/Message/addMessageReactions.mdx index 6f4164c1..c700ec5c 100644 --- a/content/docs/(functions)/Message/addMessageReactions.mdx +++ b/content/docs/(functions)/Message/addMessageReactions.mdx @@ -30,4 +30,4 @@ You can use the function format `{reactions}` (formatted as `curl`) to use insid **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/addReactions.mdx b/content/docs/(functions)/Message/addReactions.mdx index 50d15a37..7da86e02 100644 --- a/content/docs/(functions)/Message/addReactions.mdx +++ b/content/docs/(functions)/Message/addReactions.mdx @@ -26,4 +26,4 @@ This example shows how to react to a message with specific emojis. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/clearReaction.mdx b/content/docs/(functions)/Message/clearReaction.mdx index e045aadc..b10580d4 100644 --- a/content/docs/(functions)/Message/clearReaction.mdx +++ b/content/docs/(functions)/Message/clearReaction.mdx @@ -30,4 +30,4 @@ This example shows how to remove a specific user's reaction from a message. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/clearReactions.mdx b/content/docs/(functions)/Message/clearReactions.mdx index 245f998a..2181c23c 100644 --- a/content/docs/(functions)/Message/clearReactions.mdx +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -39,4 +39,4 @@ $clearReactions[8372387429384729;9483749283749283;👍] **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/createWebhook.mdx b/content/docs/(functions)/Message/createWebhook.mdx index 9e90aec1..056c97bf 100644 --- a/content/docs/(functions)/Message/createWebhook.mdx +++ b/content/docs/(functions)/Message/createWebhook.mdx @@ -45,4 +45,4 @@ In this example, a webhook named "WikiHook" is created in the channel specified **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteCommand.mdx b/content/docs/(functions)/Message/deleteCommand.mdx index 4e4317ea..9636fbbf 100644 --- a/content/docs/(functions)/Message/deleteCommand.mdx +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -31,4 +31,4 @@ $deleteCommand[1m] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteIn.mdx b/content/docs/(functions)/Message/deleteIn.mdx index 5b2b98ce..1729caf9 100644 --- a/content/docs/(functions)/Message/deleteIn.mdx +++ b/content/docs/(functions)/Message/deleteIn.mdx @@ -27,4 +27,4 @@ $deleteIn[time] **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteMessage.mdx b/content/docs/(functions)/Message/deleteMessage.mdx index 2edeb1ac..6dc8a42f 100644 --- a/content/docs/(functions)/Message/deleteMessage.mdx +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -27,4 +27,4 @@ This example will delete the message with the ID specified in `$messageID` from **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteWebhook.mdx b/content/docs/(functions)/Message/deleteWebhook.mdx index 3ddaa443..eb37359a 100644 --- a/content/docs/(functions)/Message/deleteWebhook.mdx +++ b/content/docs/(functions)/Message/deleteWebhook.mdx @@ -16,4 +16,4 @@ This function requires both the Webhook ID and Token to function correctly. Ens **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/editMessage.mdx b/content/docs/(functions)/Message/editMessage.mdx index 18aa0f5a..1ac02a6e 100644 --- a/content/docs/(functions)/Message/editMessage.mdx +++ b/content/docs/(functions)/Message/editMessage.mdx @@ -42,4 +42,4 @@ You can format your `newMessage` as an embed using the [Message Curl Format](/Co **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/getCommandOption.mdx b/content/docs/(functions)/Message/getCommandOption.mdx index 7107387c..d4db7902 100644 --- a/content/docs/(functions)/Message/getCommandOption.mdx +++ b/content/docs/(functions)/Message/getCommandOption.mdx @@ -25,4 +25,4 @@ This function requires you to specify the data type of the option you're trying **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/getReactions.mdx b/content/docs/(functions)/Message/getReactions.mdx index aed6c875..3befa225 100644 --- a/content/docs/(functions)/Message/getReactions.mdx +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -48,4 +48,4 @@ Counting how many users reacted **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/message.mdx b/content/docs/(functions)/Message/message.mdx index efb27616..74c0eae2 100644 --- a/content/docs/(functions)/Message/message.mdx +++ b/content/docs/(functions)/Message/message.mdx @@ -76,5 +76,5 @@ If your code uses `$message[1]`, and the slash command defines the options in th **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageAttachment.mdx b/content/docs/(functions)/Message/messageAttachment.mdx index e994d7a1..1a8a59b3 100644 --- a/content/docs/(functions)/Message/messageAttachment.mdx +++ b/content/docs/(functions)/Message/messageAttachment.mdx @@ -33,4 +33,4 @@ https://media.discordapp.net/avatars/725721249652670555/781224f90c3b841ba5b40678 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageExists.mdx b/content/docs/(functions)/Message/messageExists.mdx index f62c2162..05f34375 100644 --- a/content/docs/(functions)/Message/messageExists.mdx +++ b/content/docs/(functions)/Message/messageExists.mdx @@ -31,4 +31,4 @@ In this example, if the message exists, the bot will return `true`. If the messa **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageSlice.mdx b/content/docs/(functions)/Message/messageSlice.mdx index bf78abdc..7cd36cd7 100644 --- a/content/docs/(functions)/Message/messageSlice.mdx +++ b/content/docs/(functions)/Message/messageSlice.mdx @@ -49,4 +49,4 @@ Here, `$messageSlice[1;2]` extracts arguments from index 1 to index 2, resulting **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx index bbe83a16..8031cceb 100644 --- a/content/docs/(functions)/Message/messageType.mdx +++ b/content/docs/(functions)/Message/messageType.mdx @@ -33,4 +33,4 @@ The `$messageType` function returns a specific message type. You can find a list **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageWebhookID.mdx b/content/docs/(functions)/Message/messageWebhookID.mdx index a41c0ec1..47c30dc9 100644 --- a/content/docs/(functions)/Message/messageWebhookID.mdx +++ b/content/docs/(functions)/Message/messageWebhookID.mdx @@ -26,4 +26,4 @@ This function requires no arguments and simply returns the webhook ID. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/modifyWebhook.mdx b/content/docs/(functions)/Message/modifyWebhook.mdx index bb99f4cd..e41a0761 100644 --- a/content/docs/(functions)/Message/modifyWebhook.mdx +++ b/content/docs/(functions)/Message/modifyWebhook.mdx @@ -30,4 +30,4 @@ Here's an example of how to use this function: **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index 9f0c166e..a8d4f191 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -117,4 +117,4 @@ Old Messsage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx index eee12e3a..d3791bf2 100644 --- a/content/docs/(functions)/Message/noEscapingMessage.mdx +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -44,4 +44,4 @@ For most use cases, it's recommended to use `$message` to ensure proper characte **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx index 94ec1396..16eeb03d 100644 --- a/content/docs/(functions)/Message/noMentionMessage.mdx +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -30,4 +30,4 @@ In this example, even though the user mentioned "Server Moderator", the bot only **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index ad4feab5..e30ae74a 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -51,4 +51,4 @@ You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_ **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 4738abdb..3f00ff48 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -56,4 +56,4 @@ You can send more complex structures like embed titles, footers, buttons, and me **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index d8035c49..88a99948 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -46,4 +46,4 @@ For non-premium bots, this function will behave exactly as `$sendMessage` due to **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/webhookExists.mdx b/content/docs/(functions)/Message/webhookExists.mdx index 27a6eec5..15020e9b 100644 --- a/content/docs/(functions)/Message/webhookExists.mdx +++ b/content/docs/(functions)/Message/webhookExists.mdx @@ -25,4 +25,4 @@ true **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index 87f6d95a..b1a9d0be 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -45,4 +45,4 @@ This command will return a random integer between 1 and 6 (inclusive). Possible **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index e5c35318..b49fce72 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -27,4 +27,4 @@ This will output a random channel ID from the server where the command is execut **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index 0cf91c0f..a9eb8489 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -33,4 +33,4 @@ The mentions returned by this function are pulled from the server's cached membe **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx index 1c9970ac..4cb37410 100644 --- a/content/docs/(functions)/Random/randomRoleID.mdx +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -30,4 +30,4 @@ In this example, the command `!!exec $randomRoleID` will output a random role ID **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx index aa57e027..4cfb0762 100644 --- a/content/docs/(functions)/Random/randomString.mdx +++ b/content/docs/(functions)/Random/randomString.mdx @@ -29,4 +29,4 @@ In this example, the command `!!exec $randomString[6]` will generate a random st **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index f97e1f75..9ef00cda 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -38,4 +38,4 @@ In this example, the command `!!exec $randomText[I'm sad;I'm very happy]` instru **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index ea13700e..05f0014a 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -30,4 +30,4 @@ The user ID is selected randomly from the server's cached members. This means t **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index 754599f2..b04e669f 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -47,4 +47,4 @@ You can send an embed instead of a simple text message by using the [Message Cur **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx index 75f119fd..13f12338 100644 --- a/content/docs/(functions)/Role/colorRole.mdx +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -21,4 +21,4 @@ $colorRole[Role name;green;red] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/createRole.mdx b/content/docs/(functions)/Role/createRole.mdx index a1c07f98..966265d8 100644 --- a/content/docs/(functions)/Role/createRole.mdx +++ b/content/docs/(functions)/Role/createRole.mdx @@ -38,4 +38,4 @@ For a comprehensive list of available permissions, please see the [Permission Li **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/deleteRoles.mdx b/content/docs/(functions)/Role/deleteRoles.mdx index 62dab490..81a819d6 100644 --- a/content/docs/(functions)/Role/deleteRoles.mdx +++ b/content/docs/(functions)/Role/deleteRoles.mdx @@ -36,4 +36,4 @@ This will delete the role with the ID `879889890890890` and the role with the ID **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/findRole.mdx b/content/docs/(functions)/Role/findRole.mdx index 7c572646..1d2d1bdf 100644 --- a/content/docs/(functions)/Role/findRole.mdx +++ b/content/docs/(functions)/Role/findRole.mdx @@ -51,4 +51,4 @@ undefined **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/getRoleColor.mdx b/content/docs/(functions)/Role/getRoleColor.mdx index e42e0901..f3e138fe 100644 --- a/content/docs/(functions)/Role/getRoleColor.mdx +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -29,4 +29,4 @@ This would return the hex color code of the role, such as `#FF0000` (red). **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Role/giveRoles.mdx b/content/docs/(functions)/Role/giveRoles.mdx index 5ae181fb..5d4bf7b6 100644 --- a/content/docs/(functions)/Role/giveRoles.mdx +++ b/content/docs/(functions)/Role/giveRoles.mdx @@ -41,4 +41,4 @@ This example grants the "Muted" role to the command executor. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx index 4509c17e..e0dbef40 100644 --- a/content/docs/(functions)/Role/guildRoles.mdx +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -42,4 +42,4 @@ This example shows how to retrieve the IDs of all roles in the guild. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx index 68576639..e7d7096d 100644 --- a/content/docs/(functions)/Role/hasRole.mdx +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -32,4 +32,4 @@ false **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx index a42ec365..440e3309 100644 --- a/content/docs/(functions)/Role/highestRole.mdx +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -40,4 +40,4 @@ Admin **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/highestServerRole.mdx b/content/docs/(functions)/Role/highestServerRole.mdx index 0275eb0f..120f6671 100644 --- a/content/docs/(functions)/Role/highestServerRole.mdx +++ b/content/docs/(functions)/Role/highestServerRole.mdx @@ -15,4 +15,4 @@ This function is very simple to use and requires no arguments. It will simply re **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/lowestRole.mdx b/content/docs/(functions)/Role/lowestRole.mdx index 42f08047..4e8ff913 100644 --- a/content/docs/(functions)/Role/lowestRole.mdx +++ b/content/docs/(functions)/Role/lowestRole.mdx @@ -36,4 +36,4 @@ Member **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/lowestServerRole.mdx b/content/docs/(functions)/Role/lowestServerRole.mdx index 6d3ff645..ba1768f4 100644 --- a/content/docs/(functions)/Role/lowestServerRole.mdx +++ b/content/docs/(functions)/Role/lowestServerRole.mdx @@ -14,4 +14,4 @@ This function returns the ID of the role that's at the bottom of your server's r **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/modifyRole.mdx b/content/docs/(functions)/Role/modifyRole.mdx index e3120f1e..b0e5e40b 100644 --- a/content/docs/(functions)/Role/modifyRole.mdx +++ b/content/docs/(functions)/Role/modifyRole.mdx @@ -66,6 +66,6 @@ This example will:
    -**Function difficulty:** +**Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/modifyRolePerms.mdx b/content/docs/(functions)/Role/modifyRolePerms.mdx index 922dd4e8..b229acd0 100644 --- a/content/docs/(functions)/Role/modifyRolePerms.mdx +++ b/content/docs/(functions)/Role/modifyRolePerms.mdx @@ -53,4 +53,4 @@ Refer to this [list](/CodeReferences/ref.permissions_list) for a complete overvi **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index bbdd2fbc..ba84f256 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -57,4 +57,4 @@ This example retrieves the position of the role with the ID `798789079070970`. T **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index c816df05..8f925cbe 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -35,4 +35,4 @@ In this example: **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index 48da0ca2..bf97f5ef 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -43,4 +43,4 @@ This example checks if a role with the name "muted" exists on the server. First **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx index dc0f5620..40e9b00a 100644 --- a/content/docs/(functions)/Role/roleID.mdx +++ b/content/docs/(functions)/Role/roleID.mdx @@ -37,4 +37,4 @@ In this example, the command returns `772053356378062889`, which is the ID of th **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleMembersCount.mdx b/content/docs/(functions)/Role/roleMembersCount.mdx index e0e66979..d469b37a 100644 --- a/content/docs/(functions)/Role/roleMembersCount.mdx +++ b/content/docs/(functions)/Role/roleMembersCount.mdx @@ -27,4 +27,4 @@ This would return the number of members who currently have that role. **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx index c4f3769b..b27d69aa 100644 --- a/content/docs/(functions)/Role/roleName.mdx +++ b/content/docs/(functions)/Role/roleName.mdx @@ -28,4 +28,4 @@ Custom Command **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/ownerID.mdx b/content/docs/(functions)/Server/ownerID.mdx index fd8eb681..d23bf4e1 100644 --- a/content/docs/(functions)/Server/ownerID.mdx +++ b/content/docs/(functions)/Server/ownerID.mdx @@ -21,4 +21,4 @@ $ownerID **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx index b8ad5f0d..fe1b6525 100644 --- a/content/docs/(functions)/Server/serverBoostCount.mdx +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -21,4 +21,4 @@ $serverBoostCount **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index b64bff48..2919ff36 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -21,4 +21,4 @@ All Members **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx index 538d6f08..a966a3d8 100644 --- a/content/docs/(functions)/Server/serverDescription.mdx +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -20,7 +20,7 @@ Custom Command Support Server **Function difficulty:** -**Tags:** # serverDescription +**Tags:** # serverDescription Returns the current server description. This command retrieves the description set for the Discord server. diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx index 35e38bac..b5246487 100644 --- a/content/docs/(functions)/Server/serverIcon.mdx +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -22,4 +22,4 @@ $serverIcon **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx index a0cc105e..79b38979 100644 --- a/content/docs/(functions)/Server/serverName.mdx +++ b/content/docs/(functions)/Server/serverName.mdx @@ -25,4 +25,4 @@ My server's name is: Your Server Name **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx index 96631702..19892577 100644 --- a/content/docs/(functions)/Server/serverRegion.mdx +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -22,4 +22,4 @@ Europe **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverSplash.mdx b/content/docs/(functions)/Server/serverSplash.mdx index 128a9ebd..c86c34d8 100644 --- a/content/docs/(functions)/Server/serverSplash.mdx +++ b/content/docs/(functions)/Server/serverSplash.mdx @@ -13,4 +13,4 @@ Learn more about it: https://support.discord.com/hc/en-us/articles/360028716472- **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx index 45495224..f19017d1 100644 --- a/content/docs/(functions)/Server/serverVerificationLevel.mdx +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -20,4 +20,4 @@ Medium **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx index 24f9ad1d..308ed272 100644 --- a/content/docs/(functions)/Server/setGuildIcon.mdx +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -18,4 +18,4 @@ $setGuildIcon[URL] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx index 9d9dafe9..b4836799 100644 --- a/content/docs/(functions)/Server/setGuildName.mdx +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -18,4 +18,4 @@ $setGuildName[name] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/addButton.mdx b/content/docs/(functions)/Text/Components/addButton.mdx index 56ae44ad..353738bf 100644 --- a/content/docs/(functions)/Text/Components/addButton.mdx +++ b/content/docs/(functions)/Text/Components/addButton.mdx @@ -28,4 +28,4 @@ Adds a button to an existing message. Use `$button` to send a message with a but **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/awaitButton.mdx b/content/docs/(functions)/Text/Components/awaitButton.mdx index 5b7f41d4..3eb6c56c 100644 --- a/content/docs/(functions)/Text/Components/awaitButton.mdx +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -61,5 +61,5 @@ You can send an embed using the [Message Curl Format](/CodeReferences/ref.messag **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/button.mdx b/content/docs/(functions)/Text/Components/button.mdx index f8de207b..d4ee2343 100644 --- a/content/docs/(functions)/Text/Components/button.mdx +++ b/content/docs/(functions)/Text/Components/button.mdx @@ -106,5 +106,5 @@ Check these pages: **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/disableButton.mdx b/content/docs/(functions)/Text/Components/disableButton.mdx index 84f473d0..949dd679 100644 --- a/content/docs/(functions)/Text/Components/disableButton.mdx +++ b/content/docs/(functions)/Text/Components/disableButton.mdx @@ -25,4 +25,4 @@ $disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the la **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/editButton.mdx b/content/docs/(functions)/Text/Components/editButton.mdx index 2cadda74..4d099e69 100644 --- a/content/docs/(functions)/Text/Components/editButton.mdx +++ b/content/docs/(functions)/Text/Components/editButton.mdx @@ -29,4 +29,4 @@ $editButton[Message ID;Query (optional, default: edit the last button);label/sty **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx index 84810160..859a5375 100644 --- a/content/docs/(functions)/Text/Components/removeButton.mdx +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -28,4 +28,4 @@ $removeButton[863xxxxxxxxxx21130] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/removeButtons.mdx b/content/docs/(functions)/Text/Components/removeButtons.mdx index ef609407..45706e6a 100644 --- a/content/docs/(functions)/Text/Components/removeButtons.mdx +++ b/content/docs/(functions)/Text/Components/removeButtons.mdx @@ -14,4 +14,4 @@ $removeButtons[Message ID;Button ID1;Button ID2...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index 63f11788..febb5637 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -208,4 +208,4 @@ Using the menu as trigger check here to [learn more](/Trigger/menu). **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index 4ea9a145..0da42c70 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -131,4 +131,4 @@ You are Lisa with tag 9999 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Embed/example.mdx b/content/docs/(functions)/Text/Embed/example.mdx index fe0faade..2a145c17 100644 --- a/content/docs/(functions)/Text/Embed/example.mdx +++ b/content/docs/(functions)/Text/Embed/example.mdx @@ -124,5 +124,5 @@ Please note, that separators vary between the formats: -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx index 1469d47b..edb57d1a 100644 --- a/content/docs/(functions)/Text/Math/abbreviate.mdx +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -25,4 +25,4 @@ $abbreviate[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/divide.mdx b/content/docs/(functions)/Text/Math/divide.mdx index bb9852ad..aebca3e6 100644 --- a/content/docs/(functions)/Text/Math/divide.mdx +++ b/content/docs/(functions)/Text/Math/divide.mdx @@ -20,5 +20,5 @@ $divide[10;2;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/math.mdx b/content/docs/(functions)/Text/Math/math.mdx index 1ed73d29..bc69b369 100644 --- a/content/docs/(functions)/Text/Math/math.mdx +++ b/content/docs/(functions)/Text/Math/math.mdx @@ -60,4 +60,4 @@ There are more advanced functions located [here.](https://github.com/silentmatt/ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx index 34e5025c..675e95fb 100644 --- a/content/docs/(functions)/Text/Math/modulo.mdx +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -20,5 +20,5 @@ $modulo[10;2;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/multi.mdx b/content/docs/(functions)/Text/Math/multi.mdx index 48a06a87..953aaf85 100644 --- a/content/docs/(functions)/Text/Math/multi.mdx +++ b/content/docs/(functions)/Text/Math/multi.mdx @@ -20,4 +20,4 @@ $multi[10;4;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx index 593b7642..43c7117d 100644 --- a/content/docs/(functions)/Text/Math/ordinal.mdx +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -21,4 +21,4 @@ $ordinal[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx index 6477e7a4..71ed197f 100644 --- a/content/docs/(functions)/Text/Math/round.mdx +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -20,5 +20,5 @@ $round[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx index 96885b33..f4496597 100644 --- a/content/docs/(functions)/Text/Math/roundTenth.mdx +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -20,5 +20,5 @@ $roundTenth[number;tofixed] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/sub.mdx b/content/docs/(functions)/Text/Math/sub.mdx index f2f73158..db3a3186 100644 --- a/content/docs/(functions)/Text/Math/sub.mdx +++ b/content/docs/(functions)/Text/Math/sub.mdx @@ -20,5 +20,5 @@ $sub[10;4;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/sum.mdx b/content/docs/(functions)/Text/Math/sum.mdx index 04b2ccfd..420a2cf1 100644 --- a/content/docs/(functions)/Text/Math/sum.mdx +++ b/content/docs/(functions)/Text/Math/sum.mdx @@ -20,4 +20,4 @@ $sum[1;3;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx index f18b5379..16463aa0 100644 --- a/content/docs/(functions)/Text/Math/truncate.mdx +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -20,4 +20,4 @@ $truncate[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/ObjectCreate.mdx index 45034a55..e48a7cf0 100644 --- a/content/docs/(functions)/Text/Object/ObjectCreate.mdx +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -62,5 +62,5 @@ $setUserVar[Data;$getObject] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/ObjectGet.mdx index 848ab585..849d3081 100644 --- a/content/docs/(functions)/Text/Object/ObjectGet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectGet.mdx @@ -20,5 +20,5 @@ Bot name: Custom Commands, Owner: Rake, Docs Contributor: Wiki **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index 2f3f2b6d..9f9fa37a 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -38,4 +38,4 @@ false **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index 4662a5ae..ba998d21 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -67,5 +67,5 @@ $objectSet[userdata;0;role;Moderator] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx index 1aff2534..15939351 100644 --- a/content/docs/(functions)/Text/Object/getObject.mdx +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -29,5 +29,5 @@ With spaces: \{
    **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx index cd325322..a6086870 100644 --- a/content/docs/(functions)/Text/Regex/regexMatch.mdx +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -51,6 +51,6 @@ These are all regex flags: `g, i, m, u, s, y.` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx index 7b7cb35f..946a4a1d 100644 --- a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx +++ b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx @@ -20,4 +20,4 @@ Today is my birthday 🎉 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index 3be30835..e8a49df7 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -20,4 +20,4 @@ no **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/charCount.mdx b/content/docs/(functions)/Text/charCount.mdx index e4f90a77..2e44ab66 100644 --- a/content/docs/(functions)/Text/charCount.mdx +++ b/content/docs/(functions)/Text/charCount.mdx @@ -20,4 +20,4 @@ this functions returns the number of characters in the provided text **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx index 168c1dab..8d4d7d77 100644 --- a/content/docs/(functions)/Text/disableMentions.mdx +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -20,5 +20,5 @@ $disableMentions **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx index 0dd5c822..d9e08644 100644 --- a/content/docs/(functions)/Text/isandhas/isBoosting.mdx +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx index b596551a..8a91e851 100644 --- a/content/docs/(functions)/Text/isandhas/isBot.mdx +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -22,5 +22,5 @@ false | true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx index 0949938a..7f79653e 100644 --- a/content/docs/(functions)/Text/isandhas/isDeafened.mdx +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -22,5 +22,5 @@ undefined **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx index 45d9bed1..5dd9e318 100644 --- a/content/docs/(functions)/Text/isandhas/isEmoji.mdx +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx index 1a4f808c..ba392249 100644 --- a/content/docs/(functions)/Text/isandhas/isHoisted.mdx +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx index 901d2065..e76ca42f 100644 --- a/content/docs/(functions)/Text/isandhas/isManaged.mdx +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx index f6486257..2db9e978 100644 --- a/content/docs/(functions)/Text/isandhas/isMentionable.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -22,5 +22,5 @@ false **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx index 67ba3614..3fb6fd63 100644 --- a/content/docs/(functions)/Text/isandhas/isMentioned.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx index 99a6a159..ea563972 100644 --- a/content/docs/(functions)/Text/isandhas/isMuted.mdx +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index ee3f8a75..dcc1036b 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -20,4 +20,4 @@ true | false **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx index 7d2d89f2..259252a9 100644 --- a/content/docs/(functions)/Text/isandhas/isTicket.mdx +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -22,5 +22,5 @@ false | true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx index fa380477..05703b2b 100644 --- a/content/docs/(functions)/Text/isandhas/isValidHex.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -22,5 +22,5 @@ true , false, true **Function difficulty:** ###### Tags: - - + + diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx index 70d107c3..d16fc6b9 100644 --- a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -22,5 +22,5 @@ false **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx index 39244541..eb21156e 100644 --- a/content/docs/(functions)/Text/isandhas/isValidLink.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx index 5a25f4e9..80412c67 100644 --- a/content/docs/(functions)/Text/isandhas/isValidObject.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/mentionedChannels.mdx b/content/docs/(functions)/Text/mentionedChannels.mdx index 4f185ed7..6bb06f28 100644 --- a/content/docs/(functions)/Text/mentionedChannels.mdx +++ b/content/docs/(functions)/Text/mentionedChannels.mdx @@ -20,4 +20,4 @@ $mentionedChannels[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/mentionedRoles.mdx b/content/docs/(functions)/Text/mentionedRoles.mdx index 1487b0a4..d70d4f30 100644 --- a/content/docs/(functions)/Text/mentionedRoles.mdx +++ b/content/docs/(functions)/Text/mentionedRoles.mdx @@ -20,4 +20,4 @@ $mentionedRoles[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/noMentionMessage.mdx b/content/docs/(functions)/Text/noMentionMessage.mdx index 7969e948..6b2f5871 100644 --- a/content/docs/(functions)/Text/noMentionMessage.mdx +++ b/content/docs/(functions)/Text/noMentionMessage.mdx @@ -21,4 +21,4 @@ aaa **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx index 68913904..4359ce05 100644 --- a/content/docs/(functions)/Text/only/onlyBotPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForCategories.mdx b/content/docs/(functions)/Text/only/onlyForCategories.mdx index 0b70433e..c4139b1d 100644 --- a/content/docs/(functions)/Text/only/onlyForCategories.mdx +++ b/content/docs/(functions)/Text/only/onlyForCategories.mdx @@ -25,5 +25,5 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForIDs.mdx b/content/docs/(functions)/Text/only/onlyForIDs.mdx index 086f290d..f8333aa5 100644 --- a/content/docs/(functions)/Text/only/onlyForIDs.mdx +++ b/content/docs/(functions)/Text/only/onlyForIDs.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx index 5a5d4263..8311da6a 100644 --- a/content/docs/(functions)/Text/only/onlyForRoles.mdx +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyIf.mdx b/content/docs/(functions)/Text/only/onlyIf.mdx index b45e02df..7eee12a4 100644 --- a/content/docs/(functions)/Text/only/onlyIf.mdx +++ b/content/docs/(functions)/Text/only/onlyIf.mdx @@ -25,5 +25,5 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx index 46546d78..f84ba9e6 100644 --- a/content/docs/(functions)/Text/only/onlyNSFW.mdx +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx index d1fe078f..c1f2d573 100644 --- a/content/docs/(functions)/Text/only/onlyPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/repeatMessage.mdx b/content/docs/(functions)/Text/repeatMessage.mdx index 2d219126..6c5252ad 100644 --- a/content/docs/(functions)/Text/repeatMessage.mdx +++ b/content/docs/(functions)/Text/repeatMessage.mdx @@ -20,4 +20,4 @@ aaa **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/replaceText.mdx b/content/docs/(functions)/Text/replaceText.mdx index deffb8a6..850553f1 100644 --- a/content/docs/(functions)/Text/replaceText.mdx +++ b/content/docs/(functions)/Text/replaceText.mdx @@ -20,4 +20,4 @@ test **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx index 688ec0dc..952e04ef 100644 --- a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -27,5 +27,5 @@ what a nice day **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx index 34d296ab..3904cca3 100644 --- a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arrayConcat` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx index fdca1133..aea7d4d2 100644 --- a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -25,4 +25,4 @@ This function got deprecated, use `$arraySet` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx index 30b15f60..7519922e 100644 --- a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arraySearch` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx index f39faea1..0f6d4993 100644 --- a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx +++ b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx @@ -27,4 +27,4 @@ This function got deprecated, use `$arrayLength` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx index f923031b..908a5e16 100644 --- a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx +++ b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arrayJoin` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx index 3cc98026..db5b1f61 100644 --- a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx @@ -18,4 +18,4 @@ This function got deprecated, use `$arrayRemove` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx index 673d5d20..320d8d27 100644 --- a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -20,5 +20,5 @@ $spliceTextJoin[text;separator1;separator2;separator3;every] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index fb324274..de478be9 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -30,4 +30,4 @@ This function got deprecated, use `$arrayGet` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index 8846d5b4..eefa0c15 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -20,5 +20,5 @@ $textSplit[text;separator(optional, default = ,)] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/toLocaleUpperCase.mdx b/content/docs/(functions)/Text/toLocaleUpperCase.mdx index ced93ed1..dbc68b37 100644 --- a/content/docs/(functions)/Text/toLocaleUpperCase.mdx +++ b/content/docs/(functions)/Text/toLocaleUpperCase.mdx @@ -20,5 +20,5 @@ Hello How Are You? **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/toLowercase.mdx b/content/docs/(functions)/Text/toLowercase.mdx index 53095b4d..974c610b 100644 --- a/content/docs/(functions)/Text/toLowercase.mdx +++ b/content/docs/(functions)/Text/toLowercase.mdx @@ -20,4 +20,4 @@ hello **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/toUppercase.mdx b/content/docs/(functions)/Text/toUppercase.mdx index c0249736..2add2aca 100644 --- a/content/docs/(functions)/Text/toUppercase.mdx +++ b/content/docs/(functions)/Text/toUppercase.mdx @@ -20,4 +20,4 @@ HELLO **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/createThread.mdx b/content/docs/(functions)/Threads/createThread.mdx index 30317123..a128d23a 100644 --- a/content/docs/(functions)/Threads/createThread.mdx +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -43,5 +43,5 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/deleteThreads.mdx b/content/docs/(functions)/Threads/deleteThreads.mdx index b7dfcb43..1c2679c0 100644 --- a/content/docs/(functions)/Threads/deleteThreads.mdx +++ b/content/docs/(functions)/Threads/deleteThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/editThread.mdx b/content/docs/(functions)/Threads/editThread.mdx index 2d8144ae..f066e373 100644 --- a/content/docs/(functions)/Threads/editThread.mdx +++ b/content/docs/(functions)/Threads/editThread.mdx @@ -27,4 +27,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx index 8ebe0b6f..94b63f3c 100644 --- a/content/docs/(functions)/Threads/getThreads.mdx +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -25,4 +25,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/joinThreads.mdx b/content/docs/(functions)/Threads/joinThreads.mdx index 577785eb..68040b83 100644 --- a/content/docs/(functions)/Threads/joinThreads.mdx +++ b/content/docs/(functions)/Threads/joinThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/leaveThreads.mdx b/content/docs/(functions)/Threads/leaveThreads.mdx index 984f87e6..7744ea8b 100644 --- a/content/docs/(functions)/Threads/leaveThreads.mdx +++ b/content/docs/(functions)/Threads/leaveThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx index b3583eab..2b3b8a76 100644 --- a/content/docs/(functions)/Threads/thread.mdx +++ b/content/docs/(functions)/Threads/thread.mdx @@ -42,4 +42,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index c38d1068..c7b272a1 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -57,4 +57,4 @@ A function name can't start with number, and must be within [A-Z or a-z or _ or **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 6ee4cabf..7ec054e4 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -65,5 +65,5 @@ This can be used with `$seq`! **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index 26fccf7a..ac83b4d5 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -67,5 +67,5 @@ but if you are using $callFunction to call the function, any name is valid **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx index a0eacf92..1c53c185 100644 --- a/content/docs/(functions)/Useful/redirectErrors.mdx +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -36,5 +36,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx index 9f3d2bdb..fd21430a 100644 --- a/content/docs/(functions)/Useful/seq.mdx +++ b/content/docs/(functions)/Useful/seq.mdx @@ -26,4 +26,4 @@ This can be used with `$forEach` quite easily **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/setTimeout.mdx b/content/docs/(functions)/Useful/setTimeout.mdx index 2516baba..2b1fd67b 100644 --- a/content/docs/(functions)/Useful/setTimeout.mdx +++ b/content/docs/(functions)/Useful/setTimeout.mdx @@ -39,5 +39,5 @@ If you only want to wait less then 1m, you can use `$wait` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx index 1608cd7d..da826e92 100644 --- a/content/docs/(functions)/Useful/spread.mdx +++ b/content/docs/(functions)/Useful/spread.mdx @@ -22,5 +22,5 @@ Your color is Yellow **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx index 5b4ab098..7ff938d4 100644 --- a/content/docs/(functions)/Useful/stop.mdx +++ b/content/docs/(functions)/Useful/stop.mdx @@ -49,4 +49,4 @@ This is plain text after the stop function **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx index a942ffb9..893c3faf 100644 --- a/content/docs/(functions)/Useful/suppressErrors.mdx +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -37,5 +37,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/wait.mdx b/content/docs/(functions)/Useful/wait.mdx index 8d83084b..bb616d35 100644 --- a/content/docs/(functions)/Useful/wait.mdx +++ b/content/docs/(functions)/Useful/wait.mdx @@ -35,5 +35,5 @@ If you want to wait more then 1m, we suggest you use `$setTimeout` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/CodeReferences/ref.channel_types.mdx b/content/docs/CodeReferences/ref.channel_types.mdx index 4c15c1aa..5e4ac1b9 100644 --- a/content/docs/CodeReferences/ref.channel_types.mdx +++ b/content/docs/CodeReferences/ref.channel_types.mdx @@ -50,4 +50,4 @@ thread_public -**Tags:** +**Tags:** diff --git a/content/docs/CodeReferences/ref.message_curl_format.mdx b/content/docs/CodeReferences/ref.message_curl_format.mdx index 42cbf7b5..15033752 100644 --- a/content/docs/CodeReferences/ref.message_curl_format.mdx +++ b/content/docs/CodeReferences/ref.message_curl_format.mdx @@ -80,4 +80,4 @@ Correct is: `{author:I love\:World} ` -**Tags:** +**Tags:** diff --git a/content/docs/Contribution_Info/function_template.mdx b/content/docs/Contribution_Info/function_template.mdx index 00083829..adb6fd47 100644 --- a/content/docs/Contribution_Info/function_template.mdx +++ b/content/docs/Contribution_Info/function_template.mdx @@ -21,5 +21,5 @@ There is 1 bot in the server ##### Function difficulty: -###### Tags: +###### Tags: ```` \ No newline at end of file diff --git a/content/docs/Other/troubleshooting.mdx b/content/docs/Other/troubleshooting.mdx index d3c049bd..4f1e41e1 100644 --- a/content/docs/Other/troubleshooting.mdx +++ b/content/docs/Other/troubleshooting.mdx @@ -8,7 +8,7 @@ Each problem is presented as a question, followed by troubleshooting steps and t ## My command doesn't trigger - + **Possible Causes:** diff --git a/content/docs/Templates/eco_bal.mdx b/content/docs/Templates/eco_bal.mdx index ef0cd76e..17dec588 100644 --- a/content/docs/Templates/eco_bal.mdx +++ b/content/docs/Templates/eco_bal.mdx @@ -16,4 +16,4 @@ Channel Used: `None`
    ## Token: Clone by using this command in your own server: `!!clone vFHnD` -**Tags:** +**Tags:** diff --git a/content/docs/Templates/eco_rob.mdx b/content/docs/Templates/eco_rob.mdx index a6d5dcae..10625165 100644 --- a/content/docs/Templates/eco_rob.mdx +++ b/content/docs/Templates/eco_rob.mdx @@ -16,4 +16,4 @@ Channel Used: `None`
    ## Token: Clone by using this command in your own server: `!!clone XC5sK` -**Tags:** +**Tags:** diff --git a/content/docs/Templates/mod_ban.mdx b/content/docs/Templates/mod_ban.mdx index a43205e6..907d3af6 100644 --- a/content/docs/Templates/mod_ban.mdx +++ b/content/docs/Templates/mod_ban.mdx @@ -23,4 +23,4 @@ Please be aware, that this code doesn't includes permissions checks!! Everyone c -**Tags:** +**Tags:** diff --git a/content/docs/Templates/mod_mute.mdx b/content/docs/Templates/mod_mute.mdx index 71cd67e6..52390d4c 100644 --- a/content/docs/Templates/mod_mute.mdx +++ b/content/docs/Templates/mod_mute.mdx @@ -22,4 +22,4 @@ Please be aware, that this code doesn't includes permissions checks!! Everyone c -**Tags:** +**Tags:** diff --git a/content/docs/Templates/mod_warn.mdx b/content/docs/Templates/mod_warn.mdx index a8a2a25a..3b4ab6a0 100644 --- a/content/docs/Templates/mod_warn.mdx +++ b/content/docs/Templates/mod_warn.mdx @@ -22,4 +22,4 @@ Please be aware, that this code doesn't includes permissions checks!! Everyone c -**Tags:** +**Tags:** diff --git a/content/docs/Trigger/modal.mdx b/content/docs/Trigger/modal.mdx index d43a0bd4..bd816c33 100644 --- a/content/docs/Trigger/modal.mdx +++ b/content/docs/Trigger/modal.mdx @@ -45,5 +45,5 @@ You need to send a modal with `$modal` within 1 second of button/menu/slash exec -**Tags:** +**Tags:** From 999da2eafd6bb8e167c2728694d5dcc51f504f78 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:23:52 +0200 Subject: [PATCH 34/62] Use title style for tag --- content/docs/(functions)/Bot/botCount.mdx | 2 +- content/docs/(functions)/Bot/clientID.mdx | 2 +- content/docs/(functions)/Bot/ping.mdx | 2 +- content/docs/(functions)/Bot/ram.mdx | 2 +- content/docs/(functions)/Bot/serverCount.mdx | 2 +- content/docs/(functions)/Channel/channel.mdx | 2 +- content/docs/(functions)/Channel/channelCategoryID.mdx | 2 +- content/docs/(functions)/Channel/channelCount.mdx | 2 +- content/docs/(functions)/Channel/channelExists.mdx | 2 +- content/docs/(functions)/Channel/channelID.mdx | 2 +- content/docs/(functions)/Channel/channelName.mdx | 2 +- content/docs/(functions)/Channel/channelType.mdx | 2 +- content/docs/(functions)/Channel/channelUsed.mdx | 2 +- content/docs/(functions)/Channel/closeTicket.mdx | 2 +- content/docs/(functions)/Channel/createChannel.mdx | 2 +- content/docs/(functions)/Channel/deleteChannels.mdx | 2 +- content/docs/(functions)/Channel/editChannel.mdx | 2 +- content/docs/(functions)/Channel/eventChannelID.mdx | 2 +- content/docs/(functions)/Channel/findChannel.mdx | 2 +- content/docs/(functions)/Channel/modifyChannelPerms.mdx | 2 +- content/docs/(functions)/Channel/newTicket.mdx | 2 +- content/docs/(functions)/Channel/useChannel.mdx | 2 +- content/docs/(functions)/Date/dateStamp.mdx | 2 +- content/docs/(functions)/Date/day.mdx | 2 +- content/docs/(functions)/Date/formatDate.mdx | 2 +- content/docs/(functions)/Date/hour.mdx | 2 +- content/docs/(functions)/Date/humanizeMS.mdx | 2 +- content/docs/(functions)/Date/memberJoinedDate.mdx | 2 +- content/docs/(functions)/Date/minute.mdx | 2 +- content/docs/(functions)/Date/month.mdx | 2 +- content/docs/(functions)/Date/parseDate.mdx | 2 +- content/docs/(functions)/Date/second.mdx | 2 +- content/docs/(functions)/Date/timeStamp.mdx | 2 +- content/docs/(functions)/Date/year.mdx | 2 +- content/docs/(functions)/Interaction/interactionDelete.mdx | 2 +- content/docs/(functions)/Interaction/interactionEdit.mdx | 2 +- content/docs/(functions)/Interaction/interactionId.mdx | 2 +- content/docs/(functions)/Interaction/interactionReply.mdx | 2 +- content/docs/(functions)/Interaction/modal.mdx | 2 +- content/docs/(functions)/Interaction/modalAnswer.mdx | 2 +- content/docs/(functions)/Interaction/modalID.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/ban.mdx | 2 +- content/docs/(functions)/Member/changeNickname.mdx | 2 +- content/docs/(functions)/Member/isBanned.mdx | 2 +- content/docs/(functions)/Member/kick.mdx | 2 +- content/docs/(functions)/Member/mention.mdx | 2 +- content/docs/(functions)/Member/nickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Member/unban.mdx | 2 +- content/docs/(functions)/Member/user.mdx | 2 +- content/docs/(functions)/Member/userID.mdx | 2 +- content/docs/(functions)/Member/userReacted.mdx | 2 +- content/docs/(functions)/Member/userRoleColor.mdx | 2 +- content/docs/(functions)/Member/userRoles.mdx | 2 +- content/docs/(functions)/Member/userTag.mdx | 2 +- content/docs/(functions)/Member/username.mdx | 2 +- content/docs/(functions)/Member/usersBanned.mdx | 2 +- content/docs/(functions)/Member/usersInChannel.mdx | 2 +- content/docs/(functions)/Message/addCmdReactions.mdx | 2 +- content/docs/(functions)/Message/addMessageReactions.mdx | 2 +- content/docs/(functions)/Message/addReactions.mdx | 2 +- content/docs/(functions)/Message/clearReaction.mdx | 2 +- content/docs/(functions)/Message/clearReactions.mdx | 2 +- content/docs/(functions)/Message/deleteCommand.mdx | 2 +- content/docs/(functions)/Message/deleteMessage.mdx | 2 +- content/docs/(functions)/Message/deleteWebhook.mdx | 2 +- content/docs/(functions)/Message/getCommandOption.mdx | 2 +- content/docs/(functions)/Message/getReactions.mdx | 2 +- content/docs/(functions)/Message/message.mdx | 2 +- content/docs/(functions)/Message/messageType.mdx | 2 +- content/docs/(functions)/Message/modifyWebhook.mdx | 2 +- content/docs/(functions)/Message/msg.mdx | 2 +- content/docs/(functions)/Message/noEscapingMessage.mdx | 2 +- content/docs/(functions)/Message/noMentionMessage.mdx | 2 +- content/docs/(functions)/Message/sendDM.mdx | 2 +- content/docs/(functions)/Message/sendMessage.mdx | 2 +- content/docs/(functions)/Message/sendWebhook.mdx | 2 +- content/docs/(functions)/Message/webhookExists.mdx | 2 +- content/docs/(functions)/Random/random.mdx | 2 +- content/docs/(functions)/Random/randomChannelID.mdx | 2 +- content/docs/(functions)/Random/randomMention.mdx | 2 +- content/docs/(functions)/Random/randomRoleID.mdx | 2 +- content/docs/(functions)/Random/randomString.mdx | 2 +- content/docs/(functions)/Random/randomText.mdx | 2 +- content/docs/(functions)/Random/randomUserID.mdx | 2 +- content/docs/(functions)/Role/blackListRoleIDs.mdx | 2 +- content/docs/(functions)/Role/colorRole.mdx | 2 +- content/docs/(functions)/Role/createRole.mdx | 2 +- content/docs/(functions)/Role/deleteRoles.mdx | 2 +- content/docs/(functions)/Role/findRole.mdx | 2 +- content/docs/(functions)/Role/getRoleColor.mdx | 2 +- content/docs/(functions)/Role/guildRoles.mdx | 2 +- content/docs/(functions)/Role/hasRole.mdx | 2 +- content/docs/(functions)/Role/highestServerRole.mdx | 2 +- content/docs/(functions)/Role/lowestServerRole.mdx | 2 +- content/docs/(functions)/Role/modifyRole.mdx | 2 +- content/docs/(functions)/Role/role.mdx | 2 +- content/docs/(functions)/Role/roleCount.mdx | 2 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleID.mdx | 2 +- content/docs/(functions)/Role/roleMembersCount.mdx | 2 +- content/docs/(functions)/Role/roleName.mdx | 2 +- content/docs/(functions)/Server/serverBoostCount.mdx | 2 +- content/docs/(functions)/Server/serverContentFilter.mdx | 2 +- content/docs/(functions)/Server/serverDescription.mdx | 2 +- content/docs/(functions)/Server/serverIcon.mdx | 2 +- content/docs/(functions)/Server/serverName.mdx | 2 +- content/docs/(functions)/Server/serverRegion.mdx | 2 +- content/docs/(functions)/Server/serverSplash.mdx | 2 +- content/docs/(functions)/Server/setGuildIcon.mdx | 2 +- content/docs/(functions)/Server/setGuildName.mdx | 2 +- content/docs/(functions)/Text/Components/addButton.mdx | 2 +- content/docs/(functions)/Text/Components/awaitButton.mdx | 2 +- content/docs/(functions)/Text/Components/button.mdx | 2 +- content/docs/(functions)/Text/Components/disableButton.mdx | 2 +- content/docs/(functions)/Text/Components/editButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButtons.mdx | 2 +- content/docs/(functions)/Text/Components/selectMenu.mdx | 2 +- content/docs/(functions)/Text/Condition/if.mdx | 2 +- content/docs/(functions)/Text/Embed/example.mdx | 2 +- content/docs/(functions)/Text/Math/abbreviate.mdx | 2 +- content/docs/(functions)/Text/Math/modulo.mdx | 2 +- content/docs/(functions)/Text/Math/ordinal.mdx | 2 +- content/docs/(functions)/Text/Math/round.mdx | 2 +- content/docs/(functions)/Text/Math/roundTenth.mdx | 2 +- content/docs/(functions)/Text/Math/truncate.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectCreate.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectGet.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectSet.mdx | 2 +- content/docs/(functions)/Text/Object/getObject.mdx | 2 +- content/docs/(functions)/Text/Regex/regexMatch.mdx | 2 +- content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx | 2 +- content/docs/(functions)/Text/channelNSFW.mdx | 2 +- content/docs/(functions)/Text/charCount.mdx | 2 +- content/docs/(functions)/Text/isandhas/isBoosting.mdx | 2 +- content/docs/(functions)/Text/isandhas/isBot.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isDeafened.mdx | 2 +- content/docs/(functions)/Text/isandhas/isEmoji.mdx | 2 +- content/docs/(functions)/Text/isandhas/isHoisted.mdx | 2 +- content/docs/(functions)/Text/isandhas/isManaged.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMentionable.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMentioned.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMuted.mdx | 2 +- content/docs/(functions)/Text/isandhas/isNumber.mdx | 2 +- content/docs/(functions)/Text/isandhas/isTicket.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidHex.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidInvite.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidLink.mdx | 4 ++-- content/docs/(functions)/Text/isandhas/isValidObject.mdx | 4 ++-- content/docs/(functions)/Text/only/onlyBotPerms.mdx | 2 +- content/docs/(functions)/Text/only/onlyForRoles.mdx | 2 +- content/docs/(functions)/Text/only/onlyNSFW.mdx | 2 +- content/docs/(functions)/Text/only/onlyPerms.mdx | 2 +- content/docs/(functions)/Text/repeatMessage.mdx | 2 +- content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx | 2 +- content/docs/(functions)/Text/textSplit/concatTextSplit.mdx | 2 +- .../docs/(functions)/Text/textSplit/editTextSplitElement.mdx | 2 +- .../docs/(functions)/Text/textSplit/findTextSplitIndex.mdx | 2 +- .../docs/(functions)/Text/textSplit/getTextSplitLength.mdx | 2 +- content/docs/(functions)/Text/textSplit/joinSplitText.mdx | 2 +- .../(functions)/Text/textSplit/removeTextSplitElement.mdx | 2 +- content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx | 2 +- content/docs/(functions)/Text/textSplit/splitText.mdx | 2 +- content/docs/(functions)/Text/textSplit/textSplit.mdx | 2 +- content/docs/(functions)/Text/toLowercase.mdx | 2 +- content/docs/(functions)/Text/toUppercase.mdx | 2 +- content/docs/(functions)/Threads/createThread.mdx | 2 +- content/docs/(functions)/Threads/deleteThreads.mdx | 2 +- content/docs/(functions)/Threads/editThread.mdx | 2 +- content/docs/(functions)/Threads/getThreads.mdx | 2 +- content/docs/(functions)/Threads/joinThreads.mdx | 2 +- content/docs/(functions)/Threads/leaveThreads.mdx | 2 +- content/docs/(functions)/Threads/thread.mdx | 2 +- content/docs/(functions)/Useful/forEach.mdx | 2 +- content/docs/(functions)/Useful/redirectErrors.mdx | 2 +- content/docs/(functions)/Useful/seq.mdx | 2 +- content/docs/(functions)/Useful/setTimeout.mdx | 2 +- content/docs/(functions)/Useful/spread.mdx | 2 +- content/docs/(functions)/Useful/suppressErrors.mdx | 2 +- content/docs/(functions)/Useful/wait.mdx | 2 +- content/docs/Contribution_Info/function_template.mdx | 2 +- content/docs/Trigger/modal.mdx | 2 +- 184 files changed, 190 insertions(+), 190 deletions(-) diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index 728c5314..ffe1f558 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -35,4 +35,4 @@ The bot count is retrieved from the bot's cache, not directly from the Discord A **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx index 81d792d7..7a880c3e 100644 --- a/content/docs/(functions)/Bot/clientID.mdx +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -28,4 +28,4 @@ As you can see, the command `!!exec $clientID` returns the bot's ID: `7257212496 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx index 005bdbe5..5c4fa293 100644 --- a/content/docs/(functions)/Bot/ping.mdx +++ b/content/docs/(functions)/Bot/ping.mdx @@ -27,4 +27,4 @@ In this example, the bot responded with `20 ms`, indicating a ping of 20 millise **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx index ade32668..939cc5e8 100644 --- a/content/docs/(functions)/Bot/ram.mdx +++ b/content/docs/(functions)/Bot/ram.mdx @@ -28,4 +28,4 @@ This indicates that the bot is currently using approximately 2143.55 MB of RAM. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx index d917e833..b9aa88d7 100644 --- a/content/docs/(functions)/Bot/serverCount.mdx +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -24,4 +24,4 @@ I am in 15000 servers. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channel.mdx b/content/docs/(functions)/Channel/channel.mdx index ee9b252b..587a07d8 100644 --- a/content/docs/(functions)/Channel/channel.mdx +++ b/content/docs/(functions)/Channel/channel.mdx @@ -61,4 +61,4 @@ The `type` option returns the channel's type. Refer to this [list](/CodeReferen **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCategoryID.mdx b/content/docs/(functions)/Channel/channelCategoryID.mdx index d090515c..1f752afa 100644 --- a/content/docs/(functions)/Channel/channelCategoryID.mdx +++ b/content/docs/(functions)/Channel/channelCategoryID.mdx @@ -29,4 +29,4 @@ In this example, the command `!!exec $channelCategoryID` is used in a channel th **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index fbadec94..566086c2 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -31,4 +31,4 @@ There are 13 threads in the server! **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelExists.mdx b/content/docs/(functions)/Channel/channelExists.mdx index 407d4d4c..20c88e52 100644 --- a/content/docs/(functions)/Channel/channelExists.mdx +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -45,4 +45,4 @@ You can use the `$channelID` function to retrieve the ID of a channel based on i **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index 6a89d29a..09723f08 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -48,4 +48,4 @@ This function will **not** work with the channel creation/deletion trigger. Use **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index dd163018..2d1cfac7 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -45,4 +45,4 @@ Use `$findChannel` to find a channel using its name. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index 19beee95..71a76d53 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -32,4 +32,4 @@ The `$channelType` function returns a string representing the channel type. Ref **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index 2f7f3fb3..d5c68455 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -39,4 +39,4 @@ In the first example, the bot set the specified channel ID `839090554205241394` **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/closeTicket.mdx b/content/docs/(functions)/Channel/closeTicket.mdx index 4bdd6106..4f058cd2 100644 --- a/content/docs/(functions)/Channel/closeTicket.mdx +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -32,4 +32,4 @@ $closeTicket **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/createChannel.mdx b/content/docs/(functions)/Channel/createChannel.mdx index fb7d67d5..cf251425 100644 --- a/content/docs/(functions)/Channel/createChannel.mdx +++ b/content/docs/(functions)/Channel/createChannel.mdx @@ -53,4 +53,4 @@ For a complete list of valid channel types, see [this reference page](/CodeRefer **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/deleteChannels.mdx b/content/docs/(functions)/Channel/deleteChannels.mdx index d47b48e5..f4ff8f69 100644 --- a/content/docs/(functions)/Channel/deleteChannels.mdx +++ b/content/docs/(functions)/Channel/deleteChannels.mdx @@ -34,4 +34,4 @@ This example will delete the channels with IDs 123456789012345678 and 9876543210 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/editChannel.mdx b/content/docs/(functions)/Channel/editChannel.mdx index caaa1b18..d17ee7a3 100644 --- a/content/docs/(functions)/Channel/editChannel.mdx +++ b/content/docs/(functions)/Channel/editChannel.mdx @@ -47,4 +47,4 @@ Use `$modifyChannelPerms` to manage channel permissions in more detail. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/eventChannelID.mdx b/content/docs/(functions)/Channel/eventChannelID.mdx index 307dd554..e36b2be5 100644 --- a/content/docs/(functions)/Channel/eventChannelID.mdx +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -22,4 +22,4 @@ $eventChannelID **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/findChannel.mdx b/content/docs/(functions)/Channel/findChannel.mdx index 3a9cb502..f75ad347 100644 --- a/content/docs/(functions)/Channel/findChannel.mdx +++ b/content/docs/(functions)/Channel/findChannel.mdx @@ -51,4 +51,4 @@ Here, the bot attempts to find a channel named "bot-cmnds" (note the typo). Sin **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/modifyChannelPerms.mdx b/content/docs/(functions)/Channel/modifyChannelPerms.mdx index 920751ef..3050123d 100644 --- a/content/docs/(functions)/Channel/modifyChannelPerms.mdx +++ b/content/docs/(functions)/Channel/modifyChannelPerms.mdx @@ -55,4 +55,4 @@ A comprehensive list of all available permissions can be found [here](/CodeRefer **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index 17667c3a..10500b1d 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -50,4 +50,4 @@ Enhance your ticket messages by using embeds! Utilize the [Message Curl Format]( **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/useChannel.mdx b/content/docs/(functions)/Channel/useChannel.mdx index ac0f4c1e..724728f0 100644 --- a/content/docs/(functions)/Channel/useChannel.mdx +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -34,4 +34,4 @@ Hi! **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx index 13631474..bec64756 100644 --- a/content/docs/(functions)/Date/dateStamp.mdx +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -31,4 +31,4 @@ In this example, the first `$dateStamp` call returns the timestamp in millisecon **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx index b2b8a2b0..dd7e89c8 100644 --- a/content/docs/(functions)/Date/day.mdx +++ b/content/docs/(functions)/Date/day.mdx @@ -34,4 +34,4 @@ Date functions default to the UTC timezone. You can customize the timezone used **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/formatDate.mdx b/content/docs/(functions)/Date/formatDate.mdx index be2b13ac..38c51173 100644 --- a/content/docs/(functions)/Date/formatDate.mdx +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -61,4 +61,4 @@ Date functions use the default UTC timezone. You can change this. [Learn More](/ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx index 8430be9c..221fb890 100644 --- a/content/docs/(functions)/Date/hour.mdx +++ b/content/docs/(functions)/Date/hour.mdx @@ -33,4 +33,4 @@ Date functions use the UTC timezone by default. You can change the timezone for **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/humanizeMS.mdx b/content/docs/(functions)/Date/humanizeMS.mdx index b6fb9245..8b7700eb 100644 --- a/content/docs/(functions)/Date/humanizeMS.mdx +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -59,4 +59,4 @@ Date functions by default use the UTC timezone, but you can change it. [Learn Mo **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index fb22aff6..445d2d01 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -45,4 +45,4 @@ Date functions default to UTC timezone. You can customize the timezone by follow **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx index 0d70fb4e..da9b6941 100644 --- a/content/docs/(functions)/Date/minute.mdx +++ b/content/docs/(functions)/Date/minute.mdx @@ -32,4 +32,4 @@ By default, date and time functions use the UTC timezone. You can change the tim **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/month.mdx b/content/docs/(functions)/Date/month.mdx index 88a53b90..0a18a867 100644 --- a/content/docs/(functions)/Date/month.mdx +++ b/content/docs/(functions)/Date/month.mdx @@ -38,4 +38,4 @@ Date functions default to using the UTC timezone. You can change the timezone us **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx index 6d6a14e5..d098e4a5 100644 --- a/content/docs/(functions)/Date/parseDate.mdx +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -36,4 +36,4 @@ The command `$parseDate[1000;time]` converts 1000 milliseconds to a time format, **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx index ac5ce038..20a47def 100644 --- a/content/docs/(functions)/Date/second.mdx +++ b/content/docs/(functions)/Date/second.mdx @@ -32,4 +32,4 @@ Date functions default to using UTC timezone. You can change this if needed. [Le **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/timeStamp.mdx b/content/docs/(functions)/Date/timeStamp.mdx index de6fc2c1..946889df 100644 --- a/content/docs/(functions)/Date/timeStamp.mdx +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -38,4 +38,4 @@ $timeStamp[Return in Seconds (Yes/No)] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx index aa65bb77..50f78d75 100644 --- a/content/docs/(functions)/Date/year.mdx +++ b/content/docs/(functions)/Date/year.mdx @@ -34,4 +34,4 @@ Date functions default to the UTC timezone. You can customize the timezone used **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionDelete.mdx b/content/docs/(functions)/Interaction/interactionDelete.mdx index ce030652..69dcb85d 100644 --- a/content/docs/(functions)/Interaction/interactionDelete.mdx +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -36,4 +36,4 @@ $interactionDelete[123456789012345678] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx index 28bf530f..576e9515 100644 --- a/content/docs/(functions)/Interaction/interactionEdit.mdx +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -43,4 +43,4 @@ You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionId.mdx b/content/docs/(functions)/Interaction/interactionId.mdx index fa500f31..33b63c2c 100644 --- a/content/docs/(functions)/Interaction/interactionId.mdx +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -28,4 +28,4 @@ This example demonstrates how to use `$interactionId` within the `$interactionRe **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 46116a5b..21cd9ad8 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -52,4 +52,4 @@ You can send embedded messages using the [Message Curl Format](/CodeReferences/r **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modal.mdx b/content/docs/(functions)/Interaction/modal.mdx index 68d60d3e..5f325dd2 100644 --- a/content/docs/(functions)/Interaction/modal.mdx +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -139,4 +139,4 @@ Read more about the menu structure in [selectMenu](/Text/Components/selectMenu) **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modalAnswer.mdx b/content/docs/(functions)/Interaction/modalAnswer.mdx index 7d5a4ef2..affe0144 100644 --- a/content/docs/(functions)/Interaction/modalAnswer.mdx +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -28,4 +28,4 @@ The following image illustrates how to use `$modalAnswer` inside the `modal` tri **Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Interaction/modalID.mdx b/content/docs/(functions)/Interaction/modalID.mdx index 48f49696..80d81f29 100644 --- a/content/docs/(functions)/Interaction/modalID.mdx +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -25,4 +25,4 @@ Imagine you have two modals: "Contact Form" and "Subscription Form". When the " **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index f92a62e7..e3e931a2 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -29,4 +29,4 @@ My ID is 123456789123456789 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index 8c5854f6..e856e3e8 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -55,4 +55,4 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid banning **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 1ee80ac5..594f08f6 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -43,4 +43,4 @@ Discord doesn't allow others to change owners nickname. If you will try to chang **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index 56306b2f..fe6166bc 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -30,4 +30,4 @@ false **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index c2aee715..dd071a2f 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -55,4 +55,4 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid kicking **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index a8b55b36..c0ecca41 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -32,4 +32,4 @@ Other user: Other User **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 0e98c51a..442de24d 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -30,4 +30,4 @@ ImUser **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index 2911d832..1bdccb3f 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -38,4 +38,4 @@ This function requires the Presence Intent to be enabled. You can change that in **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index 0fcc6872..15b69371 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -34,4 +34,4 @@ Make sure that the bot does have sufficient permission. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 476bbc8e..297e796c 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -54,4 +54,4 @@ Wednesday, January 1, 2025 08:30 PM **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index be23dff3..e309d233 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -38,4 +38,4 @@ To have all members cached, you will need Tier 5 Bot. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index 456a9012..63024f61 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -45,4 +45,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index 1e623c6b..68abbcc0 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -39,4 +39,4 @@ To have all members cached, you will need Tier 5 Bot. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index d1ab6eba..c1d594a8 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -41,4 +41,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index e3d5dcb9..fd8d43e3 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -36,4 +36,4 @@ This feature is deprecated because Discord switched to usernames. This function **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index 51f0866a..e955224e 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -39,4 +39,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 331f6d1f..1da4a0af 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -37,4 +37,4 @@ Make sure that the bot does have sufficient permission. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index 78befbaa..9f42dcef 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -41,4 +41,4 @@ To have all members cached, you will need Tier 5 Bot. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/addCmdReactions.mdx b/content/docs/(functions)/Message/addCmdReactions.mdx index 050f773c..16f5d321 100644 --- a/content/docs/(functions)/Message/addCmdReactions.mdx +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -34,4 +34,4 @@ $addCmdReactions[✅;❌] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/addMessageReactions.mdx b/content/docs/(functions)/Message/addMessageReactions.mdx index c700ec5c..83599a20 100644 --- a/content/docs/(functions)/Message/addMessageReactions.mdx +++ b/content/docs/(functions)/Message/addMessageReactions.mdx @@ -30,4 +30,4 @@ You can use the function format `{reactions}` (formatted as `curl`) to use insid **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/addReactions.mdx b/content/docs/(functions)/Message/addReactions.mdx index 7da86e02..ce6947b6 100644 --- a/content/docs/(functions)/Message/addReactions.mdx +++ b/content/docs/(functions)/Message/addReactions.mdx @@ -26,4 +26,4 @@ This example shows how to react to a message with specific emojis. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/clearReaction.mdx b/content/docs/(functions)/Message/clearReaction.mdx index b10580d4..e2d9fe93 100644 --- a/content/docs/(functions)/Message/clearReaction.mdx +++ b/content/docs/(functions)/Message/clearReaction.mdx @@ -30,4 +30,4 @@ This example shows how to remove a specific user's reaction from a message. **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/clearReactions.mdx b/content/docs/(functions)/Message/clearReactions.mdx index 2181c23c..cf63f88b 100644 --- a/content/docs/(functions)/Message/clearReactions.mdx +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -39,4 +39,4 @@ $clearReactions[8372387429384729;9483749283749283;👍] **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteCommand.mdx b/content/docs/(functions)/Message/deleteCommand.mdx index 9636fbbf..9c471c3b 100644 --- a/content/docs/(functions)/Message/deleteCommand.mdx +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -31,4 +31,4 @@ $deleteCommand[1m] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteMessage.mdx b/content/docs/(functions)/Message/deleteMessage.mdx index 6dc8a42f..666a41e5 100644 --- a/content/docs/(functions)/Message/deleteMessage.mdx +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -27,4 +27,4 @@ This example will delete the message with the ID specified in `$messageID` from **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteWebhook.mdx b/content/docs/(functions)/Message/deleteWebhook.mdx index eb37359a..90b6c46c 100644 --- a/content/docs/(functions)/Message/deleteWebhook.mdx +++ b/content/docs/(functions)/Message/deleteWebhook.mdx @@ -16,4 +16,4 @@ This function requires both the Webhook ID and Token to function correctly. Ens **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/getCommandOption.mdx b/content/docs/(functions)/Message/getCommandOption.mdx index d4db7902..3543cdcb 100644 --- a/content/docs/(functions)/Message/getCommandOption.mdx +++ b/content/docs/(functions)/Message/getCommandOption.mdx @@ -25,4 +25,4 @@ This function requires you to specify the data type of the option you're trying **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/getReactions.mdx b/content/docs/(functions)/Message/getReactions.mdx index 3befa225..39b7ce92 100644 --- a/content/docs/(functions)/Message/getReactions.mdx +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -48,4 +48,4 @@ Counting how many users reacted **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/message.mdx b/content/docs/(functions)/Message/message.mdx index 74c0eae2..73800d9a 100644 --- a/content/docs/(functions)/Message/message.mdx +++ b/content/docs/(functions)/Message/message.mdx @@ -76,5 +76,5 @@ If your code uses `$message[1]`, and the slash command defines the options in th **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx index 8031cceb..284ec5b6 100644 --- a/content/docs/(functions)/Message/messageType.mdx +++ b/content/docs/(functions)/Message/messageType.mdx @@ -33,4 +33,4 @@ The `$messageType` function returns a specific message type. You can find a list **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/modifyWebhook.mdx b/content/docs/(functions)/Message/modifyWebhook.mdx index e41a0761..6fe8544e 100644 --- a/content/docs/(functions)/Message/modifyWebhook.mdx +++ b/content/docs/(functions)/Message/modifyWebhook.mdx @@ -30,4 +30,4 @@ Here's an example of how to use this function: **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index a8d4f191..356dbe09 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -117,4 +117,4 @@ Old Messsage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx index d3791bf2..0940d77f 100644 --- a/content/docs/(functions)/Message/noEscapingMessage.mdx +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -44,4 +44,4 @@ For most use cases, it's recommended to use `$message` to ensure proper characte **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx index 16eeb03d..1cda991f 100644 --- a/content/docs/(functions)/Message/noMentionMessage.mdx +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -30,4 +30,4 @@ In this example, even though the user mentioned "Server Moderator", the bot only **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index e30ae74a..8ae49bfd 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -51,4 +51,4 @@ You can send embeds using the [Message Curl Format](/CodeReferences/ref.message_ **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 3f00ff48..6ac9678e 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -56,4 +56,4 @@ You can send more complex structures like embed titles, footers, buttons, and me **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index 88a99948..9583e6eb 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -46,4 +46,4 @@ For non-premium bots, this function will behave exactly as `$sendMessage` due to **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/webhookExists.mdx b/content/docs/(functions)/Message/webhookExists.mdx index 15020e9b..fa96186e 100644 --- a/content/docs/(functions)/Message/webhookExists.mdx +++ b/content/docs/(functions)/Message/webhookExists.mdx @@ -25,4 +25,4 @@ true **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index b1a9d0be..656dee7a 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -45,4 +45,4 @@ This command will return a random integer between 1 and 6 (inclusive). Possible **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index b49fce72..2c5f8c82 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -27,4 +27,4 @@ This will output a random channel ID from the server where the command is execut **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index a9eb8489..5688d89f 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -33,4 +33,4 @@ The mentions returned by this function are pulled from the server's cached membe **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx index 4cb37410..5f23e123 100644 --- a/content/docs/(functions)/Random/randomRoleID.mdx +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -30,4 +30,4 @@ In this example, the command `!!exec $randomRoleID` will output a random role ID **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx index 4cfb0762..0b9da42a 100644 --- a/content/docs/(functions)/Random/randomString.mdx +++ b/content/docs/(functions)/Random/randomString.mdx @@ -29,4 +29,4 @@ In this example, the command `!!exec $randomString[6]` will generate a random st **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index 9ef00cda..df17be5b 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -38,4 +38,4 @@ In this example, the command `!!exec $randomText[I'm sad;I'm very happy]` instru **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index 05f0014a..3af38838 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -30,4 +30,4 @@ The user ID is selected randomly from the server's cached members. This means t **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index b04e669f..413439cd 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -47,4 +47,4 @@ You can send an embed instead of a simple text message by using the [Message Cur **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx index 13f12338..0a9eca17 100644 --- a/content/docs/(functions)/Role/colorRole.mdx +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -21,4 +21,4 @@ $colorRole[Role name;green;red] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/createRole.mdx b/content/docs/(functions)/Role/createRole.mdx index 966265d8..b08b530b 100644 --- a/content/docs/(functions)/Role/createRole.mdx +++ b/content/docs/(functions)/Role/createRole.mdx @@ -38,4 +38,4 @@ For a comprehensive list of available permissions, please see the [Permission Li **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/deleteRoles.mdx b/content/docs/(functions)/Role/deleteRoles.mdx index 81a819d6..18eb9a2d 100644 --- a/content/docs/(functions)/Role/deleteRoles.mdx +++ b/content/docs/(functions)/Role/deleteRoles.mdx @@ -36,4 +36,4 @@ This will delete the role with the ID `879889890890890` and the role with the ID **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/findRole.mdx b/content/docs/(functions)/Role/findRole.mdx index 1d2d1bdf..f8824952 100644 --- a/content/docs/(functions)/Role/findRole.mdx +++ b/content/docs/(functions)/Role/findRole.mdx @@ -51,4 +51,4 @@ undefined **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/getRoleColor.mdx b/content/docs/(functions)/Role/getRoleColor.mdx index f3e138fe..a06fc47b 100644 --- a/content/docs/(functions)/Role/getRoleColor.mdx +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -29,4 +29,4 @@ This would return the hex color code of the role, such as `#FF0000` (red). **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx index e0dbef40..6f79492d 100644 --- a/content/docs/(functions)/Role/guildRoles.mdx +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -42,4 +42,4 @@ This example shows how to retrieve the IDs of all roles in the guild. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx index e7d7096d..5241f37b 100644 --- a/content/docs/(functions)/Role/hasRole.mdx +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -32,4 +32,4 @@ false **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/highestServerRole.mdx b/content/docs/(functions)/Role/highestServerRole.mdx index 120f6671..c8a356d2 100644 --- a/content/docs/(functions)/Role/highestServerRole.mdx +++ b/content/docs/(functions)/Role/highestServerRole.mdx @@ -15,4 +15,4 @@ This function is very simple to use and requires no arguments. It will simply re **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/lowestServerRole.mdx b/content/docs/(functions)/Role/lowestServerRole.mdx index ba1768f4..c49c6d8b 100644 --- a/content/docs/(functions)/Role/lowestServerRole.mdx +++ b/content/docs/(functions)/Role/lowestServerRole.mdx @@ -14,4 +14,4 @@ This function returns the ID of the role that's at the bottom of your server's r **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/modifyRole.mdx b/content/docs/(functions)/Role/modifyRole.mdx index b0e5e40b..5997c07f 100644 --- a/content/docs/(functions)/Role/modifyRole.mdx +++ b/content/docs/(functions)/Role/modifyRole.mdx @@ -68,4 +68,4 @@ This example will: **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index ba84f256..f8215829 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -57,4 +57,4 @@ This example retrieves the position of the role with the ID `798789079070970`. T **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index 8f925cbe..ced011fa 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -35,4 +35,4 @@ In this example: **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index bf97f5ef..09063a9d 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -43,4 +43,4 @@ This example checks if a role with the name "muted" exists on the server. First **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx index 40e9b00a..64130461 100644 --- a/content/docs/(functions)/Role/roleID.mdx +++ b/content/docs/(functions)/Role/roleID.mdx @@ -37,4 +37,4 @@ In this example, the command returns `772053356378062889`, which is the ID of th **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleMembersCount.mdx b/content/docs/(functions)/Role/roleMembersCount.mdx index d469b37a..a6ef0c80 100644 --- a/content/docs/(functions)/Role/roleMembersCount.mdx +++ b/content/docs/(functions)/Role/roleMembersCount.mdx @@ -27,4 +27,4 @@ This would return the number of members who currently have that role. **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx index b27d69aa..ccf8bb35 100644 --- a/content/docs/(functions)/Role/roleName.mdx +++ b/content/docs/(functions)/Role/roleName.mdx @@ -28,4 +28,4 @@ Custom Command **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx index fe1b6525..6beb4c1c 100644 --- a/content/docs/(functions)/Server/serverBoostCount.mdx +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -21,4 +21,4 @@ $serverBoostCount **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index 2919ff36..22485150 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -21,4 +21,4 @@ All Members **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx index a966a3d8..7b0bd46b 100644 --- a/content/docs/(functions)/Server/serverDescription.mdx +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -20,7 +20,7 @@ Custom Command Support Server **Function difficulty:** -**Tags:** # serverDescription +**Tags:** # serverDescription Returns the current server description. This command retrieves the description set for the Discord server. diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx index b5246487..c8d1cf5f 100644 --- a/content/docs/(functions)/Server/serverIcon.mdx +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -22,4 +22,4 @@ $serverIcon **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx index 79b38979..8b47cdeb 100644 --- a/content/docs/(functions)/Server/serverName.mdx +++ b/content/docs/(functions)/Server/serverName.mdx @@ -25,4 +25,4 @@ My server's name is: Your Server Name **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx index 19892577..dd0370cb 100644 --- a/content/docs/(functions)/Server/serverRegion.mdx +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -22,4 +22,4 @@ Europe **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverSplash.mdx b/content/docs/(functions)/Server/serverSplash.mdx index c86c34d8..8ea08bae 100644 --- a/content/docs/(functions)/Server/serverSplash.mdx +++ b/content/docs/(functions)/Server/serverSplash.mdx @@ -13,4 +13,4 @@ Learn more about it: https://support.discord.com/hc/en-us/articles/360028716472- **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx index 308ed272..dac06ece 100644 --- a/content/docs/(functions)/Server/setGuildIcon.mdx +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -18,4 +18,4 @@ $setGuildIcon[URL] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx index b4836799..3f83e8e0 100644 --- a/content/docs/(functions)/Server/setGuildName.mdx +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -18,4 +18,4 @@ $setGuildName[name] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/addButton.mdx b/content/docs/(functions)/Text/Components/addButton.mdx index 353738bf..6eb95f73 100644 --- a/content/docs/(functions)/Text/Components/addButton.mdx +++ b/content/docs/(functions)/Text/Components/addButton.mdx @@ -28,4 +28,4 @@ Adds a button to an existing message. Use `$button` to send a message with a but **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/awaitButton.mdx b/content/docs/(functions)/Text/Components/awaitButton.mdx index 3eb6c56c..a644d1a6 100644 --- a/content/docs/(functions)/Text/Components/awaitButton.mdx +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -61,5 +61,5 @@ You can send an embed using the [Message Curl Format](/CodeReferences/ref.messag **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/button.mdx b/content/docs/(functions)/Text/Components/button.mdx index d4ee2343..59b24510 100644 --- a/content/docs/(functions)/Text/Components/button.mdx +++ b/content/docs/(functions)/Text/Components/button.mdx @@ -106,5 +106,5 @@ Check these pages: **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/disableButton.mdx b/content/docs/(functions)/Text/Components/disableButton.mdx index 949dd679..27e1dfa2 100644 --- a/content/docs/(functions)/Text/Components/disableButton.mdx +++ b/content/docs/(functions)/Text/Components/disableButton.mdx @@ -25,4 +25,4 @@ $disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the la **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/editButton.mdx b/content/docs/(functions)/Text/Components/editButton.mdx index 4d099e69..e0b5b7fe 100644 --- a/content/docs/(functions)/Text/Components/editButton.mdx +++ b/content/docs/(functions)/Text/Components/editButton.mdx @@ -29,4 +29,4 @@ $editButton[Message ID;Query (optional, default: edit the last button);label/sty **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx index 859a5375..fe94aa7c 100644 --- a/content/docs/(functions)/Text/Components/removeButton.mdx +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -28,4 +28,4 @@ $removeButton[863xxxxxxxxxx21130] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/removeButtons.mdx b/content/docs/(functions)/Text/Components/removeButtons.mdx index 45706e6a..c5849320 100644 --- a/content/docs/(functions)/Text/Components/removeButtons.mdx +++ b/content/docs/(functions)/Text/Components/removeButtons.mdx @@ -14,4 +14,4 @@ $removeButtons[Message ID;Button ID1;Button ID2...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index febb5637..abd2281c 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -208,4 +208,4 @@ Using the menu as trigger check here to [learn more](/Trigger/menu). **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index 0da42c70..915ebaa1 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -131,4 +131,4 @@ You are Lisa with tag 9999 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Embed/example.mdx b/content/docs/(functions)/Text/Embed/example.mdx index 2a145c17..fcc7951c 100644 --- a/content/docs/(functions)/Text/Embed/example.mdx +++ b/content/docs/(functions)/Text/Embed/example.mdx @@ -124,5 +124,5 @@ Please note, that separators vary between the formats: -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx index edb57d1a..864bd443 100644 --- a/content/docs/(functions)/Text/Math/abbreviate.mdx +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -25,4 +25,4 @@ $abbreviate[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx index 675e95fb..97c1fab4 100644 --- a/content/docs/(functions)/Text/Math/modulo.mdx +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -20,5 +20,5 @@ $modulo[10;2;...] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx index 43c7117d..efef783c 100644 --- a/content/docs/(functions)/Text/Math/ordinal.mdx +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -21,4 +21,4 @@ $ordinal[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx index 71ed197f..a01dd387 100644 --- a/content/docs/(functions)/Text/Math/round.mdx +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -20,5 +20,5 @@ $round[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx index f4496597..795c38e6 100644 --- a/content/docs/(functions)/Text/Math/roundTenth.mdx +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -20,5 +20,5 @@ $roundTenth[number;tofixed] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx index 16463aa0..4a44a743 100644 --- a/content/docs/(functions)/Text/Math/truncate.mdx +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -20,4 +20,4 @@ $truncate[number] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/ObjectCreate.mdx index e48a7cf0..21daee85 100644 --- a/content/docs/(functions)/Text/Object/ObjectCreate.mdx +++ b/content/docs/(functions)/Text/Object/ObjectCreate.mdx @@ -62,5 +62,5 @@ $setUserVar[Data;$getObject] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/ObjectGet.mdx index 849d3081..67765984 100644 --- a/content/docs/(functions)/Text/Object/ObjectGet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectGet.mdx @@ -20,5 +20,5 @@ Bot name: Custom Commands, Owner: Rake, Docs Contributor: Wiki **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/ObjectSet.mdx index ba998d21..699f10ec 100644 --- a/content/docs/(functions)/Text/Object/ObjectSet.mdx +++ b/content/docs/(functions)/Text/Object/ObjectSet.mdx @@ -67,5 +67,5 @@ $objectSet[userdata;0;role;Moderator] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx index 15939351..9257d2d5 100644 --- a/content/docs/(functions)/Text/Object/getObject.mdx +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -29,5 +29,5 @@ With spaces: \{
    **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx index a6086870..f93811f0 100644 --- a/content/docs/(functions)/Text/Regex/regexMatch.mdx +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -51,6 +51,6 @@ These are all regex flags: `g, i, m, u, s, y.` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx index 946a4a1d..c6955d9f 100644 --- a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx +++ b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx @@ -20,4 +20,4 @@ Today is my birthday 🎉 **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index e8a49df7..53b1391a 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -20,4 +20,4 @@ no **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/charCount.mdx b/content/docs/(functions)/Text/charCount.mdx index 2e44ab66..36d7389b 100644 --- a/content/docs/(functions)/Text/charCount.mdx +++ b/content/docs/(functions)/Text/charCount.mdx @@ -20,4 +20,4 @@ this functions returns the number of characters in the provided text **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx index d9e08644..92e801df 100644 --- a/content/docs/(functions)/Text/isandhas/isBoosting.mdx +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx index 8a91e851..c6ba7c65 100644 --- a/content/docs/(functions)/Text/isandhas/isBot.mdx +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -22,5 +22,5 @@ false | true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx index 7f79653e..fd204915 100644 --- a/content/docs/(functions)/Text/isandhas/isDeafened.mdx +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -22,5 +22,5 @@ undefined **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx index 5dd9e318..eb1331d4 100644 --- a/content/docs/(functions)/Text/isandhas/isEmoji.mdx +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx index ba392249..5b149af0 100644 --- a/content/docs/(functions)/Text/isandhas/isHoisted.mdx +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx index e76ca42f..181db7f2 100644 --- a/content/docs/(functions)/Text/isandhas/isManaged.mdx +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx index 2db9e978..6704e8f3 100644 --- a/content/docs/(functions)/Text/isandhas/isMentionable.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -22,5 +22,5 @@ false **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx index 3fb6fd63..1dc0d943 100644 --- a/content/docs/(functions)/Text/isandhas/isMentioned.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx index ea563972..2a6c7bf7 100644 --- a/content/docs/(functions)/Text/isandhas/isMuted.mdx +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index dcc1036b..19e870c4 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -20,4 +20,4 @@ true | false **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx index 259252a9..fa4b1c1d 100644 --- a/content/docs/(functions)/Text/isandhas/isTicket.mdx +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -22,5 +22,5 @@ false | true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx index 05703b2b..b55597d6 100644 --- a/content/docs/(functions)/Text/isandhas/isValidHex.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -22,5 +22,5 @@ true , false, true **Function difficulty:** ###### Tags: - - + + diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx index d16fc6b9..c949c109 100644 --- a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -22,5 +22,5 @@ false **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx index eb21156e..5729e339 100644 --- a/content/docs/(functions)/Text/isandhas/isValidLink.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx index 80412c67..3399bfd1 100644 --- a/content/docs/(functions)/Text/isandhas/isValidObject.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -22,5 +22,5 @@ true **Function difficulty:** ###### Tags: - - \ No newline at end of file + + \ No newline at end of file diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx index 4359ce05..0e8aa712 100644 --- a/content/docs/(functions)/Text/only/onlyBotPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx index 8311da6a..6efefc0f 100644 --- a/content/docs/(functions)/Text/only/onlyForRoles.mdx +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx index f84ba9e6..81a0cfcc 100644 --- a/content/docs/(functions)/Text/only/onlyNSFW.mdx +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx index c1f2d573..c1d93bfe 100644 --- a/content/docs/(functions)/Text/only/onlyPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/repeatMessage.mdx b/content/docs/(functions)/Text/repeatMessage.mdx index 6c5252ad..e61a7ca6 100644 --- a/content/docs/(functions)/Text/repeatMessage.mdx +++ b/content/docs/(functions)/Text/repeatMessage.mdx @@ -20,4 +20,4 @@ aaa **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx index 952e04ef..ad0aa44f 100644 --- a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -27,5 +27,5 @@ what a nice day **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx index 3904cca3..0c41bcc8 100644 --- a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arrayConcat` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx index aea7d4d2..0ec3c24b 100644 --- a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -25,4 +25,4 @@ This function got deprecated, use `$arraySet` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx index 7519922e..6671fc8e 100644 --- a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arraySearch` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx index 0f6d4993..ed942f52 100644 --- a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx +++ b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx @@ -27,4 +27,4 @@ This function got deprecated, use `$arrayLength` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx index 908a5e16..65522169 100644 --- a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx +++ b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arrayJoin` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx index db5b1f61..ca86a7e7 100644 --- a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx @@ -18,4 +18,4 @@ This function got deprecated, use `$arrayRemove` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx index 320d8d27..ff274929 100644 --- a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -20,5 +20,5 @@ $spliceTextJoin[text;separator1;separator2;separator3;every] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index de478be9..b52548dc 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -30,4 +30,4 @@ This function got deprecated, use `$arrayGet` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index eefa0c15..3df75cf9 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -20,5 +20,5 @@ $textSplit[text;separator(optional, default = ,)] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/toLowercase.mdx b/content/docs/(functions)/Text/toLowercase.mdx index 974c610b..e6a76296 100644 --- a/content/docs/(functions)/Text/toLowercase.mdx +++ b/content/docs/(functions)/Text/toLowercase.mdx @@ -20,4 +20,4 @@ hello **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/toUppercase.mdx b/content/docs/(functions)/Text/toUppercase.mdx index 2add2aca..2c767518 100644 --- a/content/docs/(functions)/Text/toUppercase.mdx +++ b/content/docs/(functions)/Text/toUppercase.mdx @@ -20,4 +20,4 @@ HELLO **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/createThread.mdx b/content/docs/(functions)/Threads/createThread.mdx index a128d23a..896df37a 100644 --- a/content/docs/(functions)/Threads/createThread.mdx +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -43,5 +43,5 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/deleteThreads.mdx b/content/docs/(functions)/Threads/deleteThreads.mdx index 1c2679c0..39181353 100644 --- a/content/docs/(functions)/Threads/deleteThreads.mdx +++ b/content/docs/(functions)/Threads/deleteThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/editThread.mdx b/content/docs/(functions)/Threads/editThread.mdx index f066e373..3d9da0f4 100644 --- a/content/docs/(functions)/Threads/editThread.mdx +++ b/content/docs/(functions)/Threads/editThread.mdx @@ -27,4 +27,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx index 94b63f3c..753f35c3 100644 --- a/content/docs/(functions)/Threads/getThreads.mdx +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -25,4 +25,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/joinThreads.mdx b/content/docs/(functions)/Threads/joinThreads.mdx index 68040b83..4cd3ebab 100644 --- a/content/docs/(functions)/Threads/joinThreads.mdx +++ b/content/docs/(functions)/Threads/joinThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/leaveThreads.mdx b/content/docs/(functions)/Threads/leaveThreads.mdx index 7744ea8b..bc8b5127 100644 --- a/content/docs/(functions)/Threads/leaveThreads.mdx +++ b/content/docs/(functions)/Threads/leaveThreads.mdx @@ -14,4 +14,4 @@ Don't forget to change the thread id **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx index 2b3b8a76..7a786f67 100644 --- a/content/docs/(functions)/Threads/thread.mdx +++ b/content/docs/(functions)/Threads/thread.mdx @@ -42,4 +42,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 7ec054e4..5da8df3e 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -65,5 +65,5 @@ This can be used with `$seq`! **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx index 1c53c185..0d5a1348 100644 --- a/content/docs/(functions)/Useful/redirectErrors.mdx +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -36,5 +36,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx index fd21430a..8522256c 100644 --- a/content/docs/(functions)/Useful/seq.mdx +++ b/content/docs/(functions)/Useful/seq.mdx @@ -26,4 +26,4 @@ This can be used with `$forEach` quite easily **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/setTimeout.mdx b/content/docs/(functions)/Useful/setTimeout.mdx index 2b1fd67b..efc359fd 100644 --- a/content/docs/(functions)/Useful/setTimeout.mdx +++ b/content/docs/(functions)/Useful/setTimeout.mdx @@ -39,5 +39,5 @@ If you only want to wait less then 1m, you can use `$wait` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx index da826e92..acf79a6b 100644 --- a/content/docs/(functions)/Useful/spread.mdx +++ b/content/docs/(functions)/Useful/spread.mdx @@ -22,5 +22,5 @@ Your color is Yellow **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx index 893c3faf..a4e9d06a 100644 --- a/content/docs/(functions)/Useful/suppressErrors.mdx +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -37,5 +37,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/wait.mdx b/content/docs/(functions)/Useful/wait.mdx index bb616d35..a7e9229e 100644 --- a/content/docs/(functions)/Useful/wait.mdx +++ b/content/docs/(functions)/Useful/wait.mdx @@ -35,5 +35,5 @@ If you want to wait more then 1m, we suggest you use `$setTimeout` **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/Contribution_Info/function_template.mdx b/content/docs/Contribution_Info/function_template.mdx index adb6fd47..9d01abd5 100644 --- a/content/docs/Contribution_Info/function_template.mdx +++ b/content/docs/Contribution_Info/function_template.mdx @@ -21,5 +21,5 @@ There is 1 bot in the server ##### Function difficulty: -###### Tags: +###### Tags: ```` \ No newline at end of file diff --git a/content/docs/Trigger/modal.mdx b/content/docs/Trigger/modal.mdx index bd816c33..7c01002e 100644 --- a/content/docs/Trigger/modal.mdx +++ b/content/docs/Trigger/modal.mdx @@ -45,5 +45,5 @@ You need to send a modal with `$modal` within 1 second of button/menu/slash exec -**Tags:** +**Tags:** From b2fda3ffd69fd5e22d058d59d209ff62241681a4 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:26:07 +0200 Subject: [PATCH 35/62] adjust missing title-style for tags --- content/docs/(functions)/Bot/botCount.mdx | 2 +- content/docs/(functions)/Channel/channelCount.mdx | 2 +- content/docs/(functions)/Channel/channelExists.mdx | 2 +- content/docs/(functions)/Channel/channelID.mdx | 2 +- content/docs/(functions)/Channel/channelName.mdx | 2 +- content/docs/(functions)/Channel/channelType.mdx | 2 +- content/docs/(functions)/Channel/channelUsed.mdx | 2 +- content/docs/(functions)/Channel/eventChannelID.mdx | 2 +- content/docs/(functions)/Interaction/interactionReply.mdx | 2 +- content/docs/(functions)/Interaction/modal.mdx | 2 +- content/docs/(functions)/Interaction/modalAnswer.mdx | 2 +- content/docs/(functions)/Interaction/modalID.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/changeNickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Message/deleteCommand.mdx | 2 +- content/docs/(functions)/Message/deleteMessage.mdx | 2 +- content/docs/(functions)/Message/message.mdx | 2 +- content/docs/(functions)/Message/noMentionMessage.mdx | 2 +- content/docs/(functions)/Random/random.mdx | 2 +- content/docs/(functions)/Random/randomChannelID.mdx | 2 +- content/docs/(functions)/Random/randomMention.mdx | 2 +- content/docs/(functions)/Random/randomString.mdx | 2 +- content/docs/(functions)/Random/randomText.mdx | 2 +- content/docs/(functions)/Random/randomUserID.mdx | 2 +- content/docs/(functions)/Role/createRole.mdx | 2 +- content/docs/(functions)/Role/deleteRoles.mdx | 2 +- content/docs/(functions)/Role/guildRoles.mdx | 2 +- content/docs/(functions)/Role/modifyRole.mdx | 2 +- content/docs/(functions)/Role/roleCount.mdx | 2 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleID.mdx | 2 +- content/docs/(functions)/Role/roleName.mdx | 2 +- content/docs/(functions)/Server/serverContentFilter.mdx | 2 +- content/docs/(functions)/Server/serverVerificationLevel.mdx | 2 +- content/docs/(functions)/Server/setGuildIcon.mdx | 2 +- content/docs/(functions)/Server/setGuildName.mdx | 2 +- content/docs/(functions)/Text/channelNSFW.mdx | 2 +- content/docs/(functions)/Text/disableMentions.mdx | 2 +- content/docs/(functions)/Text/isandhas/isNumber.mdx | 2 +- content/docs/(functions)/Text/only/onlyBotPerms.mdx | 2 +- content/docs/(functions)/Text/only/onlyForCategories.mdx | 2 +- content/docs/(functions)/Text/only/onlyForIDs.mdx | 2 +- content/docs/(functions)/Text/only/onlyForRoles.mdx | 2 +- content/docs/(functions)/Text/only/onlyIf.mdx | 2 +- content/docs/(functions)/Text/only/onlyNSFW.mdx | 2 +- content/docs/(functions)/Text/only/onlyPerms.mdx | 2 +- content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx | 2 +- content/docs/(functions)/Text/textSplit/joinSplitText.mdx | 2 +- content/docs/(functions)/Text/textSplit/splitText.mdx | 2 +- content/docs/(functions)/Text/textSplit/textSplit.mdx | 2 +- content/docs/(functions)/Threads/getThreads.mdx | 2 +- content/docs/(functions)/Threads/thread.mdx | 2 +- content/docs/(functions)/Useful/callFunction.mdx | 2 +- content/docs/(functions)/Useful/forEach.mdx | 2 +- content/docs/(functions)/Useful/function.mdx | 2 +- content/docs/(functions)/Useful/redirectErrors.mdx | 2 +- content/docs/(functions)/Useful/seq.mdx | 2 +- content/docs/(functions)/Useful/suppressErrors.mdx | 2 +- 59 files changed, 59 insertions(+), 59 deletions(-) diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index ffe1f558..0384b4eb 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -35,4 +35,4 @@ The bot count is retrieved from the bot's cache, not directly from the Discord A **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index 566086c2..0bfd1149 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -31,4 +31,4 @@ There are 13 threads in the server! **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelExists.mdx b/content/docs/(functions)/Channel/channelExists.mdx index 20c88e52..09b529b5 100644 --- a/content/docs/(functions)/Channel/channelExists.mdx +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -45,4 +45,4 @@ You can use the `$channelID` function to retrieve the ID of a channel based on i **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index 09723f08..9584976a 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -48,4 +48,4 @@ This function will **not** work with the channel creation/deletion trigger. Use **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index 2d1cfac7..41418ee6 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -45,4 +45,4 @@ Use `$findChannel` to find a channel using its name. **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index 71a76d53..4317d6cf 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -32,4 +32,4 @@ The `$channelType` function returns a string representing the channel type. Ref **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index d5c68455..75dd7071 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -39,4 +39,4 @@ In the first example, the bot set the specified channel ID `839090554205241394` **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Channel/eventChannelID.mdx b/content/docs/(functions)/Channel/eventChannelID.mdx index e36b2be5..9492de91 100644 --- a/content/docs/(functions)/Channel/eventChannelID.mdx +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -22,4 +22,4 @@ $eventChannelID **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 21cd9ad8..24e987cc 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -52,4 +52,4 @@ You can send embedded messages using the [Message Curl Format](/CodeReferences/r **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modal.mdx b/content/docs/(functions)/Interaction/modal.mdx index 5f325dd2..014d344a 100644 --- a/content/docs/(functions)/Interaction/modal.mdx +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -139,4 +139,4 @@ Read more about the menu structure in [selectMenu](/Text/Components/selectMenu) **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Interaction/modalAnswer.mdx b/content/docs/(functions)/Interaction/modalAnswer.mdx index affe0144..28fd6ff7 100644 --- a/content/docs/(functions)/Interaction/modalAnswer.mdx +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -28,4 +28,4 @@ The following image illustrates how to use `$modalAnswer` inside the `modal` tri **Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Interaction/modalID.mdx b/content/docs/(functions)/Interaction/modalID.mdx index 80d81f29..64201d7b 100644 --- a/content/docs/(functions)/Interaction/modalID.mdx +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -25,4 +25,4 @@ Imagine you have two modals: "Contact Form" and "Subscription Form". When the " **Function Difficulty:** -**Tags:** \ No newline at end of file +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index e3e931a2..1fd88f3c 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -29,4 +29,4 @@ My ID is 123456789123456789 **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 594f08f6..d97f32e9 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -43,4 +43,4 @@ Discord doesn't allow others to change owners nickname. If you will try to chang **Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index 1bdccb3f..db3d5d73 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -38,4 +38,4 @@ This function requires the Presence Intent to be enabled. You can change that in **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteCommand.mdx b/content/docs/(functions)/Message/deleteCommand.mdx index 9c471c3b..17c0792d 100644 --- a/content/docs/(functions)/Message/deleteCommand.mdx +++ b/content/docs/(functions)/Message/deleteCommand.mdx @@ -31,4 +31,4 @@ $deleteCommand[1m] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/deleteMessage.mdx b/content/docs/(functions)/Message/deleteMessage.mdx index 666a41e5..274b26ee 100644 --- a/content/docs/(functions)/Message/deleteMessage.mdx +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -27,4 +27,4 @@ This example will delete the message with the ID specified in `$messageID` from **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/message.mdx b/content/docs/(functions)/Message/message.mdx index 73800d9a..cb7fe3f2 100644 --- a/content/docs/(functions)/Message/message.mdx +++ b/content/docs/(functions)/Message/message.mdx @@ -76,5 +76,5 @@ If your code uses `$message[1]`, and the slash command defines the options in th **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx index 1cda991f..c046185b 100644 --- a/content/docs/(functions)/Message/noMentionMessage.mdx +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -30,4 +30,4 @@ In this example, even though the user mentioned "Server Moderator", the bot only **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index 656dee7a..3f493c50 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -45,4 +45,4 @@ This command will return a random integer between 1 and 6 (inclusive). Possible **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index 2c5f8c82..d84f75d5 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -27,4 +27,4 @@ This will output a random channel ID from the server where the command is execut **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index 5688d89f..4a969c34 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -33,4 +33,4 @@ The mentions returned by this function are pulled from the server's cached membe **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx index 0b9da42a..3efed59a 100644 --- a/content/docs/(functions)/Random/randomString.mdx +++ b/content/docs/(functions)/Random/randomString.mdx @@ -29,4 +29,4 @@ In this example, the command `!!exec $randomString[6]` will generate a random st **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index df17be5b..86b77997 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -38,4 +38,4 @@ In this example, the command `!!exec $randomText[I'm sad;I'm very happy]` instru **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index 3af38838..55c44c68 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -30,4 +30,4 @@ The user ID is selected randomly from the server's cached members. This means t **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/createRole.mdx b/content/docs/(functions)/Role/createRole.mdx index b08b530b..a92b7e26 100644 --- a/content/docs/(functions)/Role/createRole.mdx +++ b/content/docs/(functions)/Role/createRole.mdx @@ -38,4 +38,4 @@ For a comprehensive list of available permissions, please see the [Permission Li **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/deleteRoles.mdx b/content/docs/(functions)/Role/deleteRoles.mdx index 18eb9a2d..469a2b70 100644 --- a/content/docs/(functions)/Role/deleteRoles.mdx +++ b/content/docs/(functions)/Role/deleteRoles.mdx @@ -36,4 +36,4 @@ This will delete the role with the ID `879889890890890` and the role with the ID **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx index 6f79492d..83005e49 100644 --- a/content/docs/(functions)/Role/guildRoles.mdx +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -42,4 +42,4 @@ This example shows how to retrieve the IDs of all roles in the guild. **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/modifyRole.mdx b/content/docs/(functions)/Role/modifyRole.mdx index 5997c07f..9d154e0f 100644 --- a/content/docs/(functions)/Role/modifyRole.mdx +++ b/content/docs/(functions)/Role/modifyRole.mdx @@ -68,4 +68,4 @@ This example will: **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index ced011fa..336e7b96 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -35,4 +35,4 @@ In this example: **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index 09063a9d..a028da6d 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -43,4 +43,4 @@ This example checks if a role with the name "muted" exists on the server. First **Function Difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx index 64130461..8ff78d6d 100644 --- a/content/docs/(functions)/Role/roleID.mdx +++ b/content/docs/(functions)/Role/roleID.mdx @@ -37,4 +37,4 @@ In this example, the command returns `772053356378062889`, which is the ID of th **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx index ccf8bb35..4c8e4cf6 100644 --- a/content/docs/(functions)/Role/roleName.mdx +++ b/content/docs/(functions)/Role/roleName.mdx @@ -28,4 +28,4 @@ Custom Command **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index 22485150..2213f867 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -21,4 +21,4 @@ All Members **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx index f19017d1..213d9c8e 100644 --- a/content/docs/(functions)/Server/serverVerificationLevel.mdx +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -20,4 +20,4 @@ Medium **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx index dac06ece..2845f930 100644 --- a/content/docs/(functions)/Server/setGuildIcon.mdx +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -18,4 +18,4 @@ $setGuildIcon[URL] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx index 3f83e8e0..7d6e3c85 100644 --- a/content/docs/(functions)/Server/setGuildName.mdx +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -18,4 +18,4 @@ $setGuildName[name] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index 53b1391a..f5530f44 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -20,4 +20,4 @@ no **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx index 8d4d7d77..a3597d93 100644 --- a/content/docs/(functions)/Text/disableMentions.mdx +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -20,5 +20,5 @@ $disableMentions **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index 19e870c4..a0c3865d 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -20,4 +20,4 @@ true | false **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx index 0e8aa712..30e64595 100644 --- a/content/docs/(functions)/Text/only/onlyBotPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForCategories.mdx b/content/docs/(functions)/Text/only/onlyForCategories.mdx index c4139b1d..545caa51 100644 --- a/content/docs/(functions)/Text/only/onlyForCategories.mdx +++ b/content/docs/(functions)/Text/only/onlyForCategories.mdx @@ -25,5 +25,5 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForIDs.mdx b/content/docs/(functions)/Text/only/onlyForIDs.mdx index f8333aa5..28dc2b7d 100644 --- a/content/docs/(functions)/Text/only/onlyForIDs.mdx +++ b/content/docs/(functions)/Text/only/onlyForIDs.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx index 6efefc0f..7cdb5f01 100644 --- a/content/docs/(functions)/Text/only/onlyForRoles.mdx +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyIf.mdx b/content/docs/(functions)/Text/only/onlyIf.mdx index 7eee12a4..1b59ee91 100644 --- a/content/docs/(functions)/Text/only/onlyIf.mdx +++ b/content/docs/(functions)/Text/only/onlyIf.mdx @@ -25,5 +25,5 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx index 81a0cfcc..82db9f34 100644 --- a/content/docs/(functions)/Text/only/onlyNSFW.mdx +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -25,4 +25,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx index c1d93bfe..cc48a85a 100644 --- a/content/docs/(functions)/Text/only/onlyPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -31,4 +31,4 @@ You can send embed using [Message Curl Format](/CodeReferences/ref.message_curl_ **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx index ed942f52..0b0dda5c 100644 --- a/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx +++ b/content/docs/(functions)/Text/textSplit/getTextSplitLength.mdx @@ -27,4 +27,4 @@ This function got deprecated, use `$arrayLength` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx index 65522169..856cf7cb 100644 --- a/content/docs/(functions)/Text/textSplit/joinSplitText.mdx +++ b/content/docs/(functions)/Text/textSplit/joinSplitText.mdx @@ -26,4 +26,4 @@ This function got deprecated, use `$arrayJoin` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index b52548dc..7f6f3555 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -30,4 +30,4 @@ This function got deprecated, use `$arrayGet` instead **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index 3df75cf9..8071cae6 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -20,5 +20,5 @@ $textSplit[text;separator(optional, default = ,)] **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx index 753f35c3..fe5395e2 100644 --- a/content/docs/(functions)/Threads/getThreads.mdx +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -25,4 +25,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx index 7a786f67..0fdc6f08 100644 --- a/content/docs/(functions)/Threads/thread.mdx +++ b/content/docs/(functions)/Threads/thread.mdx @@ -42,4 +42,4 @@ This Command supports Curl Arguments, a link to the page explaining it, will get **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index c7b272a1..7fec58f1 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -57,4 +57,4 @@ A function name can't start with number, and must be within [A-Z or a-z or _ or **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/forEach.mdx b/content/docs/(functions)/Useful/forEach.mdx index 5da8df3e..72da5284 100644 --- a/content/docs/(functions)/Useful/forEach.mdx +++ b/content/docs/(functions)/Useful/forEach.mdx @@ -65,5 +65,5 @@ This can be used with `$seq`! **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index ac83b4d5..fc88d787 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -67,5 +67,5 @@ but if you are using $callFunction to call the function, any name is valid **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx index 0d5a1348..71f53bf9 100644 --- a/content/docs/(functions)/Useful/redirectErrors.mdx +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -36,5 +36,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx index 8522256c..5daf491f 100644 --- a/content/docs/(functions)/Useful/seq.mdx +++ b/content/docs/(functions)/Useful/seq.mdx @@ -26,4 +26,4 @@ This can be used with `$forEach` quite easily **Function difficulty:** -**Tags:** +**Tags:** diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx index a4e9d06a..d58a7b70 100644 --- a/content/docs/(functions)/Useful/suppressErrors.mdx +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -37,5 +37,5 @@ Check the `$modifyChannelPerms` for the correct usage **Function difficulty:** -**Tags:** +**Tags:** From 8ad19a6fd9ef780ff6822e13a9d71be936c507f8 Mon Sep 17 00:00:00 2001 From: nervn Date: Sun, 9 Aug 2026 20:28:00 +0200 Subject: [PATCH 36/62] adjust the automatic tag extractor to use the new tag component --- app/api/search/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/search/route.ts b/app/api/search/route.ts index a0365102..c82103f8 100644 --- a/app/api/search/route.ts +++ b/app/api/search/route.ts @@ -18,7 +18,7 @@ function tagsFor(filePath: string, title: string) { const raw = fs.readFileSync(path.join(process.cwd(), 'content/docs', filePath), 'utf8'); const tags: string[] = []; - for (const [, text] of raw.matchAll(/]*\btext="([^"]*)"/g)) { + for (const [, text] of raw.matchAll(/<(?:Badge|Tag)[^>]*\btext="([^"]*)"/g)) { if (text.length > 1 && !NOT_A_TAG.test(text)) tags.push(text); } // the old plugin also indexed the bare function name From c84addfc345caeecb3b5fc0dd0145effb27d8f86 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 10 Aug 2026 00:00:01 +0200 Subject: [PATCH 37/62] slash command support on the main bot for internal commands --- content/docs/Changelogs/1.v1.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 4f18373d..e9a40827 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -21,6 +21,7 @@ title: "v1.x (Current)" * New function `$eventTargetID` to retrieve the User ID or Message ID for the new User Command and Message Command triggers. * For testing purposes, the `emit` command now supports the Upvote event. Use `[prefix]emit upvote`. * `$viewServerVars`, `$viewUserVars`, `$viewChannelVars` query significant speed optimization (100x speed for some servers). +* Slash command support is now available for some native commands, such as clone. These slash commands are available on the main bot only. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 3fc668cf635a05d3824a4629faf3449335c5be26 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 10 Aug 2026 14:18:09 +0200 Subject: [PATCH 38/62] new sorting type for userleaderboard --- .../(functions)/Variables/userLeaderboard.mdx | 54 ++++++++++++++----- content/docs/Changelogs/1.v1.mdx | 1 + 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx index 01ee8e59..8262563f 100644 --- a/content/docs/(functions)/Variables/userLeaderboard.mdx +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -6,13 +6,22 @@ Generates a leaderboard of a user variable and return it. #### Usage ```cc -$userLeaderboard[variable;asc/desc (optional);{top}.- {username} - {value};list (optional, max=40);page (optional)] +$userLeaderboard[variable;Sorting Type;{top}.- {username} - {value};limit per page (optional, default=10, max=40);page (optional, default=1)] ``` -Available Variables: +#### Sorting Type + +* `highest-first`: Shows the list from the highest value to the lowest. +* `lowest-first`: Shows the list from the lowest value to the highest. +* `desc` Deprecated: Legacy alias for `lowest-first`. +* `asc` Deprecated: Legacy alias for `highest-first`. + + +#### Available Variables | Variable | Description | | --- | ----------- | | \{top} | returns the rank number | +| \{rank} | same as \{top} | | \{value} | returns the numerical value of the variable | | \{raw_value} | returns the raw value in case it's not number | | \{id} | returns the user id | @@ -22,24 +31,45 @@ Available Variables: | \{tag} | returns the tag like Mido#1234 | | \{discriminator} | returns the discriminator like 1234 | -Order: -* `desc`: Will display all the members' ranks from largest to smallest. -* `asc`: Will display all the members' ranks from smallest to largest. +#### Pagination + +Since the list can contain many entries, you can control which portion of the list is displayed using the `limit per page` and `page` values. + +* `limit per page`: The maximum number of entries to show on each page. +* `page`: The page number to display. + #### Example: -To use this function your uservar must have numeric values . -
    - -!!exec $setUserVar[money;100]
    -!!exec $userLeaderboard[money;asc;\{top}.- \{username} - \{value}] -
    + +!!exec Top 5 +$userLeaderboard[money;highest-first;\{top}. \{username} - \{value};5] + + +1. Mido - 350 +2. Rake - 201 +3. Zero - 121 +4. Red - 53 +5. Azz - 22 + + +!!exec Top 3 +$userLeaderboard[money;highest-first;\{top}. \{username} - \{value};3] + -1.- Mido - 100 +Top 3 +1. Mido - 350 +2. Rake - 201 +3. Zero - 121 +
    +#### What if the value is not a valid number? +If a value is not a valid number, it will always be placed at the end of the list, regardless of the selected sorting type. + +Check out: `$uservarRank` Check out: `$setUserVar` diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index e9a40827..497f1ad8 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -22,6 +22,7 @@ title: "v1.x (Current)" * For testing purposes, the `emit` command now supports the Upvote event. Use `[prefix]emit upvote`. * `$viewServerVars`, `$viewUserVars`, `$viewChannelVars` query significant speed optimization (100x speed for some servers). * Slash command support is now available for some native commands, such as clone. These slash commands are available on the main bot only. +* `$userLeaderboard` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 8744f96ba59354842263eadaf6d7a5a07ddb3f43 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 10 Aug 2026 15:04:16 +0200 Subject: [PATCH 39/62] new sorting type for $userVarRank --- .../(functions)/Variables/getChannelVar.mdx | 2 + .../(functions)/Variables/getMessageVar.mdx | 2 + .../(functions)/Variables/getServerVar.mdx | 2 + .../docs/(functions)/Variables/getUserVar.mdx | 20 ++++---- .../(functions)/Variables/userLeaderboard.mdx | 3 +- .../(functions)/Variables/userVarRank.mdx | 49 ++++++++++++++++--- content/docs/Changelogs/1.v1.mdx | 2 +- 7 files changed, 60 insertions(+), 20 deletions(-) diff --git a/content/docs/(functions)/Variables/getChannelVar.mdx b/content/docs/(functions)/Variables/getChannelVar.mdx index 14609865..6c20f86a 100644 --- a/content/docs/(functions)/Variables/getChannelVar.mdx +++ b/content/docs/(functions)/Variables/getChannelVar.mdx @@ -18,6 +18,8 @@ Mido +**Note:** The return value will be `undefined` if the variable was not defined for that channel. + Check out: `$setChannelVar` diff --git a/content/docs/(functions)/Variables/getMessageVar.mdx b/content/docs/(functions)/Variables/getMessageVar.mdx index 08ed6dd0..4ca0434f 100644 --- a/content/docs/(functions)/Variables/getMessageVar.mdx +++ b/content/docs/(functions)/Variables/getMessageVar.mdx @@ -18,6 +18,8 @@ Mido +**Note:** The return value will be `undefined` if the variable was not defined for that message. + Check out: `$setMessageVar` diff --git a/content/docs/(functions)/Variables/getServerVar.mdx b/content/docs/(functions)/Variables/getServerVar.mdx index b836de77..812fef85 100644 --- a/content/docs/(functions)/Variables/getServerVar.mdx +++ b/content/docs/(functions)/Variables/getServerVar.mdx @@ -18,6 +18,8 @@ Mika +**Note:** The return value will be `undefined` if the variable was not defined for that server. + Check out: `$setServerVar` diff --git a/content/docs/(functions)/Variables/getUserVar.mdx b/content/docs/(functions)/Variables/getUserVar.mdx index 34576a28..334f6af1 100644 --- a/content/docs/(functions)/Variables/getUserVar.mdx +++ b/content/docs/(functions)/Variables/getUserVar.mdx @@ -6,29 +6,27 @@ Gets a user variable value #### Usage ```cc -$getUserVar[variable;userid(optional)] +$getUserVar[variable;User ID (Optional)] ``` -
    + +#### Example -!!exec $getUserVar[warnings;683630053686378498] +!!exec Your warnings: $getUserVar[warns] -4 +Your warnings: 4 - - -or executors(author/you) warning count: - - -!!exec $getUserVar[warnings] +!!exec Other user's warnings: $getUserVar[warns;12346786512312] -1 +Other user's warnings: 1 +**Note:** The return value will be `undefined` if the variable was not defined for that user. + Check out: `$setUserVar` diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx index 8262563f..68da1fcf 100644 --- a/content/docs/(functions)/Variables/userLeaderboard.mdx +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -11,7 +11,7 @@ $userLeaderboard[variable;Sorting Type;{top}.- {username} - {value};limit per pa #### Sorting Type -* `highest-first`: Shows the list from the highest value to the lowest. +* `highest-first` (Default): Shows the list from the highest value to the lowest. * `lowest-first`: Shows the list from the lowest value to the highest. * `desc` Deprecated: Legacy alias for `lowest-first`. * `asc` Deprecated: Legacy alias for `highest-first`. @@ -46,6 +46,7 @@ Since the list can contain many entries, you can control which portion of the li $userLeaderboard[money;highest-first;\{top}. \{username} - \{value};5] +Top 5 1. Mido - 350 2. Rake - 201 3. Zero - 121 diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx index cdbd0e96..10b72e33 100644 --- a/content/docs/(functions)/Variables/userVarRank.mdx +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -2,20 +2,55 @@ title: "$userVarRank" --- -Return user var rank returned by $userleaderboard for a single user +Return user's rank returned by `$userleaderboard` for a single user -## Usage +#### Usage ```cc -$uservarRank[Variable name;Order Type (optional) (asc/desc, default is desc);User ID (optional)] +$uservarRank[Variable name;Sorting Type;User ID (optional)] ``` -### Example: +#### Sorting Type + +* `highest-first` (Default): Uses the sorting type that displays the list from the highest value to the lowest. +* `lowest-first`: Uses the sorting type that displays the list from the lowest value to the highest. +* `desc` Deprecated: Legacy alias for `lowest-first`. +* `asc` Deprecated: Legacy alias for `highest-first`. + +#### Example: -!!exec Your rank is $userVarRank[xp]

    +!!exec Top 5 +$userLeaderboard[money;highest-first;\{top}. \{username} - \{value};5]
    -Your rank is 3 +Top 5 +1. Member - 350 +2. Rake - 201 +3. Zero - 121 +4. Red - 53 +5. Azz - 22 -
    \ No newline at end of file + +!!exec Your rank is $userVarRank[money] + + +Your rank is 1 + + + +#### What if the user does not have the variable? +If the specified user does not have the variable defined, `$userVarRank` will return `undefined`. + + +Check out: `$userLeaderboard` + +Check out: `$setUserVar` + +Check out: `$getUserVar` + +Check out: `$deleteUserVar` + +Check out: `$resetUserVar` + + diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 497f1ad8..f27a7dcf 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -22,7 +22,7 @@ title: "v1.x (Current)" * For testing purposes, the `emit` command now supports the Upvote event. Use `[prefix]emit upvote`. * `$viewServerVars`, `$viewUserVars`, `$viewChannelVars` query significant speed optimization (100x speed for some servers). * Slash command support is now available for some native commands, such as clone. These slash commands are available on the main bot only. -* `$userLeaderboard` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. +* `$userLeaderboard` and `$userVarRank` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 0d016255f72b82fbb9ba24066d6ad58e087114c4 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 10 Aug 2026 15:50:40 +0200 Subject: [PATCH 40/62] the wrapper accept same props and use the new format for discord message for the missed files --- components/discord.tsx | 12 ++- content/docs/(functions)/Bot/botCount.mdx | 8 +- content/docs/(functions)/Channel/clear.mdx | 4 +- .../(functions)/Cooldown/channelCooldown.mdx | 8 +- .../(functions)/Cooldown/clearCoolDown.mdx | 8 +- .../docs/(functions)/Cooldown/cooldown.mdx | 8 +- .../(functions)/Cooldown/getCooldownTime.mdx | 4 +- .../(functions)/Cooldown/serverCooldown.mdx | 8 +- .../docs/(functions)/Member/authorAvatar.mdx | 8 +- content/docs/(functions)/Member/authorID.mdx | 4 +- content/docs/(functions)/Member/ban.mdx | 8 +- .../docs/(functions)/Member/blackListIDs.mdx | 4 +- .../docs/(functions)/Member/boostingSince.mdx | 12 +-- .../(functions)/Member/changeNickname.mdx | 8 +- .../docs/(functions)/Member/discriminator.mdx | 4 +- .../docs/(functions)/Member/displayName.mdx | 4 +- .../docs/(functions)/Member/findMember.mdx | 8 +- .../docs/(functions)/Member/getUserBadges.mdx | 4 +- .../docs/(functions)/Member/globalName.mdx | 4 +- .../docs/(functions)/Member/hasAnyPerm.mdx | 8 +- .../docs/(functions)/Member/hasAnyRole.mdx | 8 +- content/docs/(functions)/Member/hasPerms.mdx | 4 +- content/docs/(functions)/Member/hasRoles.mdx | 4 +- content/docs/(functions)/Member/isBanned.mdx | 4 +- .../(functions)/Member/isUserDMEnabled.mdx | 4 +- content/docs/(functions)/Member/kick.mdx | 8 +- .../(functions)/Member/membersWithStatus.mdx | 8 +- content/docs/(functions)/Member/mention.mdx | 4 +- content/docs/(functions)/Member/moveUser.mdx | 8 +- content/docs/(functions)/Member/muteUser.mdx | 8 +- content/docs/(functions)/Member/nickname.mdx | 4 +- content/docs/(functions)/Member/status.mdx | 4 +- content/docs/(functions)/Member/unban.mdx | 4 +- content/docs/(functions)/Member/user.mdx | 4 +- .../docs/(functions)/Member/userAvatar.mdx | 8 +- .../docs/(functions)/Member/userBanner.mdx | 12 +-- .../(functions)/Member/userConnectedVC.mdx | 8 +- .../docs/(functions)/Member/userExists.mdx | 4 +- content/docs/(functions)/Member/userID.mdx | 4 +- content/docs/(functions)/Member/userPerms.mdx | 4 +- .../docs/(functions)/Member/userReacted.mdx | 4 +- .../docs/(functions)/Member/userRoleColor.mdx | 4 +- content/docs/(functions)/Member/userRoles.mdx | 4 +- content/docs/(functions)/Member/userTag.mdx | 4 +- content/docs/(functions)/Member/username.mdx | 4 +- .../docs/(functions)/Member/usersBanned.mdx | 4 +- .../(functions)/Member/usersInChannel.mdx | 4 +- .../docs/(functions)/Member/usersTyping.mdx | 4 +- .../docs/(functions)/Member/usersWithRole.mdx | 4 +- content/docs/(functions)/Message/DM.mdx | 4 +- content/docs/(functions)/Message/sendDM.mdx | 8 +- .../(functions)/Request/httpRequestHeader.mdx | 4 +- .../(functions)/Request/httpRequestStatus.mdx | 4 +- .../docs/(functions)/Text/Condition/if.mdx | 24 +++--- .../Text/Object/ObjectKeyExists.mdx | 8 +- content/docs/(functions)/Text/findChars.mdx | 4 +- .../(functions)/Text/findSpecialChars.mdx | 4 +- .../docs/(functions)/Useful/setTimeout.mdx | 23 ++--- content/docs/Trigger/joinorleave.mdx | 4 +- content/docs/Trigger/word.mdx | 52 ++++++------ content/docs/Trigger/word_new.mdx | 84 +++++++++---------- content/docs/Tutorials/3.report.mdx | 4 +- content/docs/Tutorials/4.collect.mdx | 8 +- 63 files changed, 262 insertions(+), 261 deletions(-) diff --git a/components/discord.tsx b/components/discord.tsx index 4e578c8b..2d154976 100644 --- a/components/discord.tsx +++ b/components/discord.tsx @@ -139,16 +139,21 @@ export { * */ -type SimpleMessageProps = { +type SimpleMessageProps = Omit< + ComponentProps, + 'children' +> & { children?: ReactNode; }; + export function DiscordMessageUser({ children, + ...props }: SimpleMessageProps) { const lightTheme = useTheme().resolvedTheme === 'light'; return ( - + {children} ); @@ -156,6 +161,7 @@ export function DiscordMessageUser({ export function DiscordMessageBot({ children, + ...props }: SimpleMessageProps) { const lightTheme = useTheme().resolvedTheme === 'light'; @@ -166,7 +172,7 @@ export function DiscordMessageBot({ bot roleColor="#0099ff" avatar="/bot-profile.png" - > + {...props} > {children} diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index 0384b4eb..972d64f0 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -18,12 +18,12 @@ Here's how you can use the `$botCount` function: This command, when executed, will display a message showing the bot count in the server. See the example next: - + !!exec There are $botCount bots in the server! - - + + There are 2 bots in the server! - +
    diff --git a/content/docs/(functions)/Channel/clear.mdx b/content/docs/(functions)/Channel/clear.mdx index e53dc7a6..081984a8 100644 --- a/content/docs/(functions)/Channel/clear.mdx +++ b/content/docs/(functions)/Channel/clear.mdx @@ -37,9 +37,9 @@ I'm a spammer, everyone shut up! I'm a spammer, everyone shut up! - + !!exec $clear[10;everyone] $sendMessage[Channel has been purged] - + **After:** diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index fa743893..2525243a 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -19,17 +19,17 @@ $channelCooldown[time;error message] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - + !!exec $channelCooldown[5m;You're on cooldown!]
    You're not on cooldown! -
    + You're not on cooldown! - + !!exec $channelCooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown! -
    + You're on cooldown! Still 4m remaining! diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx index b8c0a9da..25680de4 100644 --- a/content/docs/(functions)/Cooldown/clearCoolDown.mdx +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -21,19 +21,19 @@ $clearCooldown[type;id;token] How to remove cooldown from a user - + !!exec $cooldown[5m]
    $clearCooldown
    No cooldown -
    + No cooldown - + !!exec $cooldown[5m]
    $clearCooldown
    No cooldown 2nd try -
    + No cooldown 2nd try diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index 4ebb4662..4292eada 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -20,17 +20,17 @@ $cooldown[time;error message;userID] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - + !!exec $cooldown[5m;You're on cooldown!]
    You're not on cooldown! -
    + You're not on cooldown! - + !!exec $cooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown! -
    + You're on cooldown! Still 4m remaining! diff --git a/content/docs/(functions)/Cooldown/getCooldownTime.mdx b/content/docs/(functions)/Cooldown/getCooldownTime.mdx index 5adbf178..eb2e2866 100644 --- a/content/docs/(functions)/Cooldown/getCooldownTime.mdx +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -20,10 +20,10 @@ $getCooldownTime[time;type;id;token] How to use $getCooldownTime - + !!exec $channelCooldown[5m]
    $getCooldownTime[5m;channel;$channelID] -
    + 299937 diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index d353a052..51c8b9fb 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -19,17 +19,17 @@ $serverCooldown[time;error message] As you can see, first time it will set the cooldown and execute code below, second time, it won't allow execution - + !!exec $serverCooldown[5m;You're on cooldown!]
    You're not on cooldown! -
    + You're not on cooldown! - + !!exec $serverCooldown[5m;You're on cooldown! Still %mins%m remaining!]
    You're not on cooldown! -
    + You're on cooldown! Still 4m remaining! diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx index f65d363f..f2299dda 100644 --- a/content/docs/(functions)/Member/authorAvatar.mdx +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -18,16 +18,16 @@ $authorAvatar[serverAvatar] How is the avatar URL displayed when sent with text and without text - + !!exec With text: $authorAvatar - + With text: https://cdn.discordapp.com/embed/avatars/0.png
    User Avatar
    - + !!exec $authorAvatar - + User Avatar diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index 1fd88f3c..82b57207 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -17,9 +17,9 @@ $authorID How to use $authorID - + !!exec My ID is $authorID - + My ID is 123456789123456789 diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index e856e3e8..878be388 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -20,9 +20,9 @@ $ban[userID;reason;messages to delete] Successful ban with no response - + !!exec $ban[123456789123456789;Spamming;7] - + #### Unsucessful ban @@ -30,9 +30,9 @@ Successful ban with no response Unsuccessful ban with error message - + !!exec $ban[$ownerID;Just a test;0] - + ❌ bot is missing enough permissions at line 1 diff --git a/content/docs/(functions)/Member/blackListIDs.mdx b/content/docs/(functions)/Member/blackListIDs.mdx index 3a14bfc9..0429b808 100644 --- a/content/docs/(functions)/Member/blackListIDs.mdx +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -21,9 +21,9 @@ $blackListIDs[userID;userID;...;error message] How to blacklist a user from the command - + !!exec $blackListIDs[$authorID;You are blacklisted from using this command!]
    Message -
    + You are blacklisted from using this command! diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx index 9aceb828..1d7f4149 100644 --- a/content/docs/(functions)/Member/boostingSince.mdx +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -19,21 +19,21 @@ $boostingSince[userID;date/ms] Multiple ways of using function $boostingSince - + !!exec $boostingSince - + Wednesday, January 1, 2025 08:30 PM - + !!exec $boostingSince[123456789123456789;ms] - + 1735763400000 - + !!exec $formatDate[$boostingSince[123456789123456789;ms];MM-DD-YYYY] - + 01-01-2025 diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index d97f32e9..b1ab48b1 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -19,12 +19,12 @@ $changeNickname[userID;nickname] Changing the nickname of the command author - + !!exec $changeNickname[$authorID;Steve] - - + + Hello - + diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx index 24bcc1bb..7d5a848b 100644 --- a/content/docs/(functions)/Member/discriminator.mdx +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -18,9 +18,9 @@ $discriminator[userID] Returning a discriminator from user - + !!exec $discriminator - + 1234 diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx index e73005ae..599941dc 100644 --- a/content/docs/(functions)/Member/displayName.mdx +++ b/content/docs/(functions)/Member/displayName.mdx @@ -18,9 +18,9 @@ $displayName[userID] How to return display name from author - + !!exec $displayName - + User diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx index 639c8710..df25ac0a 100644 --- a/content/docs/(functions)/Member/findMember.mdx +++ b/content/docs/(functions)/Member/findMember.mdx @@ -19,9 +19,9 @@ $findMember[query;returnCurrentUser] Searching for existing user - + !!exec $findMember[user2;no] - + 123456789123456789 @@ -32,9 +32,9 @@ Searching for existing user Searching for invalid user - + !!exec $findMember[user123;no] - + undefined diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx index e00642a2..5f74509a 100644 --- a/content/docs/(functions)/Member/getUserBadges.mdx +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -18,9 +18,9 @@ $getUserBadges[userID] How to return badges from command author - + !!exec $getUserBadges - + Active Developer diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx index 773e2cb8..dfec3c36 100644 --- a/content/docs/(functions)/Member/globalName.mdx +++ b/content/docs/(functions)/Member/globalName.mdx @@ -18,9 +18,9 @@ $globalName[userID] How to return the global name from author - + !!exec $globalName - + User diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx index fe6871b8..6151629b 100644 --- a/content/docs/(functions)/Member/hasAnyPerm.mdx +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -19,15 +19,15 @@ $hasAnyPerm[userID;permission1;permission2;...] How to use $hasAnyPerm without user argument. Keep in mind that if the user does have only one of listed permissions, true will be returned. - + !!exec I have managechannels OR manageroles permission: $hasAnyPerm[managechannels;manageroles] - + I have managechannels OR manageroles permission: true - + !!exec I have managechannels permission: $hasAnyPerm[managechannels], I have manageroles permission: $hasAnyPerm[manageroles] - + I have managechannels permission: true, I have manageroles permission: false diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx index 499d2ec0..3494a8a5 100644 --- a/content/docs/(functions)/Member/hasAnyRole.mdx +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -19,15 +19,15 @@ $hasAnyRole[userID;roleID1;roleID2;...] How to use $hasAnyRole without user argument. Keep in mind that if the user does have only one of listed roles, true will be returned. - + !!exec I have Admin OR Manager role: $hasAnyRole[admin;manager] - + I have Admin OR Manager role: true - + !!exec I have Admin role: $hasAnyRole[admin], I have Manager role: $hasAnyRole[manager] - + I have Admin role: true, I have Manager role: false diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx index b3a3ba43..3728a233 100644 --- a/content/docs/(functions)/Member/hasPerms.mdx +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -19,9 +19,9 @@ $hasPerms[userID;perm1;perm2;...] How to use $hasPerms. Keep in mind that only if the user does have all of listed permissions, true will be returned. - + !!exec $hasPerms[$authorID;sendmessages] - + true diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx index 57284387..5e0ad06e 100644 --- a/content/docs/(functions)/Member/hasRoles.mdx +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -19,9 +19,9 @@ $hasRoles[userID;role1;role2;...] How to use $hasRoles. Keep in mind that only if the user does have all of listed roles, true will be returned. - + !!exec $hasRoles[$authorID;123456789123456789] - + true diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index fe6166bc..7c956fc8 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -18,9 +18,9 @@ $isBanned[userID] How to use $isBanned - + !!exec $isBanned[123456789123456789] - + false diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx index acfa5dea..07deb1ae 100644 --- a/content/docs/(functions)/Member/isUserDMEnabled.mdx +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -18,9 +18,9 @@ $isUserDMEnabled[userID] How to use $isUserDMEnabled - + !!exec $isUserDMEnabled[123456789123456789] - + true diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index dd071a2f..5624c825 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -19,9 +19,9 @@ $kick[userID;reason] Successfull kick with no response - + !!exec $kick[123456789123456789;Spamming] - + #### Unsucessful kick @@ -29,9 +29,9 @@ Successfull kick with no response Unsuccessful kick with error message - + !!exec $kick[$ownerID;Spamming] - + ❌ bot is missing enough permissions at line 1 diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx index 141c7bc2..263987bc 100644 --- a/content/docs/(functions)/Member/membersWithStatus.mdx +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -18,9 +18,9 @@ $membersWithStatus[Status1;Status2;...] How to use $membersWithStatus with one status specified - + !!exec $membersWithStatus[online] - + 123456789123456789,987654321987654321 @@ -31,9 +31,9 @@ How to use $membersWithStatus with one status specified How to use $membersWithStatus with multiple statuses specified - + !!exec $membersWithStatus[online;idle] - + 123456789123456789,987654321987654321,765432198765432198 diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index c0ecca41..c43d42de 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -18,10 +18,10 @@ $mention[userID] How to use $mention for author or other user - + !!exec Me: $mention
    Other user: $mention[123456789123456789] -
    + Me: User
    Other user: Other User diff --git a/content/docs/(functions)/Member/moveUser.mdx b/content/docs/(functions)/Member/moveUser.mdx index af02f4e9..1ef84d8d 100644 --- a/content/docs/(functions)/Member/moveUser.mdx +++ b/content/docs/(functions)/Member/moveUser.mdx @@ -20,9 +20,9 @@ $moveUser[userID;channelID;reason] How to move user to another channel - + !!exec $moveUser[123456789123456789;123456789987654321;AFK] - + #### Disconnecting user from a channel @@ -30,9 +30,9 @@ How to move user to another channel How to diconnect user from a channel - + !!exec $moveUser[123456789123456789;;AFK] - + diff --git a/content/docs/(functions)/Member/muteUser.mdx b/content/docs/(functions)/Member/muteUser.mdx index b09214b5..cdea6d8c 100644 --- a/content/docs/(functions)/Member/muteUser.mdx +++ b/content/docs/(functions)/Member/muteUser.mdx @@ -20,9 +20,9 @@ $muteUser[userID;mute;reason] How to mute a member with reason - + !!exec $muteUser[123456789123456789;yes;AFK] - + #### Unmuting a member @@ -30,9 +30,9 @@ How to mute a member with reason How to unmute a member with reason - + !!exec $muteUser[123456789123456789;no;Not AFK] - + diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 442de24d..5bc44264 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -18,9 +18,9 @@ $nickname[User ID;Return Display name if no nickname exists (yes/no, default is How to use $nickname - + !!exec $nickname - + ImUser diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index db3d5d73..e8f461dc 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -20,9 +20,9 @@ $status[userID] How to use $status - + !!exec $status - + online diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index 15b69371..5c7b5311 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -19,9 +19,9 @@ $unban[userID/username;reason] How to unban user with a reason - + !!exec $unban[123456789123456789;Appeal successful] - + diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index 297e796c..be91c1d8 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -41,9 +41,9 @@ $user[userID;option] How to show user account creation date - + !!exec $user[;created] - + Wednesday, January 1, 2025 08:30 PM diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx index 66db4c44..cc3d7f61 100644 --- a/content/docs/(functions)/Member/userAvatar.mdx +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -20,16 +20,16 @@ $userAvatar[userID;size;dynamic;serverAvatar] How is the avatar URL displayed when sent with text and without text - + !!exec With text: $userAvatar - + With text: https://cdn.discordapp.com/embed/avatars/0.png
    User Avatar
    - + !!exec $userAvatar - + User Avatar diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx index 162411f4..76132b15 100644 --- a/content/docs/(functions)/Member/userBanner.mdx +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -18,16 +18,16 @@ $userBanner[userID] How is the banner URL displayed when sent with text and without text - + !!exec With text: $userBanner - + With text: https://cdn.discordapp.com/banners/287135364127129601/a_0c1e74ef99e35d10f868bd839066e022.png
    User Banner
    - + !!exec $userBanner - + User Banner @@ -38,9 +38,9 @@ With text: https://cdn.discordapp.com/banners/287135364127129601/a_0c1e74ef99e35 What shows when user does not have banner - + !!exec $userBanner - + undefined diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx index fd9e7d85..e6a7fc40 100644 --- a/content/docs/(functions)/Member/userConnectedVC.mdx +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -18,9 +18,9 @@ $userConnectedVC[userID] What happens if user is connected to a voice channel - + !!exec $userConnectedVC - + 123456789987654321 @@ -31,9 +31,9 @@ What happens if user is connected to a voice channel What happens if user is not connected to a voice channel - + !!exec $userConnectedVC - + undefined diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index 9ca59a20..22272bc3 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -18,9 +18,9 @@ $userExists[userID] How to use $userExists - + !!exec $userExists[$authorID] - + true diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index e309d233..8b247e91 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -17,9 +17,9 @@ $userID[username] How to use $userID - + !!exec $userID[user] - + 123456789123456789 diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index e861d259..e91086a9 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -19,9 +19,9 @@ $userPerms[userID;separator] How to use $userPerms - + !!exec $userPerms[;/] - + View Channel/Send Messages/Mention Everyone diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index 63024f61..b1119027 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -21,12 +21,12 @@ $userReacted[channelID;messageID;userID;reaction] How to use $userReacted - + !!exec $wait[5s] $userReacted[;;;DogSmile] - + true diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index 68abbcc0..f91ab0e4 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -18,9 +18,9 @@ $userRoleColor[userID] How to use $userRoleColor - + !!exec $userRoleColor - + #d6e0ff diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index c1d594a8..4b2980f1 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -20,9 +20,9 @@ $userRoles[userID;type;separator] How to return roles from message author - + !!exec $userRoles[;ids;/] - + 123456789987654321/123456789123456789 diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index fd8d43e3..45eb88ea 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -18,9 +18,9 @@ $userTag[userID] How to use $userTag - + !!exec $userTag - + user#1234 diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index e955224e..3dde4801 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -18,9 +18,9 @@ $username[userID] How to use $nickname - + !!exec $nickname - + User diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 1da4a0af..5931a1f5 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -19,9 +19,9 @@ $usersBanned[type;separator] How to use $usersBanned - + !!exec $usersBanned - + user, user1, user2 diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index 9f42dcef..d4ac918a 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -20,9 +20,9 @@ $usersInChannel[channelID;type;separator] How to use $usersInChannel - + !!exec $usersInChannel - + user, user1, user2 diff --git a/content/docs/(functions)/Member/usersTyping.mdx b/content/docs/(functions)/Member/usersTyping.mdx index eab69cf4..f4ba806b 100644 --- a/content/docs/(functions)/Member/usersTyping.mdx +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -20,9 +20,9 @@ $usersTyping[channelID;type;separator] How to use $usersTyping - + !!exec $usersTyping - + user, user1, user2 diff --git a/content/docs/(functions)/Member/usersWithRole.mdx b/content/docs/(functions)/Member/usersWithRole.mdx index fca5d41b..b30a6c17 100644 --- a/content/docs/(functions)/Member/usersWithRole.mdx +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -20,9 +20,9 @@ $usersWithRole[roleID;separator;type] How to use $usersWithRole - + !!exec $usersWithRole[;, ;username] - + user, user1, user2 diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/DM.mdx index 0bdf1a79..4dc9188b 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/DM.mdx @@ -35,9 +35,9 @@ $dm[userID (optional)] **Result (Sent to the Command Author's DM):** - + This is a fantastic message! - +
    diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index 8ae49bfd..b6ead234 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -28,12 +28,12 @@ $sendDM[$authorID;I can add this multiple times in my code! This is time 2]
    - + I can add this multiple times in my code! This is time 1 - - + + I can add this multiple times in my code! This is time 2 - + diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx index 73e15a91..e5c2ff29 100644 --- a/content/docs/(functions)/Request/httpRequestHeader.mdx +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -18,10 +18,10 @@ $httpRequestHeader[header name] How to return Content-Type from last request - + !!exec $httpRequest[https://api.example.com/]
    Content-Type Header: $httpRequestHeader[content-type] -
    + \{"message": "Api response!"}
    Content-Type Header: application/json diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx index 0e604d0d..aa7bd9f2 100644 --- a/content/docs/(functions)/Request/httpRequestStatus.mdx +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -17,10 +17,10 @@ $httpRequestStatus How to use $httpRequestStatus to display status code of request - + !!exec $httpRequest[https://api.example.com/]
    Code: $httpRequestStatus -
    + Api response!
    Code: 200 diff --git a/content/docs/(functions)/Text/Condition/if.mdx b/content/docs/(functions)/Text/Condition/if.mdx index 915ebaa1..3de3fbb3 100644 --- a/content/docs/(functions)/Text/Condition/if.mdx +++ b/content/docs/(functions)/Text/Condition/if.mdx @@ -19,11 +19,11 @@ Read about it [here](/CodeReferences/ref.expression) Since the username of the executor is Tom it executed the if block
    - + !!exec $if[$username==Tom]
    Oh, you are Tom!
    $endIf -
    + Oh, you are Tom! @@ -34,13 +34,13 @@ Oh, you are Tom! Since the username is not Tom it executes the else block
    - + !!exec $if[$username==Tom]
    Oh, you are Tom!
    $else
    You are not Tom!
    $endIf -
    + You are not Tom! @@ -51,7 +51,7 @@ You are not Tom! Since the username is not Tom .It goes to the next if statement ,which is $elseif[$username==Lisa] and it will execute it
    - + !!exec $if[$username==Tom]
    Oh, you are Tom!
    $elseif[$username==Lisa]
    @@ -60,7 +60,7 @@ $endelseIf
    $else
    I don't know you :C
    $endIf -
    + You are Lisa! @@ -73,7 +73,7 @@ Since the username is not Tom .It goes to the next if statement ,which is $elsei Info: The second else if will get never executed ,because it will exit the statement after the first true expression
    - + !!exec $if[$username==Tom]
    Oh, you are Tom!
    $elseif[$username==Lisa]
    @@ -85,7 +85,7 @@ $endelseIf
    $else
    I don't know you :C
    $endIf -
    + 1.You are Lisa! @@ -107,11 +107,11 @@ But this expression will only be true only if both condition 1 **AND** (because The Example below will execute since $username==Tom is false but the second expression is true .It wouldn't work with &&
    - + !!exec $if[$username==Tom||$username=Lisa]
    You are Tom or Lisa
    $endIf -
    + You are Tom or Lisa @@ -119,11 +119,11 @@ You are Tom or Lisa The Example will only execute if the username is Lisa and their tag is 9999 - + !!exec $if[$username==Lisa&&$discriminator=9999]
    You are Lisa with tag 9999
    $endIf
    -
    + You are Lisa with tag 9999 diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index 9f9fa37a..b1076b2d 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -18,17 +18,17 @@ $ObjectKeyExists[Key;...] How to check if `name` key exists - + !!exec $objectSet[name;Mido] $ObjectKeyExists[name] - + true - + !!exec $objectSet[username;mido] $ObjectKeyExists[name] - + false diff --git a/content/docs/(functions)/Text/findChars.mdx b/content/docs/(functions)/Text/findChars.mdx index 26c5f662..f8fc1322 100644 --- a/content/docs/(functions)/Text/findChars.mdx +++ b/content/docs/(functions)/Text/findChars.mdx @@ -13,9 +13,9 @@ $findChars[string] ## Example - + !!exec $findChars[$username] - + Member diff --git a/content/docs/(functions)/Text/findSpecialChars.mdx b/content/docs/(functions)/Text/findSpecialChars.mdx index 9263aa4b..7597ce95 100644 --- a/content/docs/(functions)/Text/findSpecialChars.mdx +++ b/content/docs/(functions)/Text/findSpecialChars.mdx @@ -13,9 +13,9 @@ $findSpecialChars[string] ## Example - + !!exec $findSpecialChars[$username] - + $/? diff --git a/content/docs/(functions)/Useful/setTimeout.mdx b/content/docs/(functions)/Useful/setTimeout.mdx index efc359fd..639ec4a7 100644 --- a/content/docs/(functions)/Useful/setTimeout.mdx +++ b/content/docs/(functions)/Useful/setTimeout.mdx @@ -10,23 +10,18 @@ Will execute the code inside it after certain time #### Example:
    - - -!!exec This part gets executed before the 2d timeout -
    -$setTimeout[2d;Testing;$authorID] -
    -This part after the 2d -
    + +!!exec This part gets executed before the 2d timeout +$setTimeout[2d;Testing;$authorID] +This part after the 2d $endTimeout -
    -
    - + + This part gets executed before the 2d timeout - - +
    + This part after the 2d - +
    diff --git a/content/docs/Trigger/joinorleave.mdx b/content/docs/Trigger/joinorleave.mdx index b21cefd7..e152cc63 100644 --- a/content/docs/Trigger/joinorleave.mdx +++ b/content/docs/Trigger/joinorleave.mdx @@ -39,9 +39,9 @@ For member joins/leaves you can use `!!emit` command to trigger the On Join/Leav - + !!emit uadd - + Hello Member! Welcome to our server. diff --git a/content/docs/Trigger/word.mdx b/content/docs/Trigger/word.mdx index 5de35c84..9077c2c6 100644 --- a/content/docs/Trigger/word.mdx +++ b/content/docs/Trigger/word.mdx @@ -15,9 +15,9 @@ In the code part we will type `pong!`, so the bot will respond with it. ![Word example](https://i.imgur.com/0ndhYaw.png) - + !ping - + pong! @@ -32,9 +32,9 @@ In that case we would want users to select a user by mentioning him. #### Usage The mention will be the `parameter 1`, because users will mention their victim right after the ?hug keyword. - + ?hug fajfaj - + #### Setup @@ -45,9 +45,9 @@ Parameters can be retrieved using the `$message` function, we will use it to get #### Result Here's how the final command should look like: - + ?hug fajfaj - + Member hugs fajfaj @@ -67,21 +67,21 @@ Here's how to make a case insensitive `?hello` command, that will respond with a Let's test different variations: - + ?hello - + Hello Member! - + ?HELLO - + Hello Member! - + ?HeLLo - + Hello Member! @@ -106,21 +106,21 @@ We can do that with the following trigger: Let's test it out: - + ?hug fajfaj - + Member hugs fajfaj - + ?abrazo fajfaj - + Member hugs fajfaj - + ?étreinte fajfaj - + Member hugs fajfaj @@ -161,15 +161,15 @@ You need to add a forward slash before and after your expression, otherwise the Let's try sending some mentions: - + Hey fajfaj! How is it going? - + You've pinged someone! - + Mido, have you found your chocolate yet? - + You've pinged someone! @@ -239,15 +239,15 @@ To randomize the output, we will use `$randomText` function, and to restrict the Let's see if we get any compliments: - + How is it going? - + Cool message! - + Does anyone here have a monkey as a pet? - + Wonderful punctuation! diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index cbb05f8b..00ee5893 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -49,15 +49,15 @@ Hello $username! The command will trigger when a message starts with `!hello`. - + !hello - + Hello Member! - + !hello everyone - + Hello Member! @@ -66,9 +66,9 @@ Hello Member! However, a message where `!hello` appears later will not trigger the command. - + Hey !hello - + This is useful for traditional commands such as `!help`, `?report`, or `!hug`. @@ -92,15 +92,15 @@ Good morning, $username! The command will trigger when the message ends with `good morning`. - + Everyone, good morning - + Good morning, Member! - + Good morning - + Good morning, Member! @@ -109,9 +109,9 @@ Good morning, Member! A message where the text appears in the middle will not trigger the command. - + Good morning everyone! - + @@ -133,15 +133,15 @@ and if the response code is will trigger whenever `banana` appears in the message. - + I really like bananas! - + 🍌 Banana detected! - + Does anyone have a banana? - + 🍌 Banana detected! @@ -170,9 +170,9 @@ You have mentioned $username[$mentioned]! This can detect mentions such as: - + Hey Mido! - + You have mentioned Mido! @@ -198,10 +198,10 @@ This can be useful for creating commands that automatically react to images, fil For example: - + Check out this image! [attachment: image.png] - + Nice image! @@ -217,9 +217,9 @@ The **Discord Pin Message** option triggers when Discord sends a system message For example: - + [Discord system message: A message was pinned] - + A message was pinned! @@ -235,9 +235,9 @@ The **Discord Thread Created Message** option triggers when Discord sends a syst For example: - + [Discord system message: A thread was created] - + A new thread has been created! @@ -253,14 +253,14 @@ The **Contains Poll** option triggers when a message contains a Discord poll. For example: - + Which game should we play? [Poll] Minecraft Fortnite Terraria - + Thanks for creating a poll! @@ -276,9 +276,9 @@ The **Has User Mention/Ping** option triggers when a message contains a mention For example: - + Hey Mido, check this out! - + Someone was mentioned! @@ -289,15 +289,15 @@ The mention can appear anywhere in the message. For example, all of these can trigger the command: - + Mido hello! - - + + Hello Mido! - - + + Can someone help Mido? - + @@ -308,11 +308,11 @@ The **Forwarded Message** option triggers when a message contains a forwarded Di For example: - + [Forwarded message] This is the original message. - + A message was forwarded! @@ -328,9 +328,9 @@ The **Discord AutoMod Action Message** option triggers when Discord AutoMod take For example, when a user sends a message that violates an AutoMod rule: - + This message triggered AutoMod - + AutoMod has detected a violation. @@ -350,15 +350,15 @@ It does not matter what the message contains. For example, a command configured with **Every Message** could automatically respond to messages: - + Hello everyone! - + Have a great day! - + Does anyone want to play? - + Have a great day! diff --git a/content/docs/Tutorials/3.report.mdx b/content/docs/Tutorials/3.report.mdx index 8c2c2f2e..1fccec20 100644 --- a/content/docs/Tutorials/3.report.mdx +++ b/content/docs/Tutorials/3.report.mdx @@ -48,9 +48,9 @@ $mention you report has been submitted, thank you for keeping our community safe ### Result - + !report fajfaj breaking server rule #5 - + Member your report has been submitted, thank you for keeping our community safe. diff --git a/content/docs/Tutorials/4.collect.mdx b/content/docs/Tutorials/4.collect.mdx index 9b0925b9..272d23c8 100644 --- a/content/docs/Tutorials/4.collect.mdx +++ b/content/docs/Tutorials/4.collect.mdx @@ -79,15 +79,15 @@ $onlyIf[$getUserVar[hasCollected]!=true;You cannot collect the same reward more Let's see if it works correctly - + !collect - + Enjoy your 100$ reward! - + !collect - + You cannot collect the same reward more than once! From 60a66ddf69eac82498f7b5d5e7da213c6d1fd038 Mon Sep 17 00:00:00 2001 From: red88phantom Date: Mon, 10 Aug 2026 14:16:50 -0400 Subject: [PATCH 41/62] Fixed $memberJoinedDate broken markdown format --- content/docs/(functions)/Date/memberJoinedDate.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 445d2d01..68613082 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -7,7 +7,8 @@ Retrieves the date and time a member joined the server. You can specify a user I #### Usage ```cc $memberJoinedDate[userID;format(optional)] -``` or `$memberJoinedDate` +``` +or `$memberJoinedDate` * `userID`: (Optional) The ID of the member you want to retrieve the join date for. If omitted, it will use the command executor's join date. * `format`: (Optional) Specifies whether to return the date or time. Can be either `date` or `time`. If omitted, it returns the full date and time. From 2e6335df139cb9450e24d60f24503736891ca171 Mon Sep 17 00:00:00 2001 From: red88phantom Date: Mon, 10 Aug 2026 14:21:51 -0400 Subject: [PATCH 42/62] Another requested adjustment --- content/docs/(functions)/Date/memberJoinedDate.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 68613082..978eb221 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -6,9 +6,8 @@ Retrieves the date and time a member joined the server. You can specify a user I #### Usage ```cc -$memberJoinedDate[userID;format(optional)] +$memberJoinedDate[userID;format(optional)] or $memberJoinedDate ``` -or `$memberJoinedDate` * `userID`: (Optional) The ID of the member you want to retrieve the join date for. If omitted, it will use the command executor's join date. * `format`: (Optional) Specifies whether to return the date or time. Can be either `date` or `time`. If omitted, it returns the full date and time. From e53a7ca702c11cde28f637765d1a8e9ec23c6f16 Mon Sep 17 00:00:00 2001 From: nervn Date: Tue, 11 Aug 2026 17:19:59 +0200 Subject: [PATCH 43/62] $message can be used inside app_cmd_message --- content/docs/Trigger/app_cmd_message.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Trigger/app_cmd_message.mdx b/content/docs/Trigger/app_cmd_message.mdx index 691e745c..fce0c135 100644 --- a/content/docs/Trigger/app_cmd_message.mdx +++ b/content/docs/Trigger/app_cmd_message.mdx @@ -12,6 +12,7 @@ For example, if `@Mido` right-clicks a message from `@Zero` and selects your cus * `$userID` → User ID of Mido, the user who triggered the command * `$eventTargetID` → Message ID of the selected message +* `$message` → The selected message content * `$commandName` → The name of the context menu command ## Syntax From 5e62413a0ae25e500509660d9d5b2f9dfb111360 Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 12 Aug 2026 12:40:14 +0200 Subject: [PATCH 44/62] use bold text instead of header, so the functions are clickable --- content/docs/(functions)/Cooldown/channelCooldown.mdx | 2 +- content/docs/(functions)/Cooldown/clearCoolDown.mdx | 2 +- content/docs/(functions)/Cooldown/cooldown.mdx | 2 +- content/docs/(functions)/Cooldown/getCooldownTime.mdx | 2 +- content/docs/(functions)/Cooldown/serverCooldown.mdx | 2 +- content/docs/(functions)/Member/authorAvatar.mdx | 2 +- content/docs/(functions)/Member/authorID.mdx | 2 +- content/docs/(functions)/Member/ban.mdx | 2 +- content/docs/(functions)/Member/blackListIDs.mdx | 2 +- content/docs/(functions)/Member/boostingSince.mdx | 2 +- content/docs/(functions)/Member/changeNickname.mdx | 2 +- content/docs/(functions)/Member/discriminator.mdx | 2 +- content/docs/(functions)/Member/displayName.mdx | 2 +- content/docs/(functions)/Member/eventNewNickname.mdx | 2 +- content/docs/(functions)/Member/eventOldNickname.mdx | 2 +- content/docs/(functions)/Member/findMember.mdx | 2 +- content/docs/(functions)/Member/getUserBadges.mdx | 2 +- content/docs/(functions)/Member/globalName.mdx | 2 +- content/docs/(functions)/Member/hasAnyPerm.mdx | 2 +- content/docs/(functions)/Member/hasAnyRole.mdx | 2 +- content/docs/(functions)/Member/hasPerms.mdx | 2 +- content/docs/(functions)/Member/hasRoles.mdx | 2 +- content/docs/(functions)/Member/isBanned.mdx | 2 +- content/docs/(functions)/Member/isUserDMEnabled.mdx | 2 +- content/docs/(functions)/Member/kick.mdx | 2 +- content/docs/(functions)/Member/membersWithStatus.mdx | 2 +- content/docs/(functions)/Member/mention.mdx | 2 +- content/docs/(functions)/Member/moveUser.mdx | 2 +- content/docs/(functions)/Member/muteUser.mdx | 2 +- content/docs/(functions)/Member/nickname.mdx | 2 +- content/docs/(functions)/Member/status.mdx | 2 +- content/docs/(functions)/Member/unban.mdx | 2 +- content/docs/(functions)/Member/user.mdx | 2 +- content/docs/(functions)/Member/userAvatar.mdx | 2 +- content/docs/(functions)/Member/userBanner.mdx | 2 +- content/docs/(functions)/Member/userConnectedVC.mdx | 2 +- content/docs/(functions)/Member/userExists.mdx | 2 +- content/docs/(functions)/Member/userID.mdx | 2 +- content/docs/(functions)/Member/userPerms.mdx | 2 +- content/docs/(functions)/Member/userReacted.mdx | 2 +- content/docs/(functions)/Member/userRoleColor.mdx | 2 +- content/docs/(functions)/Member/userRoles.mdx | 2 +- content/docs/(functions)/Member/userTag.mdx | 2 +- content/docs/(functions)/Member/username.mdx | 2 +- content/docs/(functions)/Member/usersBanned.mdx | 2 +- content/docs/(functions)/Member/usersInChannel.mdx | 2 +- content/docs/(functions)/Member/usersTyping.mdx | 2 +- content/docs/(functions)/Member/usersWithRole.mdx | 2 +- content/docs/(functions)/Request/httpRequestHeader.mdx | 2 +- content/docs/(functions)/Request/httpRequestStatus.mdx | 2 +- content/docs/(functions)/Text/Object/ObjectKeyExists.mdx | 2 +- 51 files changed, 51 insertions(+), 51 deletions(-) diff --git a/content/docs/(functions)/Cooldown/channelCooldown.mdx b/content/docs/(functions)/Cooldown/channelCooldown.mdx index 2525243a..09f79512 100644 --- a/content/docs/(functions)/Cooldown/channelCooldown.mdx +++ b/content/docs/(functions)/Cooldown/channelCooldown.mdx @@ -61,7 +61,7 @@ You can send embeds, select menus and buttons by using the [message curl format]
    -##### Related functions: `$cooldown` `$serverCooldown` +**Related Functions:** `$cooldown` `$serverCooldown` **Function Difficulty:** diff --git a/content/docs/(functions)/Cooldown/clearCoolDown.mdx b/content/docs/(functions)/Cooldown/clearCoolDown.mdx index 25680de4..3d8dfe65 100644 --- a/content/docs/(functions)/Cooldown/clearCoolDown.mdx +++ b/content/docs/(functions)/Cooldown/clearCoolDown.mdx @@ -39,7 +39,7 @@ No cooldown 2nd try
    -##### Related functions: `$getCooldownTime` +**Related Functions:** `$getCooldownTime` **Function difficulty:** diff --git a/content/docs/(functions)/Cooldown/cooldown.mdx b/content/docs/(functions)/Cooldown/cooldown.mdx index 4292eada..84d87546 100644 --- a/content/docs/(functions)/Cooldown/cooldown.mdx +++ b/content/docs/(functions)/Cooldown/cooldown.mdx @@ -62,7 +62,7 @@ You can send embeds, select menus and buttons by using the [message curl format]
    -##### Related functions: `$channelCooldown` `$serverCooldown` +**Related Functions:** `$channelCooldown` `$serverCooldown` **Function Difficulty:** diff --git a/content/docs/(functions)/Cooldown/getCooldownTime.mdx b/content/docs/(functions)/Cooldown/getCooldownTime.mdx index eb2e2866..5263172f 100644 --- a/content/docs/(functions)/Cooldown/getCooldownTime.mdx +++ b/content/docs/(functions)/Cooldown/getCooldownTime.mdx @@ -35,7 +35,7 @@ The `time` argument in must exactly match the time in the original cooldown func
    -##### Related functions: `$clearCooldown` +**Related Functions:** `$clearCooldown` **Function difficulty:** diff --git a/content/docs/(functions)/Cooldown/serverCooldown.mdx b/content/docs/(functions)/Cooldown/serverCooldown.mdx index 51c8b9fb..5a732d35 100644 --- a/content/docs/(functions)/Cooldown/serverCooldown.mdx +++ b/content/docs/(functions)/Cooldown/serverCooldown.mdx @@ -61,7 +61,7 @@ You can send embeds, select menus and buttons by using the [message curl format]
    -##### Related functions: `$serverCooldown` `$cooldown` +**Related Functions:** `$serverCooldown` `$cooldown` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/authorAvatar.mdx b/content/docs/(functions)/Member/authorAvatar.mdx index f2299dda..9281ade8 100644 --- a/content/docs/(functions)/Member/authorAvatar.mdx +++ b/content/docs/(functions)/Member/authorAvatar.mdx @@ -40,7 +40,7 @@ To display the avatar URL as plain text, either enclose the function in backtick
    -##### Related functions: `$attachment` +**Related Functions:** `$attachment` **Function difficulty:** diff --git a/content/docs/(functions)/Member/authorID.mdx b/content/docs/(functions)/Member/authorID.mdx index 82b57207..87a2edb6 100644 --- a/content/docs/(functions)/Member/authorID.mdx +++ b/content/docs/(functions)/Member/authorID.mdx @@ -25,7 +25,7 @@ My ID is 123456789123456789 -##### Related functions: `$mention` +**Related Functions:** `$mention` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/ban.mdx b/content/docs/(functions)/Member/ban.mdx index 878be388..a9ecc952 100644 --- a/content/docs/(functions)/Member/ban.mdx +++ b/content/docs/(functions)/Member/ban.mdx @@ -51,7 +51,7 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid banning
    -##### Related functions: `$kick` `$unban` +**Related Functions:** `$kick` `$unban` **Function difficulty:** diff --git a/content/docs/(functions)/Member/blackListIDs.mdx b/content/docs/(functions)/Member/blackListIDs.mdx index 0429b808..b03ba266 100644 --- a/content/docs/(functions)/Member/blackListIDs.mdx +++ b/content/docs/(functions)/Member/blackListIDs.mdx @@ -29,7 +29,7 @@ You are blacklisted from using this command! -##### Related functions: `$blackListRoleIds` `$blackListChannelIDs` `$onlyForIDs` `$onlyForRoles` +**Related Functions:** `$blackListRoleIds` `$blackListChannelIDs` `$onlyForIDs` `$onlyForRoles` **Function difficulty:** diff --git a/content/docs/(functions)/Member/boostingSince.mdx b/content/docs/(functions)/Member/boostingSince.mdx index 1d7f4149..2eb7b404 100644 --- a/content/docs/(functions)/Member/boostingSince.mdx +++ b/content/docs/(functions)/Member/boostingSince.mdx @@ -39,7 +39,7 @@ Wednesday, January 1, 2025 08:30 PM -##### Related functions: `$formatDate` `$timeToDate` +**Related Functions:** `$formatDate` `$timeToDate` **Function difficulty:** diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index b1ab48b1..16d1a385 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -39,7 +39,7 @@ Discord doesn't allow others to change owners nickname. If you will try to chang
    -##### Related functions: `$nickname` +**Related Functions:** `$nickname` **Difficulty:** diff --git a/content/docs/(functions)/Member/discriminator.mdx b/content/docs/(functions)/Member/discriminator.mdx index 7d5a848b..0c9c4193 100644 --- a/content/docs/(functions)/Member/discriminator.mdx +++ b/content/docs/(functions)/Member/discriminator.mdx @@ -32,7 +32,7 @@ This feature is deprecated because Discord switched to usernames. This function
    -##### Related functions: `$username` `$nickname` `$userTag` +**Related Functions:** `$username` `$nickname` `$userTag` **Function difficulty:** diff --git a/content/docs/(functions)/Member/displayName.mdx b/content/docs/(functions)/Member/displayName.mdx index 599941dc..70777939 100644 --- a/content/docs/(functions)/Member/displayName.mdx +++ b/content/docs/(functions)/Member/displayName.mdx @@ -26,7 +26,7 @@ User -##### Related functions: `$nickname` `$username` +**Related Functions:** `$nickname` `$username` **Function difficulty:** diff --git a/content/docs/(functions)/Member/eventNewNickname.mdx b/content/docs/(functions)/Member/eventNewNickname.mdx index 090d9813..c88d8d08 100644 --- a/content/docs/(functions)/Member/eventNewNickname.mdx +++ b/content/docs/(functions)/Member/eventNewNickname.mdx @@ -20,7 +20,7 @@ Imagine you have a Nickname Change command that logs the new nickname to a chann $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` -##### Related functions: `$username` `$eventOldNickname` +**Related Functions:** `$username` `$eventOldNickname` **Function difficulty:** diff --git a/content/docs/(functions)/Member/eventOldNickname.mdx b/content/docs/(functions)/Member/eventOldNickname.mdx index 3f07e26d..1360b810 100644 --- a/content/docs/(functions)/Member/eventOldNickname.mdx +++ b/content/docs/(functions)/Member/eventOldNickname.mdx @@ -20,7 +20,7 @@ Imagine you have a Nickname Change command that logs the new nickname to a chann $sendMessage[User $username changed their nickname from $eventOldNickname to $eventNewNickname!] ``` -##### Related functions: `$username` `$eventNewNickname` +**Related Functions:** `$username` `$eventNewNickname` **Function difficulty:** diff --git a/content/docs/(functions)/Member/findMember.mdx b/content/docs/(functions)/Member/findMember.mdx index df25ac0a..7e620a14 100644 --- a/content/docs/(functions)/Member/findMember.mdx +++ b/content/docs/(functions)/Member/findMember.mdx @@ -49,7 +49,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$userID` `$authorID` +**Related Functions:** `$userID` `$authorID` **Function difficulty:** diff --git a/content/docs/(functions)/Member/getUserBadges.mdx b/content/docs/(functions)/Member/getUserBadges.mdx index 5f74509a..cd56c5c6 100644 --- a/content/docs/(functions)/Member/getUserBadges.mdx +++ b/content/docs/(functions)/Member/getUserBadges.mdx @@ -32,7 +32,7 @@ Not all badges are 100% guranteed. -##### Related functions: `$userBanner` +**Related Functions:** `$userBanner` **Function difficulty:** diff --git a/content/docs/(functions)/Member/globalName.mdx b/content/docs/(functions)/Member/globalName.mdx index dfec3c36..a5c86a08 100644 --- a/content/docs/(functions)/Member/globalName.mdx +++ b/content/docs/(functions)/Member/globalName.mdx @@ -26,7 +26,7 @@ User -##### Related functions: `$displayName` `$nickname` `$username` +**Related Functions:** `$displayName` `$nickname` `$username` **Function difficulty:** diff --git a/content/docs/(functions)/Member/hasAnyPerm.mdx b/content/docs/(functions)/Member/hasAnyPerm.mdx index 6151629b..3c04764f 100644 --- a/content/docs/(functions)/Member/hasAnyPerm.mdx +++ b/content/docs/(functions)/Member/hasAnyPerm.mdx @@ -39,7 +39,7 @@ To make code stop if the user doesn't have the needed permission, you can check -##### Related functions: `$hasPerms` `$hasAnyRole` `$hasRole` +**Related Functions:** `$hasPerms` `$hasAnyRole` `$hasRole` **Function difficulty:** diff --git a/content/docs/(functions)/Member/hasAnyRole.mdx b/content/docs/(functions)/Member/hasAnyRole.mdx index 3494a8a5..d3421f2e 100644 --- a/content/docs/(functions)/Member/hasAnyRole.mdx +++ b/content/docs/(functions)/Member/hasAnyRole.mdx @@ -39,7 +39,7 @@ To make code stop if the user doesn't have the needed role, you can check out `$ -##### Related functions: `$hasPerms` `$hasAnyPerm` `$hasRole` +**Related Functions:** `$hasPerms` `$hasAnyPerm` `$hasRole` **Function difficulty:** diff --git a/content/docs/(functions)/Member/hasPerms.mdx b/content/docs/(functions)/Member/hasPerms.mdx index 3728a233..81f049cc 100644 --- a/content/docs/(functions)/Member/hasPerms.mdx +++ b/content/docs/(functions)/Member/hasPerms.mdx @@ -33,7 +33,7 @@ To make code stop if the user doesn't have the needed permission, you can check -##### Related functions: `$hasAnyPerm` `$hasAnyRole` `$hasRole` +**Related Functions:** `$hasAnyPerm` `$hasAnyRole` `$hasRole` **Function difficulty:** diff --git a/content/docs/(functions)/Member/hasRoles.mdx b/content/docs/(functions)/Member/hasRoles.mdx index 5e0ad06e..de00a417 100644 --- a/content/docs/(functions)/Member/hasRoles.mdx +++ b/content/docs/(functions)/Member/hasRoles.mdx @@ -33,7 +33,7 @@ To make code stop if the user doesn't have the needed role, you can check out `$ -##### Related functions: `$hasAnyPerm` `$hasPerms` `$hasAnyRole` +**Related Functions:** `$hasAnyPerm` `$hasPerms` `$hasAnyRole` **Function difficulty:** diff --git a/content/docs/(functions)/Member/isBanned.mdx b/content/docs/(functions)/Member/isBanned.mdx index 7c956fc8..ba870f75 100644 --- a/content/docs/(functions)/Member/isBanned.mdx +++ b/content/docs/(functions)/Member/isBanned.mdx @@ -26,7 +26,7 @@ false -##### Related functions: `$kick` `$ban` +**Related Functions:** `$kick` `$ban` **Function difficulty:** diff --git a/content/docs/(functions)/Member/isUserDMEnabled.mdx b/content/docs/(functions)/Member/isUserDMEnabled.mdx index 07deb1ae..21c336e5 100644 --- a/content/docs/(functions)/Member/isUserDMEnabled.mdx +++ b/content/docs/(functions)/Member/isUserDMEnabled.mdx @@ -26,7 +26,7 @@ true -##### Related functions: `$dm` `$sendDM` +**Related Functions:** `$dm` `$sendDM` **Function difficulty:** diff --git a/content/docs/(functions)/Member/kick.mdx b/content/docs/(functions)/Member/kick.mdx index 5624c825..de97a21c 100644 --- a/content/docs/(functions)/Member/kick.mdx +++ b/content/docs/(functions)/Member/kick.mdx @@ -51,7 +51,7 @@ Do not place the bot's role above Admin or Head Moderator roles to avoid kicking -##### Related functions: `$ban` `$unban` +**Related Functions:** `$ban` `$unban` **Function difficulty:** diff --git a/content/docs/(functions)/Member/membersWithStatus.mdx b/content/docs/(functions)/Member/membersWithStatus.mdx index 263987bc..6b999f16 100644 --- a/content/docs/(functions)/Member/membersWithStatus.mdx +++ b/content/docs/(functions)/Member/membersWithStatus.mdx @@ -48,7 +48,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$status` +**Related Functions:** `$status` **Function difficulty:** diff --git a/content/docs/(functions)/Member/mention.mdx b/content/docs/(functions)/Member/mention.mdx index c43d42de..0f2e4739 100644 --- a/content/docs/(functions)/Member/mention.mdx +++ b/content/docs/(functions)/Member/mention.mdx @@ -28,7 +28,7 @@ Other user: Other User -##### Related functions: `$username` `$nickname` +**Related Functions:** `$username` `$nickname` **Function difficulty:** diff --git a/content/docs/(functions)/Member/moveUser.mdx b/content/docs/(functions)/Member/moveUser.mdx index 1ef84d8d..53f71008 100644 --- a/content/docs/(functions)/Member/moveUser.mdx +++ b/content/docs/(functions)/Member/moveUser.mdx @@ -41,7 +41,7 @@ Make sure that the bot does have enough permission to move or disconnect members -##### Related functions: `$vcBefore` `$vcAfter` +**Related Functions:** `$vcBefore` `$vcAfter` **Function difficulty:** diff --git a/content/docs/(functions)/Member/muteUser.mdx b/content/docs/(functions)/Member/muteUser.mdx index cdea6d8c..084de81e 100644 --- a/content/docs/(functions)/Member/muteUser.mdx +++ b/content/docs/(functions)/Member/muteUser.mdx @@ -41,7 +41,7 @@ Make sure that the bot does have enough permission to mute or unmute members. Th -##### Related functions: `$vcBefore` `$vcAfter` +**Related Functions:** `$vcBefore` `$vcAfter` **Function difficulty:** diff --git a/content/docs/(functions)/Member/nickname.mdx b/content/docs/(functions)/Member/nickname.mdx index 5bc44264..cf707222 100644 --- a/content/docs/(functions)/Member/nickname.mdx +++ b/content/docs/(functions)/Member/nickname.mdx @@ -26,7 +26,7 @@ ImUser -##### Related functions: `$changeNickname` `$username` `$discriminator` `$userTag` +**Related Functions:** `$changeNickname` `$username` `$discriminator` `$userTag` **Function difficulty:** diff --git a/content/docs/(functions)/Member/status.mdx b/content/docs/(functions)/Member/status.mdx index e8f461dc..9c823964 100644 --- a/content/docs/(functions)/Member/status.mdx +++ b/content/docs/(functions)/Member/status.mdx @@ -34,7 +34,7 @@ This function requires the Presence Intent to be enabled. You can change that in -##### Related functions: `$membersWithStatus` +**Related Functions:** `$membersWithStatus` **Function difficulty:** diff --git a/content/docs/(functions)/Member/unban.mdx b/content/docs/(functions)/Member/unban.mdx index 5c7b5311..7297a874 100644 --- a/content/docs/(functions)/Member/unban.mdx +++ b/content/docs/(functions)/Member/unban.mdx @@ -30,7 +30,7 @@ Make sure that the bot does have sufficient permission. -##### Related functions: `$kick` `$ban` +**Related Functions:** `$kick` `$ban` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/user.mdx b/content/docs/(functions)/Member/user.mdx index be91c1d8..2120b6b3 100644 --- a/content/docs/(functions)/Member/user.mdx +++ b/content/docs/(functions)/Member/user.mdx @@ -50,7 +50,7 @@ Wednesday, January 1, 2025 08:30 PM -##### Related functions: `$nickname` +**Related Functions:** `$nickname` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/userAvatar.mdx b/content/docs/(functions)/Member/userAvatar.mdx index cc3d7f61..7e735097 100644 --- a/content/docs/(functions)/Member/userAvatar.mdx +++ b/content/docs/(functions)/Member/userAvatar.mdx @@ -42,7 +42,7 @@ To display the avatar URL as plain text, either enclose the function in backtick -##### Related functions: `$attachment` +**Related Functions:** `$attachment` **Function difficulty:** diff --git a/content/docs/(functions)/Member/userBanner.mdx b/content/docs/(functions)/Member/userBanner.mdx index 76132b15..6b4df8d1 100644 --- a/content/docs/(functions)/Member/userBanner.mdx +++ b/content/docs/(functions)/Member/userBanner.mdx @@ -53,7 +53,7 @@ To display the avatar URL as plain text, either enclose the function in backtick -##### Related functions: `$attachment` +**Related Functions:** `$attachment` **Function difficulty:** diff --git a/content/docs/(functions)/Member/userConnectedVC.mdx b/content/docs/(functions)/Member/userConnectedVC.mdx index e6a7fc40..20110219 100644 --- a/content/docs/(functions)/Member/userConnectedVC.mdx +++ b/content/docs/(functions)/Member/userConnectedVC.mdx @@ -39,7 +39,7 @@ undefined -##### Related functions: `$vcBefore` `$vcAfter` +**Related Functions:** `$vcBefore` `$vcAfter` **Function difficulty:** diff --git a/content/docs/(functions)/Member/userExists.mdx b/content/docs/(functions)/Member/userExists.mdx index 22272bc3..24931e09 100644 --- a/content/docs/(functions)/Member/userExists.mdx +++ b/content/docs/(functions)/Member/userExists.mdx @@ -35,7 +35,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$findMember` +**Related Functions:** `$findMember` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/userID.mdx b/content/docs/(functions)/Member/userID.mdx index 8b247e91..5db0e1fc 100644 --- a/content/docs/(functions)/Member/userID.mdx +++ b/content/docs/(functions)/Member/userID.mdx @@ -34,7 +34,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$authorID` `$findMember` +**Related Functions:** `$authorID` `$findMember` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/userPerms.mdx b/content/docs/(functions)/Member/userPerms.mdx index e91086a9..dde19f25 100644 --- a/content/docs/(functions)/Member/userPerms.mdx +++ b/content/docs/(functions)/Member/userPerms.mdx @@ -36,7 +36,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$rolePerms` `$hasPerms` +**Related Functions:** `$rolePerms` `$hasPerms` **Function Difficulty:** diff --git a/content/docs/(functions)/Member/userReacted.mdx b/content/docs/(functions)/Member/userReacted.mdx index b1119027..a74e4b14 100644 --- a/content/docs/(functions)/Member/userReacted.mdx +++ b/content/docs/(functions)/Member/userReacted.mdx @@ -41,7 +41,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$getMessageReactions` `$getReactionCount` +**Related Functions:** `$getMessageReactions` `$getReactionCount` **Function difficulty:** diff --git a/content/docs/(functions)/Member/userRoleColor.mdx b/content/docs/(functions)/Member/userRoleColor.mdx index f91ab0e4..e573105e 100644 --- a/content/docs/(functions)/Member/userRoleColor.mdx +++ b/content/docs/(functions)/Member/userRoleColor.mdx @@ -35,7 +35,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$userRoles` +**Related Functions:** `$userRoles` **Difficulty:** diff --git a/content/docs/(functions)/Member/userRoles.mdx b/content/docs/(functions)/Member/userRoles.mdx index 4b2980f1..6f0562f9 100644 --- a/content/docs/(functions)/Member/userRoles.mdx +++ b/content/docs/(functions)/Member/userRoles.mdx @@ -37,7 +37,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$hasRoles` +**Related Functions:** `$hasRoles` **Function difficulty:** diff --git a/content/docs/(functions)/Member/userTag.mdx b/content/docs/(functions)/Member/userTag.mdx index 45eb88ea..f1e3a972 100644 --- a/content/docs/(functions)/Member/userTag.mdx +++ b/content/docs/(functions)/Member/userTag.mdx @@ -32,7 +32,7 @@ This feature is deprecated because Discord switched to usernames. This function -##### Related functions: `$nickname` `$discriminator` `$username` +**Related Functions:** `$nickname` `$discriminator` `$username` **Function difficulty:** diff --git a/content/docs/(functions)/Member/username.mdx b/content/docs/(functions)/Member/username.mdx index 3dde4801..29d4a27d 100644 --- a/content/docs/(functions)/Member/username.mdx +++ b/content/docs/(functions)/Member/username.mdx @@ -35,7 +35,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$nickname` +**Related Functions:** `$nickname` **Function difficulty:** diff --git a/content/docs/(functions)/Member/usersBanned.mdx b/content/docs/(functions)/Member/usersBanned.mdx index 5931a1f5..26f3bd26 100644 --- a/content/docs/(functions)/Member/usersBanned.mdx +++ b/content/docs/(functions)/Member/usersBanned.mdx @@ -33,7 +33,7 @@ Make sure that the bot does have sufficient permission. -##### Related functions: `$ban` `$unban` +**Related Functions:** `$ban` `$unban` **Function difficulty:** diff --git a/content/docs/(functions)/Member/usersInChannel.mdx b/content/docs/(functions)/Member/usersInChannel.mdx index d4ac918a..ca9fef96 100644 --- a/content/docs/(functions)/Member/usersInChannel.mdx +++ b/content/docs/(functions)/Member/usersInChannel.mdx @@ -37,7 +37,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$usersWithRole` +**Related Functions:** `$usersWithRole` **Function difficulty:** diff --git a/content/docs/(functions)/Member/usersTyping.mdx b/content/docs/(functions)/Member/usersTyping.mdx index f4ba806b..741668b6 100644 --- a/content/docs/(functions)/Member/usersTyping.mdx +++ b/content/docs/(functions)/Member/usersTyping.mdx @@ -35,7 +35,7 @@ Rate limits may apply if this function is used excessively. -##### Related functions: `$usersInChannel` +**Related Functions:** `$usersInChannel` **Function difficulty:** diff --git a/content/docs/(functions)/Member/usersWithRole.mdx b/content/docs/(functions)/Member/usersWithRole.mdx index b30a6c17..ce049bf1 100644 --- a/content/docs/(functions)/Member/usersWithRole.mdx +++ b/content/docs/(functions)/Member/usersWithRole.mdx @@ -37,7 +37,7 @@ To have all members cached, you will need Tier 5 Bot. -##### Related functions: `$userRoles` +**Related Functions:** `$userRoles` **Function difficulty:** diff --git a/content/docs/(functions)/Request/httpRequestHeader.mdx b/content/docs/(functions)/Request/httpRequestHeader.mdx index e5c2ff29..faf47e9c 100644 --- a/content/docs/(functions)/Request/httpRequestHeader.mdx +++ b/content/docs/(functions)/Request/httpRequestHeader.mdx @@ -28,7 +28,7 @@ Content-Type Header: application/json -##### Related functions: `$httpRequest` `$httpRequestStatus` +**Related Functions:** `$httpRequest` `$httpRequestStatus` **Function difficulty:** diff --git a/content/docs/(functions)/Request/httpRequestStatus.mdx b/content/docs/(functions)/Request/httpRequestStatus.mdx index aa7bd9f2..494c9df7 100644 --- a/content/docs/(functions)/Request/httpRequestStatus.mdx +++ b/content/docs/(functions)/Request/httpRequestStatus.mdx @@ -27,7 +27,7 @@ Code: 200 -##### Related functions: `$httpRequest` `$httpRequestHeader` +**Related Functions:** `$httpRequest` `$httpRequestHeader` **Function difficulty:** diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx index b1076b2d..38bb9d7b 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx @@ -34,7 +34,7 @@ false -##### Related functions: `$ObjectKeys` `$ObjectCreate` `$ObjectSet` +**Related Functions:** `$ObjectKeys` `$ObjectCreate` `$ObjectSet` **Function Difficulty:** From 0af02ccd8ca0c98f0221679391d0740710bb21cb Mon Sep 17 00:00:00 2001 From: red88phantom Date: Wed, 12 Aug 2026 13:20:17 -0400 Subject: [PATCH 45/62] Restored missing syntax information for encoded character codes --- content/docs/Guide/syntax.mdx | 22 ++++++++++++++++++++++ content/docs/Other/syntax.mdx | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/content/docs/Guide/syntax.mdx b/content/docs/Guide/syntax.mdx index 1822bc5a..e8b58d2a 100644 --- a/content/docs/Guide/syntax.mdx +++ b/content/docs/Guide/syntax.mdx @@ -89,6 +89,28 @@ Functions performs one of these three actions: - **Perform an action:** The function executes a task. - **Both:** The function executes a task and then is replaced by a specific value. +## Encoded Character Codes (Alternative to `\`) + +Instead of using backslashes, you can use these encoded character codes to represent special characters: +```js +#RIGHT# =>> ] +#LEFT# =>> [ +#SEMI# =>> ; +#COLON# =>> : +#DOLLAR# =>> $ +#CHAR# =>> $ +#RIGHT_CLICK# =>> > +#LEFT_CLICK# =>> < +#EQUAL# =>> = +#RIGHT_BRACKET# =>> { +#LEFT_BRACKET# =>> } +#NL# =>> New line +#BR# =>> New line +#SP# =>> Space +#TAB# =>> Tab (few spaces) +#SLASH# =>> / +#BACKSLASH# =>> \ +``` ## Multiple Arguments Some functions require multiple arguments. Arguments can also be required or optional. diff --git a/content/docs/Other/syntax.mdx b/content/docs/Other/syntax.mdx index 66a92723..a44a546e 100644 --- a/content/docs/Other/syntax.mdx +++ b/content/docs/Other/syntax.mdx @@ -92,6 +92,29 @@ Functions performs one of these three actions: - **Perform an action:** The function executes a task. - **Both:** The function executes a task and then is replaced by a specific value. +## Encoded Character Codes (Alternative to `\`) + +Instead of using backslashes, you can use these encoded character codes to represent special characters: +```js +#RIGHT# =>> ] +#LEFT# =>> [ +#SEMI# =>> ; +#COLON# =>> : +#DOLLAR# =>> $ +#CHAR# =>> $ +#RIGHT_CLICK# =>> > +#LEFT_CLICK# =>> < +#EQUAL# =>> = +#RIGHT_BRACKET# =>> { +#LEFT_BRACKET# =>> } +#NL# =>> New line +#BR# =>> New line +#SP# =>> Space +#TAB# =>> Tab (few spaces) +#SLASH# =>> / +#BACKSLASH# =>> \ +``` + ## Multiple Arguments Some functions require multiple arguments. Arguments can also be required or optional. From 6c447aa70b320510e148356ac04c4d84888b8218 Mon Sep 17 00:00:00 2001 From: red88phantom Date: Wed, 12 Aug 2026 14:25:14 -0400 Subject: [PATCH 46/62] Deleted duplicate syntax page --- content/docs/Other/syntax.mdx | 143 ---------------------------------- 1 file changed, 143 deletions(-) delete mode 100644 content/docs/Other/syntax.mdx diff --git a/content/docs/Other/syntax.mdx b/content/docs/Other/syntax.mdx deleted file mode 100644 index a44a546e..00000000 --- a/content/docs/Other/syntax.mdx +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: "Syntax" -hidden: true ---- - -Learning about the syntax used by this bot is necessary to understand how to write commands. - -## Syntax Overview - -The bot's code uses two types: - -1. [Text](#what-is-text) -2. [Function](#what-is-a-function) - -## What is Text - -Anything in the code that isn't a function is considered text. - -### Example - -```cc -Hello $username, how are you? -``` - -- `Hello` - Text -- `$username` - Function -- `, how are you?` - Text - -```cc -$interactionReply[Hello there] -``` - -- `$interactionReply` - Function -- `Hello there` - Text - -## What is a Function - -A function is a special instruction that begins with a dollar sign (`$`), for example `$username`. -All arguments are kept inside of square brackets (`[HERE]`). -Function names are case insensitive. - - - -All functions can be either executed by writing a command in the dashboard, or using the built in `!!exec` command. - - - -### Example - -Function case insensitivity - -```cc -$math[1+1] = $mAtH[1+1] = $MATH[1+1] -``` - - - -!!exec $math[1+1] = $mAtH[1+1] = $MATH[1+1] - - -2 = 2 = 2 - - - -Function doesn't have to be closed at the same line where it was opened: - -```cc -$title[Math question] -$description[What is 2^11? -Click to reveal: ||$math[2^11]||] -``` - - - -!!exec $title[Math question]
    -$description[What is 2^11?
    -Click to reveal: ||$math[2^11]||] -
    - - -What is 2^11?
    -Click to reveal: 2048 -
    -
    -
    - -## Function Actions - -Functions performs one of these three actions: - -- **Replace with a value:** The function is replaced by a specific value. -- **Perform an action:** The function executes a task. -- **Both:** The function executes a task and then is replaced by a specific value. - -## Encoded Character Codes (Alternative to `\`) - -Instead of using backslashes, you can use these encoded character codes to represent special characters: -```js -#RIGHT# =>> ] -#LEFT# =>> [ -#SEMI# =>> ; -#COLON# =>> : -#DOLLAR# =>> $ -#CHAR# =>> $ -#RIGHT_CLICK# =>> > -#LEFT_CLICK# =>> < -#EQUAL# =>> = -#RIGHT_BRACKET# =>> { -#LEFT_BRACKET# =>> } -#NL# =>> New line -#BR# =>> New line -#SP# =>> Space -#TAB# =>> Tab (few spaces) -#SLASH# =>> / -#BACKSLASH# =>> \ -``` - -## Multiple Arguments - -Some functions require multiple arguments. Arguments can also be required or optional. - -```cc -$msg[Channel ID;Message ID;Option;Additional 1;Additional 2] -``` - -- - ID of channel you want to retrieve information from. -- - ID of the message you want to retrieve information from. -- - What kind of information you want to retrieve. -- - Additional argument. Some options need these to work properly. -- - Additional argument. Some options need these to work properly. - -### Example - -Example of using `$msg` with multiple arguments - - - -!!exec Message content: $msg[$channelID;$messageID;content] - - -Message content: !!exec Message content: $msg[$channelID;$messageID;content] - - From feb103bf04f71e6a81dc2d8734d67183cd87b8c0 Mon Sep 17 00:00:00 2001 From: red88phantom Date: Wed, 12 Aug 2026 14:28:36 -0400 Subject: [PATCH 47/62] Corrected brackets --- content/docs/Guide/syntax.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/Guide/syntax.mdx b/content/docs/Guide/syntax.mdx index e8b58d2a..f2d2ea7c 100644 --- a/content/docs/Guide/syntax.mdx +++ b/content/docs/Guide/syntax.mdx @@ -102,8 +102,8 @@ Instead of using backslashes, you can use these encoded character codes to repre #RIGHT_CLICK# =>> > #LEFT_CLICK# =>> < #EQUAL# =>> = -#RIGHT_BRACKET# =>> { -#LEFT_BRACKET# =>> } +#RIGHT_BRACKET# =>> } +#LEFT_BRACKET# =>> { #NL# =>> New line #BR# =>> New line #SP# =>> Space From 02d6a46dbc85592f8e5b149bbea21aa12dc25899 Mon Sep 17 00:00:00 2001 From: nervn Date: Fri, 14 Aug 2026 13:31:52 +0200 Subject: [PATCH 48/62] Enforce function naming convention like $funcName --- content/docs/(functions)/Message/{DM.mdx => dm.mdx} | 8 ++++---- content/docs/(functions)/Text/Math/mathMax.mdx | 4 ++-- .../docs/(functions)/Text/Object/createObject.mdx | 2 +- .../Object/{ObjectCreate.mdx => objectCreate.mdx} | 0 .../Text/Object/{ObjectGet.mdx => objectGet.mdx} | 0 .../{ObjectIncrease.mdx => objectIncrease.mdx} | 4 ++-- .../{ObjectKeyExists.mdx => objectKeyExists.mdx} | 12 ++++++------ .../Text/Object/{ObjectKeys.mdx => objectKeys.mdx} | 8 ++++---- .../Text/Object/{ObjectLoop.mdx => objectLoop.mdx} | 4 ++-- .../Text/Object/{ObjectMerge.mdx => objectMerge.mdx} | 4 ++-- .../Object/{ObjectRemove.mdx => objectRemove.mdx} | 4 ++-- .../{ObjectRenameKey.mdx => objectRenameKey.mdx} | 2 +- .../Text/Object/{ObjectSet.mdx => objectSet.mdx} | 0 .../Object/{ObjectValues.mdx => objectValues.mdx} | 8 ++++---- 14 files changed, 30 insertions(+), 30 deletions(-) rename content/docs/(functions)/Message/{DM.mdx => dm.mdx} (87%) rename content/docs/(functions)/Text/Object/{ObjectCreate.mdx => objectCreate.mdx} (100%) rename content/docs/(functions)/Text/Object/{ObjectGet.mdx => objectGet.mdx} (100%) rename content/docs/(functions)/Text/Object/{ObjectIncrease.mdx => objectIncrease.mdx} (93%) rename content/docs/(functions)/Text/Object/{ObjectKeyExists.mdx => objectKeyExists.mdx} (78%) rename content/docs/(functions)/Text/Object/{ObjectKeys.mdx => objectKeys.mdx} (82%) rename content/docs/(functions)/Text/Object/{ObjectLoop.mdx => objectLoop.mdx} (93%) rename content/docs/(functions)/Text/Object/{ObjectMerge.mdx => objectMerge.mdx} (95%) rename content/docs/(functions)/Text/Object/{ObjectRemove.mdx => objectRemove.mdx} (87%) rename content/docs/(functions)/Text/Object/{ObjectRenameKey.mdx => objectRenameKey.mdx} (96%) rename content/docs/(functions)/Text/Object/{ObjectSet.mdx => objectSet.mdx} (100%) rename content/docs/(functions)/Text/Object/{ObjectValues.mdx => objectValues.mdx} (71%) diff --git a/content/docs/(functions)/Message/DM.mdx b/content/docs/(functions)/Message/dm.mdx similarity index 87% rename from content/docs/(functions)/Message/DM.mdx rename to content/docs/(functions)/Message/dm.mdx index 4dc9188b..70cdf6a4 100644 --- a/content/docs/(functions)/Message/DM.mdx +++ b/content/docs/(functions)/Message/dm.mdx @@ -1,5 +1,5 @@ --- -title: "$DM" +title: "$dm" --- @@ -13,7 +13,7 @@ $dm[userID (optional)] **Explanation:** -* The `$DM` function is used to send the result of the preceding code to a user's DM. +* The `$dm` function is used to send the result of the preceding code to a user's DM. * If no `userID` is provided, the message will be sent to the author of the command. * If a `userID` is provided, the message will be sent to the user with that ID. @@ -23,12 +23,12 @@ $dm[userID (optional)] **Command Input:** ```cc -!!exec $DM[$authorID] This is a fantastic message! +!!exec $dm[$authorID] This is a fantastic message! ``` -!!exec $DM[$authorID] This is a fantastic message! +!!exec $dm[$authorID] This is a fantastic message! diff --git a/content/docs/(functions)/Text/Math/mathMax.mdx b/content/docs/(functions)/Text/Math/mathMax.mdx index 461fbe37..8f1eb2b8 100644 --- a/content/docs/(functions)/Text/Math/mathMax.mdx +++ b/content/docs/(functions)/Text/Math/mathMax.mdx @@ -7,13 +7,13 @@ Return the largest number from a list of numbers ## Usage ```cc -$MathMax[Number 1;Number 2;Number 3;...] +$mathMax[Number 1;Number 2;Number 3;...] ``` ### Example: -!!exec $MathMax[100;50;150]

    +!!exec $mathMax[100;50;150]

    150 diff --git a/content/docs/(functions)/Text/Object/createObject.mdx b/content/docs/(functions)/Text/Object/createObject.mdx index 5a74ee19..1c7d616b 100644 --- a/content/docs/(functions)/Text/Object/createObject.mdx +++ b/content/docs/(functions)/Text/Object/createObject.mdx @@ -22,6 +22,6 @@ Your name is Mido
    Your age is 110 -This function got deprecated, use `$ObjectCreate` instead +This function got deprecated, use `$objectCreate` instead \ No newline at end of file diff --git a/content/docs/(functions)/Text/Object/ObjectCreate.mdx b/content/docs/(functions)/Text/Object/objectCreate.mdx similarity index 100% rename from content/docs/(functions)/Text/Object/ObjectCreate.mdx rename to content/docs/(functions)/Text/Object/objectCreate.mdx diff --git a/content/docs/(functions)/Text/Object/ObjectGet.mdx b/content/docs/(functions)/Text/Object/objectGet.mdx similarity index 100% rename from content/docs/(functions)/Text/Object/ObjectGet.mdx rename to content/docs/(functions)/Text/Object/objectGet.mdx diff --git a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx b/content/docs/(functions)/Text/Object/objectIncrease.mdx similarity index 93% rename from content/docs/(functions)/Text/Object/ObjectIncrease.mdx rename to content/docs/(functions)/Text/Object/objectIncrease.mdx index d8f61810..62de3307 100644 --- a/content/docs/(functions)/Text/Object/ObjectIncrease.mdx +++ b/content/docs/(functions)/Text/Object/objectIncrease.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectIncrease" +title: "$objectIncrease" --- To increase a key value, if the key doesn't exist, it will create one and set to that value @@ -7,7 +7,7 @@ To increase a key value, if the key doesn't exist, it will create one and set to ## Usage ```cc -$ObjectIncrease[Key;Amount] +$objectIncrease[Key;Amount] ``` ### Notes on Amount: diff --git a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx b/content/docs/(functions)/Text/Object/objectKeyExists.mdx similarity index 78% rename from content/docs/(functions)/Text/Object/ObjectKeyExists.mdx rename to content/docs/(functions)/Text/Object/objectKeyExists.mdx index 38bb9d7b..31a00118 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeyExists.mdx +++ b/content/docs/(functions)/Text/Object/objectKeyExists.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectKeyExists" +title: "$objectKeyExists" --- Checks if given key is present in the object. Returns `true` or `false`. @@ -7,34 +7,34 @@ Checks if given key is present in the object. Returns `true` or `false`. ## Usage ```cc -$ObjectKeyExists[Key;...] +$objectKeyExists[Key;...] ``` 1. **Key(s)** - Key to check it's existence. You can put as many nested keys as needed. ## Example -#### Using $ObjectKeyExists +#### Using $objectKeyExists How to check if `name` key exists !!exec $objectSet[name;Mido] -$ObjectKeyExists[name] +$objectKeyExists[name] true !!exec $objectSet[username;mido] -$ObjectKeyExists[name] +$objectKeyExists[name] false -**Related Functions:** `$ObjectKeys` `$ObjectCreate` `$ObjectSet` +**Related Functions:** `$objectKeys` `$objectCreate` `$objectSet` **Function Difficulty:** diff --git a/content/docs/(functions)/Text/Object/ObjectKeys.mdx b/content/docs/(functions)/Text/Object/objectKeys.mdx similarity index 82% rename from content/docs/(functions)/Text/Object/ObjectKeys.mdx rename to content/docs/(functions)/Text/Object/objectKeys.mdx index 9e89e674..8f00eaa9 100644 --- a/content/docs/(functions)/Text/Object/ObjectKeys.mdx +++ b/content/docs/(functions)/Text/Object/objectKeys.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectKeys" +title: "$objectKeys" --- Return the Object Keys with the seperator between each key @@ -7,13 +7,13 @@ Return the Object Keys with the seperator between each key ## Usage ```cc -$ObjectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] +$objectKeys[Seperator (optional, default:, );Nested Property 1;Nested Property 2;...] ``` ### Example: -!!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $ObjectKeys[/]

    +!!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $objectKeys[/]

    user1/user2

    @@ -23,7 +23,7 @@ user1/user2

    ### Example (Getting Nested Property Keys): -!!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $ObjectKeys[/;user1]

    +!!exec $objectSet[user1;name;Mido]
    $objectSet[user1;id;1234]
    $objectSet[user1;weapon;Sword]
    $objectSet[user2;name;Rake]
    $objectSet[user2;id;5678]
    $objectSet[user2;weapon;Feather]
    $objectKeys[/;user1]

    name/id/weapon diff --git a/content/docs/(functions)/Text/Object/ObjectLoop.mdx b/content/docs/(functions)/Text/Object/objectLoop.mdx similarity index 93% rename from content/docs/(functions)/Text/Object/ObjectLoop.mdx rename to content/docs/(functions)/Text/Object/objectLoop.mdx index 6ab35f8d..e569689f 100644 --- a/content/docs/(functions)/Text/Object/ObjectLoop.mdx +++ b/content/docs/(functions)/Text/Object/objectLoop.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectLoop" +title: "$objectLoop" --- To loop over an object @@ -14,7 +14,7 @@ If you are looking to loop over non-zero cooldown functions, you should use `$fo ## Usage ```cc -$ObjectLoop[key name;value name;index name;Nested Prroperty 1;Nested Property 2;...]{ +$objectLoop[key name;value name;index name;Nested Prroperty 1;Nested Property 2;...]{ CODE... } ``` diff --git a/content/docs/(functions)/Text/Object/ObjectMerge.mdx b/content/docs/(functions)/Text/Object/objectMerge.mdx similarity index 95% rename from content/docs/(functions)/Text/Object/ObjectMerge.mdx rename to content/docs/(functions)/Text/Object/objectMerge.mdx index 2a75f437..f49ac2e5 100644 --- a/content/docs/(functions)/Text/Object/ObjectMerge.mdx +++ b/content/docs/(functions)/Text/Object/objectMerge.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectMerge" +title: "$objectMerge" --- Merge the current object with another object, it overwrites the conflicted keys @@ -7,7 +7,7 @@ Merge the current object with another object, it overwrites the conflicted keys ## Usage ```cc -$ObjectMerge[object] +$objectMerge[object] ``` ### Example: diff --git a/content/docs/(functions)/Text/Object/ObjectRemove.mdx b/content/docs/(functions)/Text/Object/objectRemove.mdx similarity index 87% rename from content/docs/(functions)/Text/Object/ObjectRemove.mdx rename to content/docs/(functions)/Text/Object/objectRemove.mdx index 2c6867dd..e9d95cd5 100644 --- a/content/docs/(functions)/Text/Object/ObjectRemove.mdx +++ b/content/docs/(functions)/Text/Object/objectRemove.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectRemove" +title: "$objectRemove" --- To remove a key from the object @@ -7,7 +7,7 @@ To remove a key from the object ## Usage ```cc -$ObjectRemove[Key;Key...(Optional)] +$objectRemove[Key;Key...(Optional)] ``` ### Example: diff --git a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx b/content/docs/(functions)/Text/Object/objectRenameKey.mdx similarity index 96% rename from content/docs/(functions)/Text/Object/ObjectRenameKey.mdx rename to content/docs/(functions)/Text/Object/objectRenameKey.mdx index abc484ed..7c853e12 100644 --- a/content/docs/(functions)/Text/Object/ObjectRenameKey.mdx +++ b/content/docs/(functions)/Text/Object/objectRenameKey.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectRenameKey" +title: "$objectRenameKey" --- allows you to rename a key in your object diff --git a/content/docs/(functions)/Text/Object/ObjectSet.mdx b/content/docs/(functions)/Text/Object/objectSet.mdx similarity index 100% rename from content/docs/(functions)/Text/Object/ObjectSet.mdx rename to content/docs/(functions)/Text/Object/objectSet.mdx diff --git a/content/docs/(functions)/Text/Object/ObjectValues.mdx b/content/docs/(functions)/Text/Object/objectValues.mdx similarity index 71% rename from content/docs/(functions)/Text/Object/ObjectValues.mdx rename to content/docs/(functions)/Text/Object/objectValues.mdx index 6d294dfe..f8e43f37 100644 --- a/content/docs/(functions)/Text/Object/ObjectValues.mdx +++ b/content/docs/(functions)/Text/Object/objectValues.mdx @@ -1,5 +1,5 @@ --- -title: "$ObjectValues" +title: "$objectValues" --- Return the Object values with seperator between each value @@ -7,13 +7,13 @@ Return the Object values with seperator between each value ## Usage ```cc -$ObjectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] +$objectValues[Seperator (optional, default:, );Nested Propery 1;Nested Property 2] ``` ### Example (Get values of nested property): -!!exec $ObjectSet[name;Mido]
    $objectSet[age;300]
    $ObjectValues

    +!!exec $objectSet[name;Mido]
    $objectSet[age;300]
    $objectValues

    Mido, 300

    @@ -23,7 +23,7 @@ Mido, 300

    ### Example: -!!exec $objectSet[user;name;Mido]
    $objectSet[user;id;1234]
    $objectSet[user;weapon;Sword]
    $ObjectValues[/;user]

    +!!exec $objectSet[user;name;Mido]
    $objectSet[user;id;1234]
    $objectSet[user;weapon;Sword]
    $objectValues[/;user]

    Mido/1234/Sword From 332c440f43889e35e6ee7dc8dcf166a5ac3a2485 Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 15 Aug 2026 00:36:09 +0200 Subject: [PATCH 49/62] $includeLibrary respects the status --- content/docs/Changelogs/1.v1.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index f27a7dcf..554fc38c 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -23,6 +23,7 @@ title: "v1.x (Current)" * `$viewServerVars`, `$viewUserVars`, `$viewChannelVars` query significant speed optimization (100x speed for some servers). * Slash command support is now available for some native commands, such as clone. These slash commands are available on the main bot only. * `$userLeaderboard` and `$userVarRank` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. +* `$includeLibrary` respects the status of the included library; disabled libraries cannot be included. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From bebdf5e63f3dfc23d22d5d2cd0c615c3f43e579b Mon Sep 17 00:00:00 2001 From: nervn Date: Sat, 15 Aug 2026 17:36:08 +0200 Subject: [PATCH 50/62] update poll trigger --- content/docs/Changelogs/1.v1.mdx | 1 + content/docs/Trigger/poll.mdx | 6 ------ content/docs/Trigger/word_new.mdx | 9 ++++++++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 554fc38c..36b2ce26 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -28,6 +28,7 @@ title: "v1.x (Current)" #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) * Fix for message fails to edit if used some curl message like \{color} inside `$editIn` +* Poll Update Trigger, was not triggering properly. ## v1.5.0 (Main) diff --git a/content/docs/Trigger/poll.mdx b/content/docs/Trigger/poll.mdx index 7e27d2fa..3f59f168 100644 --- a/content/docs/Trigger/poll.mdx +++ b/content/docs/Trigger/poll.mdx @@ -19,9 +19,3 @@ To make a command to trigger when a poll ends. ### Output ![](https://i.imgur.com/4SbvPJL.png) - - - - -For Tier 3+, This trigger require `Message Content Intent` enabled for your custom bot - \ No newline at end of file diff --git a/content/docs/Trigger/word_new.mdx b/content/docs/Trigger/word_new.mdx index 00ee5893..ce33e65f 100644 --- a/content/docs/Trigger/word_new.mdx +++ b/content/docs/Trigger/word_new.mdx @@ -494,5 +494,12 @@ For normal text matching, prefer **Starts with**, **Ends with**, or **Contains** -For Tier 3+, This trigger require `Message Content Intent` enabled for your custom bot +For Tier 3+, this trigger **requires** the `Message Content Intent` to be enabled for your custom bot when using the following trigger settings: +* `Starts with` +* `Ends with` +* `Contains` +* `Advanced (Regex)` +* `Contains attachment` +* `Contains Poll` + \ No newline at end of file From 67faa1c89a4d3b3ab88ad111f5254bab0618cd9c Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 17 Aug 2026 13:46:23 +0200 Subject: [PATCH 51/62] use new terms for templates --- content/docs/Guide/1.create.mdx | 6 ++--- content/docs/Guide/4.template.mdx | 23 +++++++++--------- content/docs/Tutorials/4.collect.mdx | 2 +- public/images/guide/creating-cc/2.png | Bin 18314 -> 0 bytes .../guide/creating-cc/create-button.png | Bin 0 -> 49606 bytes public/images/guide/templates/0.png | Bin 82123 -> 0 bytes public/images/guide/templates/1.png | Bin 82897 -> 0 bytes .../images/guide/templates/clone-commands.png | Bin 0 -> 44053 bytes .../guide/templates/{2.png => cloning.png} | Bin .../images/guide/templates/create-button.png | Bin 0 -> 49606 bytes public/images/guide/templates/main-view.png | Bin 0 -> 113898 bytes .../images/guide/templates/select-wordle.png | Bin 0 -> 103848 bytes 12 files changed, 16 insertions(+), 15 deletions(-) delete mode 100644 public/images/guide/creating-cc/2.png create mode 100644 public/images/guide/creating-cc/create-button.png delete mode 100644 public/images/guide/templates/0.png delete mode 100644 public/images/guide/templates/1.png create mode 100644 public/images/guide/templates/clone-commands.png rename public/images/guide/templates/{2.png => cloning.png} (100%) create mode 100644 public/images/guide/templates/create-button.png create mode 100644 public/images/guide/templates/main-view.png create mode 100644 public/images/guide/templates/select-wordle.png diff --git a/content/docs/Guide/1.create.mdx b/content/docs/Guide/1.create.mdx index 8390411d..41e35691 100644 --- a/content/docs/Guide/1.create.mdx +++ b/content/docs/Guide/1.create.mdx @@ -22,8 +22,8 @@ After you select your server, choose `Manage Your Commands` to manage your comma ![](/images/guide/creating-cc/1.png) Now you can just click the create button and you're ready to write your code! -![](/images/guide/creating-cc/2.png) +![](/images/guide/creating-cc/create-button.png) -## Templates +## Community Commands -Don't want to start from scratch? The dashboard provides access to a library of pre-built command templates that you can easily import and customize. +Don't want to start from scratch? The dashboard provides access to a library of pre-built community commands that you can easily clone and customize. diff --git a/content/docs/Guide/4.template.mdx b/content/docs/Guide/4.template.mdx index 0a282db2..8cfdd778 100644 --- a/content/docs/Guide/4.template.mdx +++ b/content/docs/Guide/4.template.mdx @@ -1,25 +1,26 @@ --- -title: "Using Templates" +title: "Clone Community Commands" weight: 6 --- -Templates are pre-built commands created by our awesome community. They're designed to be easily imported and set up directly from the dashboard, no coding knowledge required. +Community commands are pre-built commands created by our awesome community. They're designed to be easily imported and set up directly from the dashboard, no coding knowledge required. -## Importing Templates +## Cloning Command -To import a template, head over to [dashboard](https://ccommandbot.com/dashboard), select your server and click `Manage Your Commands`. Now click the template button and search for a command that you need. +To clone a command, head over to [dashboard](https://ccommandbot.com/dashboard), select your server and click `Manage Your Commands`. Now click `Create` button then `Clone Commmands` and search for a command that you need. -![](/images/guide/templates/0.png) +![](/images/guide/templates/create-button.png) +![](/images/guide/templates/clone-commands.png) If the template has multiple handlers, you should select them all for proper functionality. -![](/images/guide/templates/1.png) +![](/images/guide/templates/select-wordle.png) -After choosing what to import, click next to continue. Some commands may require some data to work. For example channel that you want to use. When you input everything, click next to clone the commands on your server. +After choosing what to clone, click next to continue. Some commands may require some data to work. For example channel that you want to use. When you input everything, click next to clone the commands on your server. -![](/images/guide/templates/2.png) +![](/images/guide/templates/cloning.png) -Once everything is done, you're ready to go! After the commands are clonned, it will show you how the commands are used. To test if it works, we can try it out in Discord now. +Once everything is done, you're ready to go! After the commands are cloned, it will show you how the commands are used. To test if it works, we can try it out in Discord now. @@ -42,6 +43,6 @@ Guess
    -## Sharing Your Templates +## Sharing Your Commands -Want to contribute? Post your template projects in the `#code-sharing` channel in our [support server](https://ccommandbot.com/join). The best and most useful templates may be added to the official template library to help other users. +Want to contribute? Post your template projects in the `#code-sharing` channel in our [support server](https://ccommandbot.com/join). The best and most useful commands may be added to the official community commands to help other users. diff --git a/content/docs/Tutorials/4.collect.mdx b/content/docs/Tutorials/4.collect.mdx index 272d23c8..ebc68d49 100644 --- a/content/docs/Tutorials/4.collect.mdx +++ b/content/docs/Tutorials/4.collect.mdx @@ -29,7 +29,7 @@ Now that we have the initial setup done, it's time to make the command actually ### Prize -The reward that users will receive is 100$ with the [template economy](/Guide/4.template). Since the template economy uses the `money` user var to store a user's balance, we will contribute to that var. +The reward that users will receive is 100$ with the [economy command from the community](/Guide/4.template). Since the economy uses the `money` user var to store a user's balance, we will contribute to that var. ### Getting user var diff --git a/public/images/guide/creating-cc/2.png b/public/images/guide/creating-cc/2.png deleted file mode 100644 index 845c790086afa33c0c3cb14791c33ed2d7db6e69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18314 zcmb@ubyOVD(=AFMSg;V>L(t&v5*&gDcMIS-Fp9&P;&g zX#d7L8aWsn+dxT*%1Y4-(X%wX9~Xpz`V1u{Dx~bDd%EWO3v+Mn@70A>``Ssn18lU< zEdvd;OH{5QtT($Va&>R-Ck!LDsiNvXW(h?_=pWH7VI6*3k_P-AK%9lqAD%dz4f;9dc(tGtyG2wS7B>5Fi4pfk1 zj$cx;ednR5qJox5{_E4f0o5{!3Yf3~UB9Nxdi9yIAFuBVSN;x>u(|UQuQK3pqy$iAPfE`|n>;{}wPn zp`ub;Qru$^_4g;s8Rz~{O|Rhcu1jmRg!;pZ-+yeY9@S^kkEz;rX@y}{aBYbS1!g&O z!N9`8)BVrN?X|i$ehA|_ReiO zei1MpakoSE-#$HF9ZIdvcyG=I^#A+y<3J(=9pXgtUz-{F@xR|y=Vu*f;4h-(oSmK7 z*x9$7cs!l3em`zuigj7kf5N~J5f&D9tA0f1rGcSBF}v}wGsm~5WL@)}(}kCvvs-A~ zEV1lQN)4Sd@q6`>%K9iwXt`>`X>4q)PKW*D$B(KdtLImiANHGUvU%<88NtDD;Smu- zqoci693g5Lg2ECyoB8i#i8))BwahH6@@=)DQ)8!a?{D_A&GE;KRZgD``77o*a#`c0 zvRDYEt@7W?3y1EAYiOiK{vxCd&(&{Ssa`pootslsRTa0fv2kO+B6CuPm3zxJ*YZS? zWv>?%m8dOuAPJ^J!o#*)$SPxtQZ*%5IsR_Xrkq#TWNvBMGdKHv{E13GtXle#JdkUD zZf?$?TAkdC2l~^ePj*~{z}$C-kAiCV%#d<%MI*7SK{egMe6Bn~tm5l9K(QT6+;kIC|m!}|pNOs%! zS-?!!GhWjD+?5)dZ5AQ=(5PQtv*RqLZoLgJ5or)+S* zXW71)w)p;S`KjS#BRkHxlr%ph(ur>u4Xs zyRy(%*OOJf%=KQgqnzp%N?r0>Eo>3K!-J1j*EdkT&b)$1C-PQa56vnCKghw?Kg^*h ztNBkqPG>BK6l_%J9+j^0Mn5WN5VJKe?U|h*ghQz)U6$Z~|B1{SVOccL4^CW3fwT!<6k&eW2GIMVPK(ExMy=;!w`z(q>bhSLiGcOt=d0>ZAr1c5eov zyfA<_Sg6pU)2s{ie!hPPMwspm!${?_H&h?1_!{o}!2)7ISWa&F5tn@m^R;?EOY`Od z9n^qFClh)W<1ZXkn@LY^Y@qbxZHidW*Wj#6Q0z|->f$3wNZkUG@XX_}g$Q&DZ%Hdt+zaz89v@ zWp1RQ0b9Eye4un{TiM*vquBPUrhQmQrxw0Zt4mQY_$v*_wz0xMvm%)lqcN8|?W#l< zDpHfRq2P}C%1Clp_RlmzS!MU({jpN_nwh0zm9r(YRwK3%8~)(%cZ1a?Xu2daAG2sK z*%|7uO9SH>e-aW-$tWl?b3~qF6cxLIaCC9kcmICvAi>1kXx5&=RG6F*^7Het_%Vsu z#9)cPU@8mqx7Y)>^IF%pC>#Duc%|Ssq`FxM^6kNjjpSwywFf-u*`0^q8CVYp_ZDd6zJh_d* zqSc+U&9g1=QLKqSNH0@YI8N_hPVZh$?x-to+Mx>(KG78);4JjUqjj%98hwk0Nv zV6R+UTx>9vE2dtq%FuH71r8Y(>YIuRmTmhTc2H2z?b%8)I+=K2J>NHQ@yNs9D$&znvt68PbjE+8^$6%*fZ$aj|c85$E zA1gup#4QrM8~giX&;1!i+r#<~YzFP&U=-fR13_QuEP>*!v7nEFEW|M(Ypt&FSy>xL zBFC`}R!b~EZZpkrR{d-SEh!~s&>xA{cG-_P$ ziqSnMFlYX?pC+#OE6qWUZ2l+wH?h1?#fgG~AM@-pR*zk{@}p5+OnjA*jS4R3UDY zV+3izHsY+(fFwk2ig5Ylf;GZ%jn*R-opU@^^_eEO?WT`io^!P_N{Um=DaNK(jVIq% z>35m_+jS&{lwlFHF_XW)2v6@3rl&t~LtehNT@ME!dCIDCzhQtH9w~h~Z>6uR z=N1M#wDNmBtYP1u79$M7d*j>f^k!Fbc9`WtO#pps3=Ic zZ^XrUm+9$=8XN0KdLAC;H8h~h&J-0D8H^;Y6_w!ssBB*wnlJBb(mwzFa?X{(K-Wm;0+!O`|Q)YTy>ursh13}AZKo_`x|t%M+p8pU+8* zg`g7Qt3n?g9g$N|OifOH6A@v2OPjkCgMCvZZQe-b|xuNaEPJ z0vGHmqX1Yg!M&=VfC=P%m0OTgWCOS4!aAt@{#=z!R*V^UvQ4)Q4yIg=Q#{Xq%uHAj z6Eh(8a2CDyK&EF>Y*JZkWzccrH6$fP^1LbUWGesAj2BJ7jn&v#<@Tho^RwWiKHwt< zt!?+qBFKa(7)2|Ki`}P7F?L%)g?1P13(yLhnteTJor55DE$F*1U+82~S%Np-?g6kk zlFI*#{w=FQtK9=*LDy5D)^q}DGs89M@^*nYNY`ls+HegqjuZ?d|S--aw%P=UQMi`QmsDva-FQk>vm3oU0)?5V>(+aYjf>U@_cbr>>G__qxfp`kQMuB?$=)iYG#DDW1L}x(Ga13b z#Uc|VU<+zq>D=F)^>X-vp{~`M%t#a7LS+8~`2)^g^ky-Nbd&9DYWlkA#|Y_0^ty1V zN{In8ZOK&O&8KYGL?>r2v~B~m^kXf4uhu;DI?axnZTB5r3JE#KmMP zA`TWm|7q6CfvJ{u5m7!#-6Qx!czKyn z+hqxF@eF;d@16Iv$#kQwiJMCd-{YosN$H9E(;occ0%Jr$0k&$H`UK#7y_;R`+U|QA zUUzd5>2BN3>F)dF#2#iY*=IGz8#jYwjI1W3`sZzq*m!tDnAkQ4uAQElS~gD@Bwm+n zE}rk<0tD0_hiNYy-=37*_EYtKsHjXB#k6-LF}95X6R>)Nm5JRpDP2w%M=pFJ(DH)( zS&kF@=(Wwyde7T^8&Gyj#-@RZfjrNr7{b#N0(2UFN@KZm~`|)xs|IeS;l%h%zD_h%x4agg(n3&k26$hn!=ICs( z(z~L{%7gZYbt3=+i;9ao92Xa|xSXm(VKeH=0O-zgq2iBxmH@D`sb!k=;ee^oAw6Az zh!|W4>5iAQw6sQB-9bRzVz+EwXulms1vea>FgvRZ0)ZAAtO@cYVo<-978PX|6u{Lk zt>zJE-G};U-tb=C;$i{JFlRBR7S$^D4*}&Jmo^FW=#V|BF=#=~1K$xubY3 zOyY)x3Zi_j1>qn`C`Y?3HOHr-d^m_j$8i{GtlUviG1-j-iXwH5c7jRCdT~eDH*(#@ z4nl<{4&P5bJFMnT^*fg>%?%Lpw+>^x2^$UUMN`NPRMZU^Q=c`}-P4uSD89D2?ZOQE zVh!KpWzq=Fck<6uOrh?3LNL2rh<8av^_;A9DMsZ=)Ukb@2Vap58fYZySXogMOS_eS za{FhMH%UmKgiCYbk_pR&zlVV4t4iL9Sy}SqjH;@d7 zEuHrwT})b<;G(UTJm1H{;tLRnKa-Ls2?aR(OaD-}XK8(6I2qq%WXSU*(6$ql`lsjj zvukP?^1Yjmk3BwpG7O76eR?$nfi&Hp&lstx2M>VINJU1Ly0}PfGMds4iz8z^2BNoG z(nk9#yV56!YttC7D7WwP+b2RwtsbvJ7d z*m!%9MTFbFTrHv}Qe~@0PpevH3ZQ{>*L5jTiIpSZPWL>2>eS8B!ug`@;lVRCH8q;X z8MD^PTTrg_;|H|gtYu|;@X*iguEVAC5u-$(myBqk=lJaj_DX4oiYQa(N^%oAY3dS}F3 z4ES!4!t!qj8rI|*&<2h5ZH>XSfrd+sM_y3wTr$pg-tX)@+q=HWKi>Viad$i=WRN83 zArrfJYCwCZH3-L$O`yf;Utkdus%VW@TP^D2jI9@uURy#r*Y41%Vwj zWnU3V*6)KHJB^JguNqgRl7cIbDg1(;w`6O?1YABX(L2RdiQk?t-=L2sb@847~(nopz zC-q~3!?fR_#c96p-`E+aroe_R>n0p&|Kj$;hMqW3HWg-YWWKyuA;SeBG4fHgc_36S zi~wK`SFj^{<}Jgk=1t0chSGa1QBO#y^S6_i7aLRn{6X+86?rezsG$DJq~fLa7-A!X&+ zO&3o)p1TDxZ*L_#M=0@VWE7Y9_`6olg}Ec=*BM732E!gh;YNuEqmlfb{<9IZi!_y1 zrb^4X;l-Ne`^J5?m>$&Yw=Qrg;tI|DI*8~z5W zI3~ya(QkS#tr_|GXjzY=qo zl(0A-D;pXbhDJn?ad0FJ4}Ui_x-$op8E^jei^OI2@9q}fpU5I{;Dzqo-ZuRH{rlkf zII4yFM}G;v7utgQ=vb@_;o60+s5D4dZGf%5jLe}YNa@b*qT$I)wN_{XA+qcdOlHywktI*dnO%ZUdmK(}S!rr=kN8u(*NEfropUZl_;(2m_t+sT%L;_k z2S+hIsPEY~>a|fg{d!}LE1kPLHBlYqu(nICHmJxj&bz)E)oaO>RXH7zToF;Lhwok3 zTvh{>VZa0A%*+(Y0}H;Ud5Keu*m@=J6L4@hXS@)=TNXjFL^Qq{-%^`gV zzg>8BY85Vfn@uAzmpM)N2e=sjZT4I@74dv5RxTe-3rF7YB?2y8q6r2h_CtCjSFpshd8FTdwLDZN@pH0kRT__(VB@6jkXD$WbVzH|8!-4Bq5P? zcXxK1@<~iQx@%p&*xhyerMqzvVBYC;^uYIe`y%%|OXPdGhx0a6*PyDWjNc(YdB=>N z+ekr9ZZ|}c%w*J$3^1vHzZ!P=!_F=&u-a{Y!xS@EZ*wQLo}RgT$Wq9 zNRBu@KK^|t(B&uZ=*WtPhev8$U0v-LG^ePj=*N;b^(eT2MZ_>uC{M+}5dB9w`G;Cz zjDYFSpG-EZTpZTRz0pLxj|-h|eWR(YLqkJ|mai}XBa@I_&-a1aNq6UclQLSPRq6<9 zK!uT^l`m9!Nt&LGXOwZhmI9{l>edO`YukZsB~-EAKk!8Arl~fz&7S5?v`R-g? zWoj&QH1GAq_KtT@lQJW(*6o7;Y|t&jYe06-3F@iqp?CUb$!ZvvG8z^6!_J-#Ewozo z6YM=D(>5k`?$QqOZljwvRBwtk(F9UEc=W~I%#4o-Y^5hH85#Q1W1WeZ_J!{dZYlgt zPoDt17~WTE>4(G;AT_SPL_{#IHpEy6LOr*FT?~so>_q_En~oQTlQ> zc_Ht>FO>LhY(Ye0)o!N&sR`-PL)n}5?nMe(LNkLA5d*VRA14u|L1$rUdb%56 zM8>=y)+A&i-`;J7QDq_&??4owJ@jYS*NK%qtQ0VVl;pUBhT^G|^z>r-3`qraAqvUy z@jWM%opRRJ^fw0+rt@VQw?{KnWg#TrZaS$B558U&dJibhaDDYbz%Ue+s3BQ@BC(m^ zjzP4CX>uH){V7g*WmT60zIWy){gbN67w#@>>hSCe+An!>NZUiMyU zbfeY3^XvtgEeO3DJO~Q*d4^V*8LXkGDy}A+9BiP7GmbboInIFcQtt3`Z|yL7+a+jb zhLC46YQlknC6t({iO9^WO*T$wsjI%%iNZ~5xbRDsnk`g@-!D|-%D#{n{!(kGG<0^B z+T@=r!hIY;#Id)z|F}-Oo^J{^{Pnk3>>0hxz9t13c`#J;#?618ySZy-yr@nmQgZEG zCWmq*ysXMpTQ<)f6wM<=uEmEH0wawY#$=N@aZzP*@mjq2vG9?zg6W-trefw@OKm9e zD11o(3k3y<`ALtp)>zDmSF~LVa9B;AJZ|uH!}z`GxMXH+gm61D>;>VR?_{`U{9YzK)p_% znwkofwJztg0YL#d)E$n&x!IKiQxcMxw=V>&6Z$6LAyPp{B%7^2H598=SKM;naYt=$ z7)@07hen6_!ZcE;>_zU`D0}yw;m~hyVn4afRSt(^0-LX6)T>#DW{jzVf8g^`srk%FI+!TUsA1D~q+-=|d_= z;zpCV{roFeVQzhNa?uI%^D<@^2j|&SJsH{jrQ(uhuI9g(S@0_66r6#$L!tHUGT;K;aYy7 zd+$6x;1ILLsG*4}Cz2N5r6=jhc;~^`+S%p4(^VkC4_A2?5R4N31mO_V}Zf%|5$zMc_=Dou^&xeN$w?En(8A9R{Cir@UMeP1lt}u=3d|juX z|KSCza0X}qghk9OOeQ3&g_O-boz_m47JQd3b=!%OZ+f|A6#>i2%je2xDQjxp%3F3Z z;tS?Y4N6f(8SV|E0KLxYr7}Mj2v4e1d@$@aYS7I@R<}QF*3}p%f!kR?iM{<4onA+hWd$NpA3%F}0)Pxd4wpF2H=m8;xJ&l&Hce0g z87~~Vwqy%Gi0GIv;*e^PsQ5#o)f z@W_-u+>-I+1v>o~295bU?!n2#cH7^r`jnDU710(;0Z| z<;x^={5q2?FtSQC;%0Gb>}7XMI0{DwS*uMN`ueJ%a2W&R-E7NyA>WEu+9jGkH_oW~ zD#3^Z`rZooUsi%m&e+a-fALT@H^&3becAT7Q%T>dl{NfARQ!)Dr1-j9pNV4s7VC+# zxzq}KrfFpr+_Z$%Tg-CBNk)CmD;anF?4Mb-KUH{#nbv(D%$20JpRI954F~gVp=D<6 zXcTd^*!=E)Y5|yx>OfabI_kM!>^V3Ti7dso8tQ;Kgp1gdkZl|R$m;wG|c_pLm<=PVy%h_uf#*QnU zPW=)Oh>_Z^Yp{{T{GlKaToRo|PZE7=^Yw5olsCFNxx61_R|^ zxcN*!3H!zjhn+sdzj+QapBXvV-AEG?>*=(cFax^22@BJ$G@RwMv-{9ThN$Zeqh zf_@e~EiTg|)@;9RPvQrx4gxn}Y1#;`rY;hU9YnBRmsf-$mDSn17& zwvn>KCYB-;Q4H`Oz7N>HD`4~y+DOTT=MIN{d)A`gXpHx<<$M3voP-aFnwom`b?n&; zl=E88 zUnphq$0bO-$HK9Kyue4_zv+GU1|MNGU-d@_i$?~dj2xi(ri=k)`@m7*hJP+~Bpz!h zJW2Z4pX7BS^^G_nbr)u~#H;DLXSH6uNoTjuS#0?u6~Hlg!Z!h)>-KV`mdbjdSRjKp zwiB~44iFb@;NyUQ>3THXo#gFeih${Jh~SF>2c^#6@1lhKCj2@piZ~|o{GF_J6pEnWcgjKupE>mMU{km*Tqa{ys(JMvirc%D^{lO4Xh*^_@SQSs%b z+vyoRevgj;?fBX5C6G%Qz>@6jPPcq1Q)c9>wI`l4PdMQZ%3fYxgHFi^xlb_AdZPY< zXP%w2Y^rQFb0i^1{Cms{4J2!+LatOZT8B?dd3GTM6&NTJX*=h}s;9l1 zJE8E`j4Q*Mo%NjDK}V^y(D!u5jF>mgTPjn(Ayc%<&dtqcwlITBPRD3TSz22CE}D>$ z9x6Farz-qqhRO3@8K~?B$K`qqj~;9KDo&SG#2p;G3Td0V>+87}>q`?34<&1Ac+QJI zl@%8!=H>!K(8RfuO452q^mSfBZ3ciH^^}qdyO@%cadzgfuaEj^LWx1N z_Vm3rPsqp!31DIY*4C){cKiTdWsaJ*6oB#>?_eBwWbHrLGd0+(Et|iWB-G`9BKkS; zOg01y#@U9GTO{=jIe3PF_5HRJgT}KiC=3G+?Rq;O1Pcf9C;sj<`(R5o*)dWV18G3? zvkttlT{yctYL4a^nm1ETzoBK&0n2w(Ucvs}S;5dB7! z_jK}d=XM;6VQwC?7F|X~_Wel)Yd_jgCYoL2-t6q{D>vqyenU1up99zTtrhewLz;{} zCw-WQ(I%!FM8sUSnCWL&m&?PZ>B6Qz7WP-46PjklRdw4Qt^emag4`*y;;#BBdD@+r z{c~;S%KN~RBci^udxQ@ku6t@ldV57#Ohz{^t^RHZ+^!Q#`1cv2K6xZUD7c$V-_6Hj z5)g=4Sq=P|Y46fk;3-eW5Pm^`mG}tC6}*Qh_nUEdTP8txtQD3}oqQpq?Rev2jCg+Y0tk<^~NxE?$LHdNL*KzG2>)+Wo~? ztYc)lrs!UN&XSPGxP0T`IVI8wQ3^?c{z)$O$(%jgeKo~y>&oNGf~JJg&EmdSX&EHs zln~baiC52By0mk~7tNn$d&5?^t!ep#wo9mX;ZQ0S=t zp?-@+v?n(M&F3jX$hGo);*@UdxjZoXAc8u&uX`tIinkk%+3nl57t+s~t`-;a@XOEO zOH=UMxfz;=v>uOwT4kZ{frf-8sh41P!-;$dUrhA<)-%R*R;Q+$r>~|TLySmvJLB01 zk`>D(33-a=gUB^Ho;|c=c&$MrZqZ%SRT1j_snU>CwZSb)R5L#f)|jfm5|P9f11&xr z=2%ckNf9W##9d)c7r&taBLgRd{p%-4#Bx6Fp=mvaDF?=FE4px~QPP~npZ0d5R&R*( z``(S?8-HG>}vJcKbzmIj@lM`~4ba zPBLLNkQZ!78OehADdyN(l#_h)LeM#_&uDDWif|{Hat%egpu!1co&5@O%{?yj&1pbd zdFHM}-nAIjT4T6aK^^EW+p^dY11!LPT>v|xprCx>A|eIe{L%u?Co=L1^cgL8I#p261FxQn~HeYFP^daflKCtwX8| zoE&ldSRB^Mm4*1RCfTGi646co55L3huVbM(Wj&|jqekXSe${k**L2QID^E<9JU_F% zNH#>$XhuXtL`)nU0QgG$M|H;)2oN`R&Dx}ToV9|rtP>_KCIf0Ap*th!Na>MqLH0d0 zOkX$eEzCgZlQ^NzjK;Ge&;HXLts(FW0M)w%0w_f;jEJXDej-4fw9CTE`jwWpXUpy* z4o=9J2@;*+$9Cx%w&j%-b2GEQdk)T?wD4Cuj=f({#1sc5!}fZoxao8|P$~zc?SAi~ zrN2CsO|oIJz4lqLP^;64$6@3?jxmlK4d=h5p!K{)0sbt>k~X%xzyAZU9?+o370x`o zQ@Z64Q>@Y~@9piqb<3A};Q}rk;_b?(Rl7dX1}nzG{5sT_0fLm^nMnmUCVVVlO^=Jz zaA=Z7-#XdAd*rcM$-*wGU+kGVkl{oIKX?Pn$OH(mL8pw55`*Z??@XA0rhKK@ZjA3! ziZj8(wo{8D@`qS-lOOSUsca1-RFNkVkd9(eaZP4C6kOzRWO*b&8JVkgw+ojd!Dn~v z$hCG_Y60XDqS_%zLt)G-dzVyyjDI>&gQ@txN1<|aun|?Dp|hE%m8PJ7BF<=RAP)RT zUYU!5nEp?%O6nmA4T#zR1uJpf-~UK8b3@4O{%K7E4@v)bhJdp+RMY_CHn+*w6}k-3lkss3xp(da;fg`A2iJ~h={8%`F=q&9VQR3rW|Q8!|dAst2|b1?w&V>UOR)qVYj5Vf(b}pKNW&59YmoVhK?Sy#0^9ma{*=(_&czd#voP5we zTzUTF>^4X8^EyEZkeVV*yiNT^|K}~+TuNGM0}>>@-60q4B0ilyelOKV1D7vIj^?gh zRbrx03aYB(3$$uL;o4mkONPhp@IHG({;2ujz~P7jr}pR24*+i*L{R7fR7;QJ#Kc~m zc_EA8W7W5ftvB$)!Q)EpM35;A(?QbG%Zq7kPi+k1|1i|_OPOk#LI9)+j$)6-e!=27Ph7F5i_$VS#PeCN{{3}%I%ypa(ZJw1Kb z+S$T{FGm`8qZ4X$^j7Q>JcVJb<@y5y$miWir*2mqh2HfehPFD8qLfSdNGMGRyvd81q@qRowebQbwn=rQjh6!n zdubEip`h@+6^2wVS#f2ISLp&&ak3(rgu@*Bg2VWdsr|?pXOJ5AIRLTc==qdXQ~))+ z?AX|@iD@v-znHm=px*Am4m6|CCe|xUN-TzHX$B?bsVKygPIg9=^P{ppUre9i3MOE~C z{TC?^ro#T8ihuh^rc{}xwe!oi>3 zd;jOTnwpxTii(1=vePCacZb%sgv3Ne9Ua-Eiv~oA_&i%=8NgRR>eQ&yA>*+GPEY^f zuv+}s)Vz1q`=7Wp@S9YmN}X=2Pa^%l+=IE-uzIqw@{Qkd`!c?m=bxqje}(%0K6w6r z$SFX4wdb;`pxwTzchpd;MT|K{VZ`39V#14zl))da6kq%MJMe9*Pf**D^t1&HUoBuC zl@V+EQgQSnFERKHJy#+y`Awg|BF)WgOm$v)VMnq4(vTFDAYRD8%7L$wh&R+AjCrds zBxrhi|Ma#J5S9MlJc1-)%vo$y+pG1x%yy9h3$FX?Z6O+in*~E)eWCPU@@R%|JaKw~ zqD^xVYYZH(wja=x_R7q7nAn;8#R~z2|7UH1i>xC*?403=z~A9g@m_YjXj`$JufxU0 z?H;Z6L;w-gJ0;mzMz@Wj2(q%2sR;9$zaL zdz*Ubj+|Uw#)3S7G^B~zhr33Q6KxEs@{1?}V!FrFuO_}SaU|8eAipc`o(RuTi#jF& z=l4(5&A15_@^-?67V_Q+{W~Q2A*LjECHP}}k1muH>`9kjNQEB*3Qo;DKVK{u!F|6Z zzn3mJj{XuqEza7iPucSc-jL<66XaovL2{wd%^GxLc2gHpf9MT-PxaTH$CmBZ%P;on ziyIm8-6Oh>d_iyKs0A@+O;f9x__T$u_6iE+r{)@Txt%9$ zk{|UmEy$TYYD;VzN^;XFp~+)X?8Ra>s;qeVudLqsz!407 ztXvoQQ3nrI%gpzlx21f==wO}mx$1F2VxN|GMq9QN4@L=kjT* zXNhf8r3~I(^SST%{f(x(jD@t5;&+7=8w?XmVbo~gBzh)$>z5^Ei=Ll>{$(8E@1qXO z7^`pA&LvIcDz--GnNN!w;^I$#E>BW|mZRuaKFNBQhQ&6QM-JMEDBhYk!Ipk%+78rg zNRp_kUlorW8%gLIBOh?`4LRi~^mF$7vh;&k$e}J|2qsM`a$2vm)J61axP}~mCGy2v zktQCV171ASMMdMu$CVtVoDy8v=(znCJ2KdamKrldCndRh1K93;e?HwcRpGS4gAKah zc;-7`Qtr_;?a{$}^$(v6i|x6d>hi-&T&QMlriUWJerk!ZW}TJi&MiE&=fT&s<-!%J z8Eb#%Q_b_+!>TVU{_v_9yK2U(#1bc2E1|HyzZo%YF|2vF6k0}2uz)hYwO3A&o{}k9 z))zTa>L8w_3^1A({V0a(^Ple7Mh1_&e*Zm!%7}OT02>A)d@W9ig6QtGaG2)*-N5L~ zMPRv>oE&X4@-)6W^~>Wx{{oDVQkAPK@En6q1oRQ!lW9Cj@<`Z`(b9TVL~%Y< zGJJPY8_weD!`f`L>pV(m_s-IiLup2L0M@HbDf@ggBdZz@$yrO8Nr8RWqQ`k>5%RAyEcCWZ_YWrzi`6O07Fwfx_dYzF>6(4vXH&=%Hb!cR ziGm$zT_lVvBY!YXifmc0ZwJgV)wIklIHwusx_CDzFMC6d+B`<&z=ho1_wQZQG@5T2 zpOA-~nAl3AX zlv}tt+atSsyrO36cEbE(ea>fjNKo{v0dDnl$kgyRa7cJ9sM*GjK?+^<+VC`?o~Oy& zi~;9iEI)TlC}AnE=fv1Wh*)~KX$FDoawW3NaxZbo8$G!Aj(hh zqDQdlNtT->NH+3hp*u0&@?FzeBH_MIZ1*aGE32~|22?VHA`5FJui43v=uMhpc?~WT zP{Ro~pPhQA-yDAa7v={{kEv4hH%>zhuYX}@wpgIOSh7hZ46wx;~v=w4XK zU0l#djV!aS4Bea{IqX`@e*+&buVp%nzs!7ISC1XMD;zAx?|tjj98G`7A^x={z?Y>L zIch3mO}4-|wQ)d_%9U{A$ji_%IfOFn zbu3EHMW(skz2EJegf~>ov-Hx}S*v7iIKMG@`gHoanOrb_yMV(7QZ6I*0Ed_!4LyX8 zILme1UHf2ZeOK^p@;wtz^Dm;PKEG^4eUUR&n&py|IBvhh=MGaKFsF{BK>@;LcV>+` zkL3qX*v+QdEjM=dk8JPi+?O?!>ivL=D811iakEd(pMrqRwC=Pz&u%$2QI65vye znq)I25&tqyH22XhJ$aja{v74KEL8K5-2Hs8E~%@B(12v&Tt2h=H&#m*F}S%yyFSEv zZF_&>lwy2kHucatk0k{|q|&9W*0tD_NKN2rlByIoIsC=Z>vHB#Tw#!-0DdgL0bbDU z!c_NmbeoQBxu}-RqHOJya2E1>MS{Y-#eJ zk&BTBnqH`hX{ku^3?=>DeDtwu+K&J2^$Ro2$8a=MW-G}+jrof`lg(UI&&ij$%s`)q z%nFK?Ps}vI4A12j3-aRIi_S&j=`;jmW$Soi5MJ>>9L1@R`0vHUoMb#xqwuF1Chy3x zeQBgcn#TMBR%lrWZ7WN-deMR!zTpHPU{nmFh83{aRkTiE_fKZk&e~qjm%| znd39IG=!a|x6j>(THC=23Q7u0Ko(r^zN9xTSr*aLVn_8J({JJT&qtu0Y?d=_72wan zur8ch@HHRF>4bhBkby3QsnZ{j*wR>K2Oj#`tgA3_)NeWQU0P}iadaqf_|eaml+tpoPD<`@~YdvYn%W zpxSiG60zC~pT&5#tK3}|z7P^q2@<$qnQXkK`Rni>ei7ih5EG|DLt*?tZCg$*$N^u< zd^_WnMeU8c2Eaz@4w9@SIwXxrqK?1(tLyXLfM!CR90he~B5WL4D#B<6i)!}At+GKO z31oKOZ&=Q$+P)G+Uj3KS+UnDt_vichppNl~((<4Et{tZFYAWirtZ_F3Y=Lx#x{ZY= z=KP%kVGNpt;^FtsGQPijRI<1@u*iF>_J(J^HiOIlPUL3E6qMETlTT9HS|4a zuMmhRlqV#fUCD{X!sGE?g=ci_%Y5EYbop)J;&r5KJMAVx@^$&=Z zv?rNzcJxmMz8mE|n~;$q5R0S;zbYnc^6sr)<-Yb|L~*lT;T6^T;%?T> zi2E@)L`boz4dU))w;q8kj~_U5k~_E7KiTUCgaGCwYGRNbmHoWB6(z0xJTBC6MwDn8 zSy*E~^rgWS&Z%YTen+)qN(#q^fLtaXcj}u7x8N+)4sth~UgpCntgzcoBhkXF0HPp} z^A8jhYf54ds`zP5BoG{l7soosh>E($TC#QE=|U9CeB1DN__z2W@F!jn z+{!Rn%G*!hw^!K*GL`MaL_Bjc7OOfFeJ{3voxCB>Go>26*T7RX!L4;$4*Q*rPBFh%R(rOZS6G-P7aazZ(VyNrR0Yq&j8R zR~5rO9t<_1px~DN{a=8dl~;OAMeRJm0FA;=GC} z_U$dgwe!&NQf%>0ZlFV0hb4u+j>~vCG39-{fj>&WhWD;x;qD&`NKS~`=%a`6Day*K zkLmOQiEk0V-s71@o1MBOoOU3MJdSnNx*e>bi%PgPgLm1$V!l4^f~ zybE+P@F!)!l$4Bo56GmjD1LlUkInLhfcj$Nd4m%0{A zxNmH@PhhoAPL>92ELhwXMtMBn#Ql zrnDhTd2(`CT=a`yGFvduI_sd2$A{nDm-uWw zG7PbCbZ*nDL@p#-&EuR1#F3xzw90R2bDwkfWToa<(3h4hWIShBoZ!8>ISbqrE_~gV zS;%_OY!AV-FDT9N2pivMFA}x5oepMmlXG&3_i4Qu2sLiUlT(*2J)U!TFch=#NiBc3 z-bhl?o+x!Pf>FN=StGRNrn-Pj32IrfEakK@pWAn(K5s(>sh*9DL|7jwLtH} zi8dC0tre$+t{j9l#n{+dd;Xd{mOH3C7gBgMIyPRmK&N(Q8)aM2H1DGmYp4EhAlBSO zFTtqaoRG+xw<6Cv1}BMl4)5Z}!Po#K=j4#UXLpV^>2zkIaolr+tT)b^XU@J~OI5x` z?Z5_dPM)@%gRrc{L1rmAS%k%+>HBk*Vdpf=kldK)7yKW9@4oN`(>`J z!MmOV4{qojI+x*m^4*)pn4HTO&Sf-jw^3BHu~@qza+&h%Z`xM7I~iIhZSwWLc+=Nv zQ|A7#D>|R$^n5C&Zh5vOWa~tR)=S1r&B=vlPafPD*>Y^ApzQ5Uj<2(`IRZ2+Z<}n{ zx6SSNww!>+XF9%rXfgQpOE@$CB2o^qd7sF@(9l)9_U|sGhZ~sslrNvL+dgG4@HCf( zKwLr6`GAFi;eqf$PGIP%Hwgok`r{8nh=$;I4^kxV0Zn#DJw3U;h+W;YE%8KYY`!D| z!-7RS)@dvIXG}WA;Rh5n@%{Sc$ewm!RA_nm`}-`*e8%e^**rN>!idLtTkh)B*2mTW zZCw$u?)9qG)@rx6wHpQKZQDK}an>@X#s)bSrd>r}^FzbW1NVbX)iKV#28>1xZO!YU z<>lLV?Wz*tX%pdKNqKhC(k;GT>8-9;^GofiUYav~v;_OL=Xqo#Bsi>ltu^=DFF~Nk zHciO%zopr0I+}^0!Wb%P)a}%uz`RQnu0IAC<%nndkIJpq={gA6%j;= zf}w|AEP#NJ5Sr3bKoSTr@%`=D=j?T6?>RGPX02KCSI9SH!S~5iuKT(^cT(+b;etn{ zj;j{cp2fV*LQo zKXLA!_X%w+ZM_p(kh5C)XV2)Ku)lP|%;M^`elDv`);lHtyz^?{ov?8CklSqD0fGLv zHA6i^Zr=_F^$85y4i3MrZLGW6et7&kH>{sMo6W+M zSLuOO!)+UGu}eLA?RRV*46of~v;sg|vqnZb*X{1L&b|3H`~7F@?+?=cc6NY>z1`92>2&Anq&qMXU#*^u z*o+^)?AJ{y-^77iL{0ppyM}MFDZ%>{Tg(+74`%BMC|Ns6h zVoce|x8mP#_}UM9yq4~)DKV$P}h`woFiclm4-1xP9HUmP!o;jRjhF^6WG^c$n z|KEr3+NtYTbEkT}iVK&xpD_+=YilWoF4KelpI(k-X8alBe}?*3)zmEOcO<4K+cGk; z+`PQR9|C4$=Y-}`r{NBsUsi@wRrT~$NX11cke;p}_K3#wxMCjcV ziRQyx_0TITLZHw((O(0{1AaH?dV4^A?6-V#Re7W%ma=oTpz*rNON`lJdzk2=0Pm0s zN5Qw`@?=cwWY(P3ATpaFNF6jCA1Q31K42y`FVZJf0I29=bRxqai~UrtEqA9ghtODz z4x4Q>D9HmdwtV8T$_MIHNKtYr!Sk400lD^tP!cw4E{j%sWxtA=P3@pKCSo_(xX>%y zhyHvZMQ9$q@QFFBXZ7hj%ojR4C)A5>1+UbUvq{2cAo>v6Cc;F|S-G<#W~tZ-*YL{q zpFht9B0v$5k(Xb68y!^j@Mk6twJ_qAa6gPxhCXU_Dk>t~f{bB}H0_(Xz1dW`+je)2 zCq^rOid*!&ex3WB!&TMV)rO%F{@B+0qE=*yvP;5+O(Srok5X1gH<0IA_eBZem&mQPqxa?ZX=w4YK9)9;N z=ze0{QZF|z9Q1Fbz z=#7MBv8-~Brd#DGzoCZ;-cpaRo9-JnZw_d|(hVTSenh|lT4+Df@Mg5`j;b^9V%i{E zq~j@C%VIqJjM~7tU-%)eXc3$>_1UeJiKS0bxYM9GnXNSOICLDp%DnzZ1s@LFF#GG% z*ksIp%%Z#(&Wcd^9`(Ztoj}AeEp%CMzRY`eKo=Y#_TTs8L*SO-y2lN}b>30V3@2OCw0P<+R?hg~ zXE4linFEgxxX^ZN+htu#iJVQc_}y}nP+9+cW$>+P8P6$l#n*>h0iVhD-(yx{p3xWg zRdH#wMxI~E<)+;nlAzBFHFCCZ^r^30u%6{;2a^@A*k|evJyuX=tSDVVTx;FlJHNwX zYOnCrkDS`-!_3TY($YmDH(_Dko?@Zp6NWV?BM}+R36>}rWw+t8&If@H*&f|i6<_2U6(M3zZV^YX(Y*;vH%S)ncjp)p2bTXNbd5>q0h zb|Kz1Rc9DSohjGK;dT+h)IUM2GTvt(zVr)TNUQnge^PW9nG7H(jXCzivmzB2M*z(XQfRDud@diH=KLZ3q-+mk}fjfyDR^x~W~fG65#W zcbVm2)s`#qoh|aF3yK;{?JCRwl3i~nN*m4D&sYf-`2;pc@+yWtSwLqG!lidJDIGf# zf7uc$N6a3*<4D&&U5Dnp;VN#T46SO`ZAk!r1s}nkz@)=N4)c;x`&tJ|u#V-*a~aqy z#0ZGUl|6{JS4QhO>gfXb1N7-bEA$fa1*}dJV%g?B_pJgTM)9#0b zy$;sD1BBJDt2X^zTXb&KySjiG-AS31%4KF{oSa!IJrm#xZ7u(a>Z?D=4}-(RD}hmkzY%{FSDS$cu+?VP=UdeN)i!mj*{ZAU}#_v8S{MA?G- z^Ud*(qPTC$0x#H2+BVR<%wvs3jFK(KN3g5cOwh5tvSgIIIc^-)wVbGR>vuMy446xh zFC9CHUaP8Fs>FP3!#|Em6mrPx;(vtiZ&XM780;EK<$ANrTXT6rkZ!NcQz63TcIR|<{O*f zPD$N|^FZAstT;>&lL>8`m6b5t&tEiEg(-5(Unr3Of~D&Z=3Dyi%Qz4c*Cy)a_)sFd zBZ}F}?e4D>a5J2+vzQ~WBup-fw=DTG?EJjNjB8osK|j(R35z(mKrh_Wpk@QI8EU)t znnh%K9B`b`yeRp+zysKWxf35aj+3~qFt5OlC;&onP*6@U-1PMGE3ij}2w~TzgDNA4 z7S3-!anG>QtCmrA z<%Cw{Y$uDt8s53;68apw8phM>QT?4zeRfdmjm4}%I=JABv$ULC`|tH>az}Of-7{V# z$9r+@GQLY$HV2+pp*PK)(cM*v66Y*aQB&7a>K(^@KSgfk^r~~;_IwP}UE8FvIzzX-l29qy%auvT}h&x=`lW=Js9 zo7=)~Sx1{;`=#&Q@O@GZ&3^S0A_n(>Z4NXfzgZuOaM}=X%ND~C-e|P_)FL(ZZ$ckE zaDLJ9ZkRi5z<H6W_)_qq;5Y?H*Oaqs zruv97j}P@a&iB_quUJV1p8c>rzih#=QOfsAzlVR@jSax=ojc2`H+5a7Qu!rGIZQ-N9K zS6qeV($KoWFm5Jz**y(Cwor!ZE zdCbY=a&*#?h};#N&mvnV{;QF8(XV^y6%`c}BW>{P!T0glGq57wr&P~X=tdp)@VQu? zO9%amGGatq=>xT~8QIY1`?do#@3y^T9%IIRffTDrwx6bu6YfIs)_axB;ZUOHU+1H* zCzs!i*#)vz+$WEbhU!Dk1FPA~D9kzTNy7o&gH9s|wX|rB{r;}a<$W^Om9WP#`VXJq zyj#^GoK)k2dCJ#wDX>+}Me_2ENuw&5Yu5ps?1p2_w`K@2r0MdxCA zQcQ-y%urQmc@R^)^T+RexHH$+^4z^o0t@Qc?);`15R)OZYxX%G{;M&Y^e}ypjmJ^W zMfTE1F-1h`;2ZPzG)c){r%nY2F}kC} zMS6<3E7I2aP#MZvQl<&mH{~aiF#8`U3_>Vm%U7K|)`ZdQgx@hxr$BbNM#~q*6t?gT z|1*#06ve37yJs@yuE65{RYDYu7`mDgI5rzIfGvpnPI%ScqJcbPof9NN^6cNWhJu<( zg7z(tDJdqYz!z=!lOGkYHhtU7VXvA!`r~30myY_)!yj+^80r+KTU+_cnC}JCSIK|$ zP9zK^s~~6@MLWn{M)=+M__Dsk=Oyw8K9!!29}VPD4QReFRSCyNN0ea47;Ti=V$mRr zeFq}}KIj56$2jmPU2Xm3S)H}i<=CTWwQc3rV%?To)u6MFPhwDqeKqsU_1Imasy)TD zCpipu6uK}~e)L`}mcl6i1~}{V_-9%^L=+JHm=ng$Wn=W!>1j~TZ`iZpnVed8)pUGj z`LfZ#8lGzVu9q>-F;jXkC(>xG;r_VZU!zAc&9V&`tj!AWe@+UGM^};i%%7dxmn-V1 z8RU<_QF(i#OL-E2MJCcZ68#UpZeOIIpx7@cvP2CmcsZx-8Z#7CE&z%R zfkoU**yItLx8Ly!_}ED7V;Lf(J>NQ}Nh%U)V*dyUo7{siVb@lz8sS7il~8S+ z*5t7eCV*K$7Ws+h{Kz_QU{b^2Og4OHHWq?Af!5UkS;#%&1)ihFOh$-Q#pslO?@~E1 zjy?itr*nul8&GE88{S@zF5}=yQ{Er{|DjjT?nz3n;wNpd&N#hu6itht-_T_k>4*t7 z>`NA%x?e4GD=A{IkJh0&Q?ku7;$7ylG%U7mx-nwTywkn87q}NLCyVPIo{Gg1^fQK~ z74#k#==SdI)M)KCQ<%pcpEVH$9$lpHOLfAJmW$vl<=i%fGAa)GLmrEj=dcGW4`ly@ zGo_ar9m(+_-6FyQVGSq_pCxr8#K_(*rvrKJIu?wwb3pw$alga9h3|=w4PFgLR#$EYAtXtL)XD zlsm1U35)g~f@fd$DAPNpu%5sDXj3jqiQ3;*lN)|6O!V`kw>h(o;9;;>GsFIJyBhvc z@zLAgGgMPaJKFxd*hEucpY5dx4!%miD z&}?eX=Aakg?HBJqW=-}J4z8AF=;8&%#Y8Ri532elt$+x#-$r*~J#1gCMR1~EG;W=m zy_A4;W#^YIsq#P%KGGn0zNq6nNp80(!#*9cC0M{25{vTwqosrvj#R7%>IOURpOVQ6 zt;=_CiVP`lQ!9SEuAYc($D&|&(x~=F@(kF|YE&@#$dFV(9(IkryhX{Cb7;D1mgnW!PJ1N-geBNZk}w@_6W zenU)iuRu`HV(quFdX~J(?_Ila&8R%5;?0x)Xz*N+iGzMT|8!3As*T^(9y5}ZRsBzf zI*Dr;Xf-d-cG!PvF_EOd>V6UoRjoc0m22pOpXh*3*a@5AFhA&Ma4Zsh+@-pmQi9{Z$8iU|9xyf*iZ!(!)Oso+2uK z-VZ6sX5Np(rcfZa_m#>3H*K2^6rko^-Lbci3-VSFfwGzx9!RU) z>GtniX|m^4fGB*=IF~M0BEwCHiomcRRL$>wTxmxTl6qw8rZU9HAD&(u&DFQ>jAPif z4=fMI)Vh#6d7|Tue#IdYASD`gBORd0&^s%@EU@?I+7Byh3MCLgy ze~+QKRN;`Uc@_Dyf_JvBF4zbVxasK#)ezOx$+wnFl~i)Tn(dHcdpW~e8_nP%v zvUE=e$j5KG#w61?I?Ha?S58LN9QNo&f_|)jUiyg^tNK3j`BMlbvetsajnf|>JITDN z9xPYra$Dz7w3i|pc77|_0OZLbebVjAY0yuPelptp*uObsQYv*E{fyiuE8s_A)QUwi zKqWCfvDVz_EqVbd5i};gZH~5N_$WZD42fngXkB!GN+&#zmb1*oEV1#EUgUVd>@g78 zeY$<^cI%B&tUJ3mj2~t{x8>n?6u_<&Dq^)kKVfwp(+fgp}v4+=}%y?Z25q>U)_Kk(d^> zQ_K&y<)bXQAuv%KFEfr+?Dg$mm0Q~Gr03Fk%dxEMXEDan2|!bAmQ73^>qT!NeVE%~ zCqmEf+GOL+9`Ha*I6=7+=^1k+|EH#qIm@F9TGA<=?7}VE5#%MJO%;HuWySq?*RbZ9bq**Mo| zV+*V(noEVph}>*k@^12?q*LlYc~YiYcRImxH!~9>OEZDPf35xX3osuIYC7)gf>|Df zvDeHlUxVJ>2+`QAcHbeNoq5an3r(ze71Y^F*OcBGJS#nScIoAf)FC=<8kPbG07;ia zjYG>)K{EHah5TBkmjfBR2a(U)Jsn%55jPvyDqTJ$;%H*GF{`M#$mQa_QLhj{9%&ZWgQSs z$jBdQ*Wupiu6(n50aL<`lVC3wd^2g0Ljk$VpO+^sIQ@u8tOw9izuSa#YCNiTkz43j z?CtAbk0Lz0K;`e?U-mjO3&tm}1@{GR@Dxy1mxGvbOLgt`sb~SD1R0W(9ET`K)(zjc zZGrUDeXh`bjJn_jhetp|N^e+J)uoqn9<*ch$|0`BVnzjq$U37x5~5cgE^^IdbX?nB z0;ST+LokASzc0h?ywT`1dlcI8wr(yPXt|`Q1dAgovaT3meiZI}$^$+?XrZ_ErBojx z*++*2+TN5)z&=0-70VMf<=Pe#=`Yb;;x)k5I^D0Al`1jkknXo(cRq!hq`UzNE^?e_ zRsHVlMuq~b4@nh!8o-Yg2$uaoaoL(3(J8<5bEmfnb>UkxOVKLT!g{hOgriScV}}GVUTCOB!X==$x%4O36vf+WAJoNr8?fX`T@pJ%l|?l~tP( z%;+k4F4M>Y`%AjRczUyAGhE1HtOQOB6pA#SeHS!LkCYnhu;ytIDrY(2B~Y!nX}!5P zU-&Wsau*%)HeAF_BV9a;_4u(SXX|0Ug-GSgXf_;ZOep`BAuS; z)MK7yoqgv#=_vqf_al;uf^T_#LZ5JkpoB)%gV)iP++Fz^OJ1h7Ql~*pxtSjgYN$p; zDERy#inFBKY;3>(!h9u3mEgIeUzAKhNh~Voj1o>99j`YS*jFR>y4msy;{?xw?rHT%AFD4B3Bl3_10LYo*pD=%5tT z6Yb|4U>*_NH4AQ!1a7-84Jxn9wQzLmfUu1kh%}5J-tK_T*An_gXmW}jIRFW4d$j}= zsc{KYo~?5a@4Pqu`+`Pb{eE6#VCQa6snldt(04*^5P9&s0jiySWje%;^yxZH#|%DC z?@{T^`jMEfw;5N&P-^++?@b!EG}u_*-ci28|~b07AW=bCMt}sO3k74>E09(ma76X^vkIi|}u_9OwD zdkegK`Sgu;@PY(6hvI!#jwo*ovZ2S4UZt>XDp&IyxOs(n`lNcmM9nI8DLZ`1wCP>a zYUCOWO=*{|tqnGKxCQpp7={P0cA9i!lYfx}zwKf>a=o{8%M9aQP3&_=OBB=3)V1Go zoG+eElHPRfWarOnJF3XoRu$>B=G``#_k9(JpQ1EY>mNUq=dkfyg=imOQOJ&2yPnXc z&Ge{DoK z#PfLUwg)Er`7Y$R7b7OWz#Dg# z<;R0~L8aZvD_COXB0WVHcKiqYBkLIY?}|GV?CiEj(>oOra~MFXQ6Ltn=z4)a6~86pMxARF<|+#<=p@OX z9l_54*-%k7`=3{Kw<w_B)WOh369RJ?O zot-`ypM`k6kw5N{0}m03lYuIT5*NhZDQENV@7jk|NYeS4w$SIMJ#LGG* zM_S5EwwG6tMqbWk@{iA8-w7G;?wyA6ACA#+@8gj^%cV`oA7Jv+djPjkPg-q#^ela2 z>T6bavfQ3KI%Vs&n;WFyTQ;cX&h$=JvtSmn;Zh?ZHmWQk{*GK$?jE?kx-)s6kG3bh zFV%5fIuPGr$&VilnnKCU4O4rjtB2*@76*+Gd@wN_(YkO-(?gzYel5INm!YAwcH4nR zX4~Kq*kDmfn+RuF1tKIQSYYaNXrc1r?fBd{JpTZLt80$EaZ8Dt9PXj9l7F2<>Db0E z*#3zklAuZ$_A)F>o=PVGG(gI7$GrvTYNXRQDm7tuFv7%&Vve6sa|gIKsFlY4^5J~j z6`V!uKXZh(x)es)$lElJrUiUg*kN{1lCf0Kd zTM9<-)X5y|%x>xq|Fv7-&*`3b(VRrC8?et~LCx9t(`1naG=b9L9E3KvZ+nAi#2ocz z2W3*wMx8v`ExeDgWUU_jX+JN*C921jN9cDCz*5wi)H4qvEgVIgcNBA2<%^cA;)9{D zjWnjh2JXp-jO!hB2Y_8z3+#iWuZA(3=3-C@9i@r5cjFMH=Bf`lIvl3l>9txZad&CE z@DMVyJBp&eD^(>h(y{G7X^w=H1NJqeWrG%v;T!{hLMZ*!^&O!9_yqCc>V}%0X!U)( zrCiS&OQTSmvEN#EgTj_C(Yr^*$Z4^y!BcT4`tF8e&=s1FX=V8Q6U~qK=<9=@@4vpP zF$9qb#LHqY3*1KKld_(qw9drZ!e+mzh|dg}sOXemSbhFsPN|t=_6^Q@+|D`Sosazf z8wF}a8Q|*bI|7`Qf8a<^0l$WB{O~Yh9Fc$IzEB~~(6UhVlcvXk`fjyW+uiMN;|6w5 zq{*lodHE;R3;QUwl_f8}TtKno(MEgKMUp-r-#DouNsP-S^F#E#5yv zWa=g=gP9yV#Mz2!iO$bGKOP7+EwqE?lPgh91{`x=klcpC_ZoZUI-VBm5pVBl^gw8i z^LYoIZ(mS$WnBV07AwVQw{Oi3Ti&F$VV&0#cnXhOeYZZ9B20~m(5uPy2_qhTq%#(q zDXj_21ikwZT(sVuGN&X0voG%{H0KD7UDg*|$_tx;9=sc{J7Fv1QMUWY;jd+m)sp5*PEh z2H;uA?7&Nx?Yg}4uqqv9kHld0-SE!kJKAV-LlDZfZKSWO;WF$*Utoq<1;W|x`gr;` zhQ#rprFR65ZU0_&8=`!S*Xbia(O)-nAYC!;0y#5BF|GfCK$f%E>;mf&4%(KoO1@tP zwQxOL{|keu0%8&OPi6foLLQVDJ|}X~BF31^e%ayx*+XB%eJ}oTERK~?-V9P((sO|f z1Z~uHLed42^#x|C!kAk_FfI`EmnNME8R_Y36$=O#tm(L24C=b?U7{cGkw07)dv)Cn z>Pu1B%EVD_mPC#Ek{O+dv}or#0pl5VvV%os(`}k2@@=r=-_aWeIZVXU zqC_Bbe&>Xmspx6*^hWTn6dI8J^Z~PDnaen}$-v((77ls&<8-7MLML=In28GZF8YloY!{un&f;WX*}^CG46JHR7qGh}f3+f6zs zUQudbPmUunq@4!$^>~6%j0bp{&CT9`gqon|o8p5z-&9NJ(cXp(V{T-K%)CEvo*6~{ zn%q#QP~NM~UmbWjzYss02GT(BN=FuuCX3!(mTr~CxxQ!j{EiL*#Dv421#f!q4K?|# zgtegEOk}=HGw*#gBEQp&uMQ6M+psb+nRzv4Tk~ajUmB0E`hnk)!$ah0F-?5%QQl_!|7`<6kXRX6u%+5` z)uaM(^;hF0n(IKA8b|VcwXL-S;6xq(F;1>0HuOncB@q?1^pndIZv#P#o=g4OELRWD z&q(Mbcl4qYy5L%9FQio{zDAlh`;dB`%AbV&gdi=5g4sS4u}^M`b;9+zpSmm)`-|I(JC($)Bec1bNwO`n%X529ExYa4C8VMmC*HIiLR&Tt=7{0(m6N`|kIEQV){cE=sxwKN zh@Of26SBSXGUSpt!2EKtzMbE&6r({?pO{wrq<5^vEOZWqT#u^0zchNkCoWfmEn+wW zs9GY!;)3Ye83HdBrNiV);d!Q~N7y5jPq*lh_Be+647$5Z1ZJ%0ZKZxQ-OXW(IlE`7 z;pbfw4rsgv>B&#_^7Fgkc)K=MO05lOr)l-WuaOk@UvB<)b^M4za`=@78+Px5I=&&s zA414dT-B)ubl#PBan(JOCT;$qNtnH4exe2_r30g5{8s?ND0fL$tHo>ma4{OoZJGdO z2Fo4c0-mD%hx|<@8pg_Cwb9~=GSTbgv6s2f5oAo-KaP)}r+MAoMKy{7K|b@f35)Zf zz@-IL>RD^r)LnqS@+s=cTud@5;0P>&GPN2|Z)|M5vc75-7zqCBeb2ESOBTmY3LG8O z`6li7DLEmK?0T9&UeZnueO>gLzuqO|un9EdRU$cN%3y$qzdS^$Fra@${ZIL z(`Nvo#!8#OPkI&q>wr$bskQu8(fO5;yszgMOYiB~-wZH292075SjyjY{6v*tO@bMa z?STIBZbEkCZJDJLn0TKw^}x4TxVAtFvOgc5OK9}5{3PoAqSRFUK~Hg3Kr0Py|E~f=>#u>8XeIPx=zmtZS@3~Mx5c)-eOQJ4cDjR*7P_R)NE;IfZRjvm zBR}p#pb|V4X6|-^lplTc++cy;r~?5c?!3kaRfeVbd4YvPGz|PvK@nUUVL=blC=lPe3~WWeN>v+= z4hmKPGl~VuE_&uA*PjcIqX{X&(iYvhn6`h=BL&Ks68%*h9(|VNpWSGzjlW^p2P7n54yo>t>BNY-gj6<4 ze?O%FjcCs?a32p@o7Rtk8KnrC0Z5N7;W}%0;9kWJ299qbt32}u1I)M`F&Z%QTz<%U z17@mcI{ly>-0@<>?+6N23_+pegMZHnU4Nwc3|AgHdKVAKbu6OFnsd?}8yg}#4^xxZlUb{R(xtof}5>o(O z(|lLK+s#*h`pR66-zqI23hv(tr}txzoG{*5j{etQJ;os|d)@5>M4C)+HKPSy{= z%~0$G*cTlvW5YE10ld@vzNulfC@>1vgZzIio(tPVGzX{?%GttaI}~X z$T$pp}Mn_jKal&?4ddTRl8cAUQ&PILmg1lOg$nq=cR!jvl|2(Uq zWXBFwH~}Ep&9fp^sV@2oeVZxb%GSr?1Uul0v@uczWx_6IFxBm{pQPLaD1oR%FKlu3 zVlJW0&w>nH7Y^KnS#*B9V?n{cBojz*faRI1bXW+(PBgf3o+J!<>(!=4kCeBWX&uCv zpSFeS=VPxPN*3MmI{3?J)`_&#EjDAFIz{bKS$bc6Nuc-fMh9pd!@n6pwuHK68hv1> zZ3~vfVPz@kl3D!qqVDl^AW<;At9^)%zK|wR)%-eK8T0C*ggpl)<_ANVuKor} zHT+ql8}+wr+wbn!$*7$)3w{aQY{uzDi)7_9pzUcc z76+#h_V$UA>nPOW(=DQBF|_LM4*VM5ZFEWAB%k7$-r(8{Y|GpQ79>6?)W@MgiKG4l z0tHKata!jN8Vq|zew&VYx@0JKp%c8v+VqiD(ixY?C+8K{tMfiSN}5yr5+DEY6WgYj z9)twOYsh?DdrIFG8R@)wXUj&Q>?7^mdOk4^E&C&B3YC=HYD~Ev9LRez@s^`^Lj%MNtNC?|&0~ zYH6!o(i zPrjP7+-jC7a~47{Z*T*~hr01NZujnR;=c1qHrv{9j#VmH8 zTbW2s<~a7oa6&bqq-~g!tdny7ORWF6)~)(lavXr65MCj%BVBUM)DC8QIxQ9#ikyj{ z(4NG)K{n|5CW<8Ufk070iPAad?!oJc{VO6ky*{u^^a*s>anKW!WNEz&xBUktB#zGX zwl|9`{;y#X9|BG2H7mk8ELG;vt#yNSG)v@rYXd}3H+ zc7sz^(EXS`;wal-U+2)zh2VWoOnToVW1)GV#cGP{-KyqDQ59A7@xXy{dCYf@WQ0b+ zKq@zXP%-MOS zl=-@p$_Ps2-);U>w0Q~8>-_l-bhi|QK9(X9^!%M>$Ou@51%vhkw(;M2?>0rKOdK>5 zBmZ0UlWC&h)xn7o^cmjEq>U1JoNjWl+Iv>yyhi|iX5V9y-B9kvuAFFbR*J*gdcLM~EPh+bU|%0#VZkab&NWr61{z_3r-z0#^g7|Zt`-5WLu@K=T0Be- zZc?K#KyVi9yuI+H&6&qp<#D&a~AiXLbiCzI4=j)!7zaJ&E!mgmSagV%;FlS*g2g58QNIL`af zE#T=PMyGGxgB^f(QIbfD6R@Y=d=7&v^4(`B%ufeml!H!0%<~;PCWXzDTdR?wTI@Oc zga_|Te=kDgCsxg$zN5i$_m0Ct?P9WJ!sSm_MJ#<$xQ&JFs1C}aO~e(MyN+^PIKq>g zoF2N}OX+3m-|w`W^P;po6-R?AzqmP=SPXZu1;pU!_Y}e(qzL+U1wP;fy|5$MJivu{{m@yI&@0%k(PTQhV_E1y(kW6r21YW=!DZ1&jJ?w`BJN`Je*L zygBK4$r_-`nOJs!Iyonk%-|gZ&7(5}{izg)|oS3aKsI%`4nm zJHH^mzxJ4=Tp_oPYk&;pxNquO7>kr&hCSj1+_j~T9tR1Q7x$4x7SRhRb`w>xX-h_o z5)NXUfVpdY-3jcl?0JLbzs3Q+>bFW1{|9M*kFIrJABGvRXo67L_ltCnds=t?TxlpL zlmdRlSI^`Qx*9a$984>pN^)Skd9n+?v4fm{1%N1AE9%^DKg zQHoJ`cz-<6vGrhXKuBa+<9D*sw$z|1%_(K1+!|(sZ96w>;bR4sv`#Mun;I{RzU1fAOQjHaN z!0L)!p2vJw$G#;GWbbN{xF%E ztd=}qh{B|buyTM*9Oj6ZtyMW66=_9{NzNsBQduTvF^$#7z-kuRi$B+9mIZKia{i_E z;PU@eBf~YA?Fb9twXs<+o{a8Or@ZIDcAXEB>fV<=0Ms-es=R&)Akd=@q{?S@+y-~b zJRxTr1YdDa%$NPhJOsSyZ0+Pg{=(RGO6o+kM956vgSZB*S~PW@&l~vMa+rbG(d?MX zwpM8EpnLN-ax{>amveLful960%KfXS^P7;{o(I4AM$8Dm;_mxlMc31p9vUw^T(&p` zNY5=0la3i!C<_*WUJLYG;`>Mw~&u5X{@ELVVi zp1sig$~EkYSKfZ9gYPnEL0Ke6oew3`8NUi{`xsfC^cYr1Fe=|4>p)AOu;fUuHeKD1JD?K^bBNU}CAH;`5EzY8APzaN7o z47?OWmqfr=Nb*hp-C|K(T{I=8$6P4zK5S(+0`enpDpr}*@Q{0IWP@HklS5#G(+y7I z;-Y!~amF@k?`-rgnCQ(2Q+QPMUWf^TyJEVsz5Z88 z_$r=Ubn9uf$7Av;U1Rl(iH7`Ax8sNI#UYh2i}lhfm1)`GK&P?y&;MnnI%nG@@^6Da zigotf(D`A1}qlz1KH@@qB`=Ap_2%h}dAgvGG z;%fO>@sZp%>OAuy^jH9BCQbJ8yxvBSAN}M(;B#Cm>njABpJHyY$cGgWsvh&FX*2R& z+@Pp|$jvh23)BMn^ijn3#H0EhG#)%CwHhV1ptl8DXY=!QWnkVxGb&gO=ljHZbm$v9 z-e$)hccFRx6qS|-5B6>AHye>N+fJs?fpc%ddNJvD{0Kl@poRS1mY*x*=`65D{L>$- zs^g<}VgW$vKku6mg>hr7hbgf{3%3a>s?BVg>S-ueg4)T#M*xy6 zOiGs>6q^kUhMg5t$xm*c`wKlt&)(y}^Iuz1OhJGf4^kFT8xz>vgAAKtGwIz>)(+(` zpGbP12TVw2*-#}|_QL^|b?qq$P=-BI%fS{9J&jho)mWLM8sO!eI17v*BU6THtVTUk zSI||Q?g!Yu&*cud_rCeQAYhTvz;;0A%C6zD6Xmr;|QEwHkbM468iQpNYm;=WT&i2&nA3;|J%QsJ6EtH zt&SfsKZL|NM3=HY{{7$)4g0^b_ugSmwd=Ysh=NLqfHWx)EU5I}6BPjqMQnf|U5a#2 z2oe%{krENPo&2RkaP^zn}y<9fUbMV zE-+8&;i(w9q<20gVV^Px}NX?n_E zO+%g$W)?i^V)50S8BfuEt}`K<2tj7|coysSeIa~9R)|Be4+w+lCscYUG<0~=57n24 zRNa1&ET@BruN>Rr_u=Osv8s7Up*NAS=la24ycU8-yR!ouKJu_+G;edr#wB6IDi zv!*Zzu+cdlG-4s)E^rxXy1b+OutZnTV$vT;nhlr(U9gaNJ#jYKPF|T!%qH0Lp6Zfm zBK(+g4WB`YE;~aCkve5k(^JwFx`Vg{*{wB~rnx&fF#6(#wM~2>B9G1TmIO%BCO+V2 zy$K*R=rYNVQOp1Bw$Oh?!6`tkGJ+mS{c>=5WGj)YE2peKM3}Krnn7$;i6t#uFKC@8 z4iVPZOVUx1q3NhBaA*{kAQfbV!LKCWjR&ehs^?!)FF5gEUC`O(1Erp{{J8E2hcD&9 zG6ijorw#`P<54IA%dvACQ@6uTg_by`0xFR5&vP=DXdmP%U*gA}6PCVGSO4nhlYl_lA2i6fC@P%1RUwK z?U&)vnrRmOUc zHe+!h_qx8!Z${uR;2{6mi*I2Bsmx%iQN|*}v9ei^l9+g}WhI%?747!To$en3r6>^NI z)7_*!1++lF`wMVVpe>eb=+!y@BbtfDh<$(%1kkK%oeR zNTr~{Y)oIkRRQOBtuOsTkYnQF0AL1egUbrd4&Z)LC}P7{|I}8HQg8e5dhm(Wl>fw9 z(5zG0JtDo$4a=N8jxQ9|*@@0{=G#dft)}0MwBtJANb-;;`EYLcoRqo`YP8PD$sD3P za(~ALI)&6#r&vY3IAKwd74GX=#C3C7E2=*tY5RpVKcGL^Hf;&H0TGaPVnfs;^pfv* ze%r`$tIpiBZcQ2&WeR{v+CGZN#sG3_B&s#yX^rpqCtVV)tn|>Nr4Du7o~i|x`#cyG zLAlmWOpe#^h6mhnX>4#fBCJA>!mIpL-4G{%C%)HC8|J;z`;2o7`WR>|SNLOJl*1C;hAMe#jY{FCU_W z&V)xvn}kvI@c>l>Dh1uQoxm#Z!Z3y%ej7)0g5)_N&QRUHQr#R=HWy4_ib{>P`5EM% z98CJ`k+VSm-x=PXdxGrV%y#1&H?{4jU%+@X9jsY@(Xm1Q$$pRwB}M+YcB2uMw*}fx zZR2*XKcU7eaS><<#+q_bFNdS1Pizq!X{lDbgZgQu{ zJ<7mN=eQ)m4k@Fr1Jk!M`#tD~P7Owwf)_yFbq%ga;7Bf!VqAcu5`Spz_OaS(#~gP# ztetkJu3QmKsDjk)Sx7m)+|3ouC+ApFbqoC-nyo+XesyrhXAlNoNS>I?LsAuJ^x^M= zR%>lpdz=O#wcMhHl}^p)W%@Up3RVKR1l4T)ene(WZaNk73DeXuVxf3DcG1+t1K1a=1$V;{suV3GG>jZ|* zE-lcLib_pz#IN+Dt|}mGRS(Ew#!?^0=e?twuvBG=ZqomgHoBOp>}NCX=s;l5ru$J2 znog8FC(#c7$O<;@z1#r~=#QEjnAKmF#_yqyKD%3t&j+gH# zgWdO)+Krkx+V%e)17ol8Ngmu9aW8bcH=X=<9GKH>*zWNZ_j?l$BRyBmasI^8@8Jf4 zA6TcPC{OyR7gic!SDpANz-Y6`)1qIcbQg9_nC3Tk!=_@vQ%tW$=!MN0m@7M9Zmwg+ zZvUrtaXsf+N<#QP6b=vyyqV&LqM)_TyVCqw;Y{W-QtSEqYO^Ce_!&A4()mZ8y(JSIx>qR#b_mn z;)atr0!L$3itBhZP~Y^>{B=glqN>`8_GX{AShVj>(<pslSkbuT(-_KczBq-i4Z1xCIW0oBb@wJc$MG8(n+v_dvhai4)7V^mg zpM%ZKoYn@Vd`~GoA4GTIINHRiEGc;luGmtN)7M&)Ak&c7UD2k8_J!|b2%}jQGQUT- zN1_CkK_(5q?;JH4aS!+LQ`Memt!Q-X$AX>x1V|47HDRtE^eE^yn?%HP^g4`}WR90y z_YgrVg9+b2EWIUXjvZS~v4)ZnytC1GAwYEB#90b|UP$nlMBTz4Y1?WbMt{OncJG25B5no7fSdt!3zz_OY8}}-kh>d+ z&!{T4y_jZGrlVpbdzfQV2*4Cx^u0&%R37Rjn{>7~;;0;l3&at&qA=O<3OKm4G>1&* zC}{~59Aa%+WEdpXs0v2vFJMg`wTPr<$<==#|N;iwU$*uyKn|ndOt;cTM{=EG5ovB=|$NbHMWh zF#Zv1v2eqK!2&t?=)J)F_B0=e6#(g+R1ia3fi49TwA|?#Bt`rYB8trEyMAz++i7l~ zM6>_|5zZkuTs>>w*MXg~Y{-gdf0L zTp27!79|4rOc;>a?4FJ$mh1=16$I3VHE@jkh$sN39g8}@+2MC~bz~pV2E{&JPlZ8z zwFuh@qyxN2K81(f*kw=W!7nC)9O+i7hofTb?shlMTZN;w*3zg8&rLdo`#l-zwgI^B zRj!`ToOCLgTs}17bX9p$SEt8}F>Sx~!JBJ%OHQ=9BSJFw+GuMcwzuo;UssPyVnd#+$vWXlt1EHo(q`i#rpT94(c#y) zG3Lf&ha~Q+S!f>AT4h00&BJTgyGw}83*bAW#Y%H|eh2f_kQD)N0@dHjt2tB11ooAi zJ@YLO@SarQ%XE9tC8THZ;UCTS>1R;!qZg#q-vOLTDfkmeT`C7QNmmeY%oZlCv2oOr z%I!n|sa7lv6kzh9F|l#JXIGc}r4mWUOYcc*yPZq1C=($7Z>*MJVSipJp&w}&65tQF zH<)0s7A7nm2C#ZCf|(DXE1H5?h9?x=f_!a#OxTJ8nxdh9tG`c?50qSehzJBQJyV(T zoaw;GnN2?XS$-Vu1lS}h7J!SoC7@z(UCz`vf5>WWSV3yMS0ViLqX}W@v*?fcZ{7*L zr6|b)0+L3K`5fCslRxD5x%m@EoYIM{NhY0dMT3m4s4IcI82!}aGxeWqG(QZMu7|+J z#;$9qa1idvAx8fW8?b zccT)osU$LE&tzl~p&`D$H9_Z##T!yC;Tk6tbXYhKL5Hg78q^ZCAO|9KWWWzQ?1MK6 zg7f;+E}VrUX9YdQ#~xT~*hbrdG?n){QDI`dz#we_%6Gas$vAQ`&1k;@wRPpp<*=hRargg*``D8jm-BODNYnY+ zeW7bLCz9m6FIMRNPa4uG4DinSxigehFtvg7#Eq69H`?gIw}COEBW{&(et8F<y0 z0s5o8&`VRc)ik47mRan;2ZYz_{~_aqz2L}Q-EbHF9O@=*pYCoV=={`VOTg8w!K|dj zYwzUxhAgS6Y_=&R9S{Dgu1c%gIT09r)GDcapzQYSCu)1PjPG=ho1z0oLn#MXf+vWK z&vM5v@SL%4PG2Fe2ib+!Jkn4pDwDK)KsTNnNKz+Z0iW*Y+y0;Tb{$qDpHC5`zU5Gs zxrx}cqFL&`$3B7F*Fk)~J#a3eLQNzayyi20v#blWU4z*1Yx&?xFiFU85RCDg0Bm%O z@0H2On3&Cx)$0@C+=cwmmEx|`W_Y13zb^j0x)uWd>9B|(JtMg{ z>`YT1>d9|)(HoQzbg^W+9vgMxQz^hejt$}uki8mr?g{A(!Pu)8f+mwh&@qE5wNQ=9 zIWDjk+7MqT33ukyq*wzG4z(AEgf5Gp>KfW=7wt08TxcREg)yV;(uLx7reWuu$XB~d z93~*`*v_=ufNVZl=*EU9FfILG3+X3a_ny&EIRUe5`VT_-R}DtpKKnsm?!Q^b9OmGX z1Op}cAFle-X}D`_l0cWXG%QanW*r#Iho&ct^(Y*E|56v}kiX@5=MVr3Q%KGVQgkWY zdXc6v85)$2V&0^C)smO(@F?5fM2GbvPSS7)5_SFF2g(}WwG7b_BpT#$MMFig|#}uK4wY4Era3FJ~(5L7QUx$74;_9jV!12GpB;67~b)I%z-=5}deqGbiCi z9e?P!-e=Jxjn1Y3#OR9dWZ2Cs;<-q48!O{tZicIY{Z|?Lxk*?r8%^#Csurpw9qkiGEty+RY~o8uSlY zAx{tri70hpV>jv8kgz6UQg7(aIW#MXGP)anm-vw;ktN}}@lA=Gw8luwRnpb0kFOR4 zRRQ~Cmgty%A9qH!2x&;)wDGCh>-};SD^&-5ylPj58ww8OY2o{SS5XNSZ?Qh{EfJ67 zchN9DF8k7HQ4RGMc;);M&kF-hd(45jC3GIpnnWy~MfIGrdPYIEiB-E|^F|!IW^etJlWo z!{SNq2PRaNlwu7vb3Fs%&H?>~CjGCqkPr7Eg#=c1kj z6Fw-MJf=;`7;jm(M6*s=G72h7bbvXs1_dqPNgPzF!!pDRbo1!h27W=cs}P z#Qcv5!9PwP%LKsX5nl*C+V0)PhsVvVZ2chDDWcm!F_lx#mjE8Ufh`Hq2jeA+#*5rj zL7&Ml2sKB14b0ES80BCp*qn86Ih5; z?%)(N5Y+6!zlcg7j_MWMi>2@g^Y_ZXpr*?SWN6;hLR-RNL@>0((D@3y3?JgV+ z_7F1{ZD6U~E=8wxya)De(9I=ni`^JCeU zp|A57D0#+w$%gDDt;jJnKkk-4mxM}y@IIpYCv zL(bE7>4HVjS{istBTgSJ0SNP=P~N{95n7PH^@1DX0qB>`VP4yZ`$R5Z2E3|M)!=N7 z+ERmM0912{gr#!B9P}ZFuFd{uLa|t4#x%eN+|&#~oR?^4*WKO0xd7Oa3LEt22b2-F zAx*ErEYIvBFJ7EFQi+(POLcQLDggebC?WeT02eTQR-&fC=piK>%jwZb<~_q&gBaUB znY#zBilHoVf!jz@Zjh#CVQ|-{fibs``}ccB24cs@ZNJ@7Q>DaPimqH!!Cmw5JP`9Y z-laShL`eY7MOSU>XerM@YF_E7Jhs(yEV8fF1pAJ>^&1)nPwIQD zV75O4ei9F>cMe}@&?aL#sM|N140DteJ;B--K_vj0V? zj>+m533>Ln+j3-35HEYLtNO@D_3C-2RVq7RxNtE)SeBvFb8>$XH`LfR7@|aZfac3s z*0?bK(W7tT=z_GIVf%{*Z3|o5nKujEX}&C{O>dg#c#)r$Q#88l4uRPu0wYlZbkk>N z>g$IO&GL{^azRaJ7Zkxd?eY8jPFmd!b4I4loEx!`rP>3nyFct3v^K!LktZhonOM2h zbZ@+pG;l%U#*~wVy7Drbfcx&3F(lojqLtc^T`Ksz+w9{=Y;aQj@*&Y&s{eUj#H$<5 z#QDZ|7-6pDq>l)Jw-M(lwmkJZ{+n0qcyqYt9#|reLEa|Re`rw{@ekQQE_Y+(s^sSL z^po>Bn+3W|$L3*^7XpTtTKSzbU2&)Ux98`V0#6@X>Mg`V^_s9B{uJigW_b6`AU}>x zfO>iU(tQngSj|o7-P2cTtBh2;)~yk?^=7jtli`V=AAszz?GsdBeixWXfxZRb{cyTZ zK*s5)1mpBRIM@Enz*prL2~ta;#(k6!XM4(|YT)h>Lk^|%>Eg&#BcHpT3%UL6gcf64 zNdMqrH4UZoO(TDW84hfeR_I#NYv7rNq}SR7#PVl|lW6Q0lb#!dv7 zuZ5%^v%d5l{^MWmWtvbo);#pk>12@b>Q$cp^cCh;s&(Shd>Ct6v7Wu^V#O^7bKe{+@^Jv)HmiurK#9-R+z9zblw@j4g0PMNK9h3h7abKn5xpMLCB{QG32eG3YI&v8= zf|(-dvgOO@RT<+5I}G#al&O5B*8IS5Y2_7(Q>*)ZPG3-K(CdiP+gSZ$K=r=G=iWZH zI}M;x9q=wB%?mFjO;0Pr9sCZmJM7N^w-s*j4sk_MYY!B4NUU~H9Qkygt7u1~@*aPK zfAbLn$ZY?2gDL8HD}}G46d^ET2!LQW=nva_Mwsz}-F;q+epjVQi1aB7*aoka95q%w zN9kwl{?hqHru&Nb%PfP8rxF3HwWNI-uJlGq)@*t;<($sL9Ti@*6?uozEaUfcFd`S& z&ja6$cDOr!pp5m?^E2aUWOOesX|}RTxs}_s$L7Ib21TnZAwl+B>lW#3YZq-`u9!`Z zY#phSNA!!pWS>l#r2cKKcMY6FCGL8Bt5RzPMu%~c%{L4X)%$+0!H-i8=mNmgsFsAP zpTnXwauW%@MoS|pZCXu9f)7*7*B1Vz!=gW9PJ`qkp#GuLe%0J`BOR8JY>Rrk zt#+UZ`OzP#DL0Y3z<+i*%`Y>O%Khx*``SirU=ZI*JZT|e5;5^iWb0z?)4*Nk|5gMPD5=Lh|Rd1{H3eNldaU*$A{c>r#IL~iw?o$g#Irm z_Wv5WlI9WsHvdwWiQ=OWy&tHqOox55ej4(+#NH)(0WGSo_4h@Q$)Ry?oOFr)^Tt;` zRbd6Xbv+lYcNt3CeM+K@`moz5Jl1CC z>Qi}=5`A*o?jQG^<$qDZJ$GSC{?E%Q9bB8<)sJ#ym#j`-+ZX%;`;$;1e$``+zK%0O`9y@>z z+5fYE0iLkK%zF~QgHrxyg!epz@K2E+PO*Zd8;v^1P?B|%(Q^v#;(cBc)lCzvx=ReC z55WNK$lg-GTjwTavzx%?xM1+`Pa3!2>Vgz^LjWIer(lU^T?XBBlzN+Hc6NEnKc^5; z%nbzE{8c@ZIOwE+Vm>}7az4OnvY`(?*ms z#Ps4~RLY^LDoc#fxX&?2;1$opQN;w)2UAa!e4m#6ec%TM=2H<&Spw4#R4!`yQaj#!#a(6|D^fXD_$zB@NhC? zmG?k!=Faq1+&RcD|Gz>orN`oxKG=;M2TKC#?OZ!3fIUAZv5Q^zmzw>5kIn!HhtF8e z>ZK|^**@Snhh*z+BYqO^-eBI@LKTNAz+EoJU=u;rP~Y0qfVYgg z?!SOKpFfMBznVBgq&|Zuk`&vq%7C)P*jx%M*NlD5Fjia7X)@A2BmwFT{z=nrTX34s zFdTRZ2D*fE?+RW)^(lJ+EZs-{FaiL<=K3s!D_~u*h%?wc3OG(2*q*bshDB*{9bZDt zjFY1(U+tq`7e^Ga&fBe7r0+b?8>wLMQ;!52O>Y6ggtM|osGyaWwjh@e9D_epekzmC z_lEBpx5@W^k+OPLxZZm!?YOW;o#alQD%go-{&}2Tyiol_VDR~XCZiG{Y|HeD62!$M zovd_iDC!{9{x}Z%)m57GtPq~K`cQq&)OS3*#i&g8UD(8LIEFy`9XV5;8VMtoelbD_+Ebi zjk|Ysaeo>x2T>|hLASC79eGguz~rZCS`!TcIWyQ8Y2W!EQqe;Bsr|@(ARrg(0HJU} zI_{|*+8Yj`+Hlc__rq1++jWpqM7l5jKAQcwm+ptK=APSZivp-6+{DVqs3*0)wCey6 z6PWcJpf>CP=A#v%B_PTKp=Ej=0YpQz0G?6=AC5y_+6KuhAvI|>x#tuKNHZw9B-It7 zb$I>8ob9|!rWIj(CB~%NE*>}ktVEXFQ8Ahy@$V}oMMdG9^wQ66iw(eX9TgD-%5Ady+S;AOMS^O41Sp*MR=)@guE z(|wx#SnI%i#lc@=+TS$1Pk?*!M*`mzx|^*jp|jxc4P5|O9hRxFI}RQdZ5Q(m5GORu z)SJbiPHTbn`p+W;@r0_>ER3sx0Nz?gy-BPv`qj@(OL*g8_n@@Px=O%%#-rVy)7EGb~g;{WOz zq5FFi!cB|8fdC?n?m{AN0r?_e?%52(Frq^n7RXbB97+d9IwnyGhvBC^>-JvxN6^{w zkxdolE?}L|Un(DaikP;@+>K6TUTDj+@ecS_^2x#Hh3>T}f$^|Mcfvx_c|#Vb$pw$3 z*xcn8ZpBZ`^Ra&m1KS5db~7G~biz%yWlVk{X{LCnwTeLYq3$H*Z02uVg@g;Fhuw1r zftT`skJ*ZND-vTJuylwr`{r?t_@c+l;{TE{L zfTy7E_Wud9N-|J7CaKKj^V8=M4;R9TyTQ_Z2#)JzdIdo2?vah3FTAf?DT>UYvE83% z%U=XiEpM&ub~;5WJp_JXv7!X|5L>ff=p?w$?)r9w_bWbdvoMj+Qob8vnudNH_~S0f zF&79Iggoj`@LDxL?y_Gy?YnY$R1j}z-GwJ#N4M)Ncs{8bjbRjuhk13$Oq9TAtKJe&T47hWOY|Gyv;n_wIF3;vRaQudkBE z^3FQls$}Pd6vFEf5MXkeIwub~isS;zVT}&QqYO4*KkfN%0s{cs2{F6JDBi!L2k_v!Xp0SwPQo+;zL&R`w<8ylNs7^jfQ0*!DO*2mQG(7I!J-pd^a?@!pJrV;4D3WSa7O^__DBD_lCwL}L{$7c z=%bN-N>!d35IdFd#UUQYwM*5I=7%5@=n%G|h%begD@t^~o_fN_9o@Wr*e+Q1eakch zkDKiQKYFiw1syGhwsB_H1T^#WZo|OEUvv&U_9hS4cG~T=gqBW?(kF6WM_Na1+>Pk(vU&ZYvNRa^SnA;CJb}mDUyp zl5iXa2~X{;!%-MOrwCDQwu(npD}*tQq6D8pyM5lW0;ToC|Es9q`OUVw7oGv_-R0t7?zYjb7fQO zfuP&O&iF@^Gsqsl?~ZXEtdAkSL{F@YRGQ|74u%xEExn#dI=WA!JLq$z_r zDC%@RM{Mx}nm-UpNZm&j-Zq($gaJ$W-gqIupPC*SVl-iEZcB#Xv|Qe%4>>(kI5#kD z=qqeZ=c7qZMPIJp+BuJioa3=f6gp47w6!-*x04RQeWbvw)wvh9+#CVD6=6GdxkY%W z#48o`aLZD@yX5EQ5s>Jz<^P$W$ML~HLdSCm?)c5#flpnI@AAA0&<8dUc`A~F|vDQMQ8 z03QLmOJ#|%eBi5(+l)GZ$YJPJ6M7LTB{>GGe>Wd^5wWapXKugfUH@T}zz5M@ked#o^sGx+hGVK_4j4(X%fXnzZsX(qL z_FPq84D_OE5O&lZ-M2~;At9nI@0zVz>+-3e*1pVjKC{{WE5mJB+zghG-2*yn-cuKNsAGi+a9co@^rDm#GVX&8P^IyS7X6b@2 z734J}B(Ey9>kmKCX$&Wpfu!T>cqd4>xw^xM#eQ%k7zhnMIQ?|@ z3BO%;EzeR?2~K?A6W}2>Nbm)Kz+ZWx4s>m+BwbBI^b^MAMKw7~s|S_w&9w2u_*QX2 zx)Td~{p^Yn3Cqh0X1hbk6)Hw(`KQ_x~_$zTb>U7H)8u1jaTH-R7vekXd`E?)_Gp!S=@l*FQ0`v+`hpJY|B;qj|@rbh@Nw6F|N}{RYcRr6a>ueGZg> z{kMZ&W?_E=-lzmwqDA2N9e-MQhaS3faW8GS-|sLm@cb{inY}MxffsvU`iZ@HDJ>}q zC^dlHbhKTT5DSp+{E(>)+N+?9{Ci^MV}Ks%Fn-|hpT^Ej2ub~<+L-%8&d(Hb(*Z}p zKQL`%6&@7uNqn_AWZT3!|4%b*fT$NRRSrl{+}ayhw-*Li&9ytknjHI^9+~Q933&iS z{>Vp=Sj*O>&I3VzgcPHdX-{YM+WqxGWJHgQW$1fSizyD$2pX}^!hD9e= zx{WW~wc`(g{_$HEUp#RCDw<_HT4eAy$9f|=KWKu#F4^Z*YWe~ zkSm}6=70N4|9id?2MT!)xu2iauQPu$lD%e#8LOQ$H2n1q;QJ=g!{cqvIf93Blrg0# zjNGe>u7COYi{Gz>h-UQ{y|68Dy6bt+$!Q(K#9}BjkfS4ge|wC3`e_=vimvY0!8R_ZmD`tkM@9-o5Bzb87u9aR z`Iu7HhIrAbuC8>%QV}U}|NfeS=G#B6;?3*p*65r4G+kqgMSC{dwCJxN;??2`b>*R0 z+WNqkKYseu_x#JB?BqN=9kUD8aq236y|ho#k84xDK)@=Dm6;gBzd6M_pbOB~C4V_; zQQqCZxl#Z8SB&TC$`xNzW%R87^3m%>s1|D|S9}r~($tPns|jjsVAhLn*KT)9E;5=U z2ZJZH8-&L?U;S|{eb>I&#ciFx8o=pzC?{pTuo-6WEL^9j#^p2dfNi$BfSN_=oS_(+ zV?)t(66MPi@q~PBLsM-o&Sc1eig9Xi*Xh6fWfQPTN0M=cxs`@)l$suU4NzwelJ*)3 z%7%^Ab8~d%#g<{l(ub+Xi($JXXzJ!+r+_+YDS&Ef^SV87#XcY`cDI?Hxnw zjtf^gPItfcjO9BdOitZ4n4@CcpGg(HNmo<(<8in%>~_=3c|LHGxnLAiT912z<#94B zhA`eb)fhvUEuj&d$j!s@RZcPp_^ct9+H%uk{YuSXos)RryE<+aFhf94Av3|s46=V@ zM#R&mMq-mryZJ5F2s@$wBKyW6>u6l=&i-83wks*Y;rC0SLtnU4-rnxw?xY%79m>go z@+>#?OGbVd4RYw}H-9&#o!C`lSmsfcTy{&REW}M`BTpr9yhZ_AmVi|p9DVi8<%tiB zyL3j#vUXEs@a{}+>40wB5T{V{+J-TlgkI`OY^|t4#QNOw-Gd0AhgKn%0vE+T%;l+Z zT-q1`Ve{_tF(wUO5~>XJs7S*?YrhVI3_^|2MBIW8QrJTs^lV%wY)?l9kz^!}DlcF< z=Z1FDe(Xrf{r-7*(?41PP(I3)yTtU4sg(Ix7Yr%Kq`T*e(bBj-&@xz3gp-{_;8=W;{ zz74_j+s2|8^jW{g;+nAVJ(`Q=*h%-DZUg3=sqWob@v04@39JD0^X>@*d4cp)Lp-)_ zZ6xuJXI?-}PF=anq?0ZhOD++5-`rgWSsbnv)hjnt?6G0h*i?2BEGm0Cs5YE%?9;lY zYvcDh@zE$=>*nM}2hUNhxMKnAiv3l^Di1^~)k8SgHO8X#LAr(H@l={;XOA3p6{(@2 z6pO!ScVF7}9t_Q-Xyhh%KpCvHWRC%SVZmp?m*|zU%z^j`$G0fQs_{sXx~p30v?|4a0g7%l;vJ{$j#)FSn^Q*;}XxK(DsV{vdE$ntw84f=}NLlD% zQ6^~Y?H|j^z0-Y;NBU^RB{&*ft%7^wX}!l7wdnTU^48_CBXf3NBX2q#Q5hU;kzKll za_!oY+m5NQe^u6|ky+(bes5FJWpnch`XwkqsI!IC*<3ns#`Plv53No*9ZI}2+BbIz z=YVRwdSfHj>{S=W$(DYqcIC;Z%<5J9wd$_#mBe(gZCnYQsXgkuY3K=FYOV#MS_=!- zj@B;Teo1(>RVL093eB_p{B?@HHf8dCd<9*~ZaP9t= z-ABDvKJzeF7nvBduGiEykZq)N=bIiEr;ecYorxF?hP|XM6J65$!3Qn~M#BVR3bqAp z*2az0Dk5_+zMC5L$rPq$gcd547eWTR5*qAd*6n-AX3aZH^cbu!#HaPqm}uFjdJVx( z%kAGZCX&F2X)KjdveGgJ3^(0YWMyypoiGi>^pPK+HFsUQsUuNCP^NWhF(Y$uup@}o zd2=|qP-xP1prkQ<+juc#lt>;xGI!}ZZE4e{uG(QOAmTfem#tn9W_&MgKTFP{6A)?ESY*+A^%VM-z zL|;V^-;;`Kv7R6s=a#lLAB=KI-Y>clVlV&1S*Y3&6>(pFOVq zs+OdmxR<3=BbyI<*C9u!LG|AjoQU8|B`3ASVxM>5Anw9?7)!@}4SZITiLs9pzse}p ziu>LmCNFnJ+XwbMxe?>x!t>1>Y#DD5tLp*h?~4af2LxrCzGfxK_0cQw4|Z^vGcwx| zvzbF2gw9!sDX3fJHoE@P(VCtBz-S!9>RTjoVenu5BSyKL7-u2biPY~!#R zJ`Byf4*r^0++>Cv9bC*jMx_koH+nkm zUk9)2!k2S!lvw9JZYusQBz)z4el#(E{aWpG?eD*FSkS4$PjojorLDBS<;fe=N(ymcPVE@zJ=Pr&g|QV?`7u~j-ZIbg!~Ksr~V zBXMbf5CW}Y@u~LKgKT`yn0#K1@t|OEp<)?a63H30bU7HYmiJx#B$ir&qYE>sKr-R# z_gMmf?0M_7z6nhlKr@doj?cnq(>dVS=2?)_`aKK$!~|S)Lwt4RM85@d|H}RE8Gg3` z@4obH7bmnp@Ji;Gj zKA*(h^6Ct-E++5oPHDld1XuBpWB1uBO+6ir#fR*!s(-pk^iJ{`{p2n?Xas6Zw~}^b z)qZ7#B^n?Ut4%dWZDLuCQ2Ck1dQ?2EFHJe+2p3qhnO}*^iyK<19zp{ z02-2wN7iKvAB~)D^oNbb%gERBj+7q6A!Z1~pu=xI4UNjEGOX=Tc4Lea@c9mfmO|Io z*e36Kp-PBq|KO;2^ws2feYGU~wn8ZPg!OITQPGKbifz3eVqo^iY;GJIW5$kT2h{`H z1$P&cHl^1-F;?}7*DFgf>`}Fz!Hi$A3D)x#3zjwY3G^qO87*^H5DRVRC#8d+9N5{)x7`gF0vIAC z)OH`g#*%y#7V5D~#b|p_vOl@vJ?voWJnr1z&5h)nXFM1@%wW12by^RHA;hX-kW?Nx zJwd~1A+edXVOG0GLHCI?)WvMOeTV$jO#Ol6M4IJ0=29AUY{NE}hV#LO6sTyR9VoeI z%{^G!j*xFJhNJAh=P{n|HNWq?imHoRvF|dv7d%G8Mb3tLa;;-rTs&b_Wf9^Sz)c7V z7$D@8ui!9Yu=F^vkN3OvHTNVI=9;Vhip`rR#j}K~JobYd7Qg{V<4b(0w3KGxX5r zPM`+H%gBS#smoWgJqLuEqg-<`XY!i0F^4GR2L1FxY_en5yc{AYsd%ysr^!9eT|2BR zcK5Oq#i7!EEGB+aqGnc*hPWkOhs}+8xj4HFDBwxu1##H5tsnstGp|~934p6vQO(_- zj?dk!6)m6*sNCiMwaJ|~JKHyz-1#AzJ{W>fShj`^54I#Ws0zl91a>zxmV+??s4DhP z+dNz=>Hv%*Da|^-#6x;R$tfwReUxENyZ?Pxr_G=x30$QS=s6UTUnfZH#<$v!lkN!8T+7;I8R z1O1WP9=3N zTVM_M(On*p0a@FJNQCQIJz@|xyK;|FUZqGd6;y@41Z~E>|17i#sb$l566_D|qL!Sy zKepKX^){ugDmxzf+&-4FDPdhM;W5u1uxb4udg^dya0v0qF?I`Yd0X_G12SU8F6QlOybL(QggH3thK6#sf6Zy5zlEbyi6;-cb z`?*EKTNC^SD&#D+N>b5o{Rw+yk{hmOGnwTsw%GUIgYeRJ+u9JoYC;YV>cpOzWeP}q zAF0auShKZ8C(klhGhok33zX|P{W5DdR8@MwG`(<)%k(0a_>f75ysuglT+}6=>-0tl z&P-Hs7Z+KAkQiOFU|gDNx=Fq}-!6ctFCz5M2%| zlqp8*;ODvHS-aCqi}Y`{unQYNuJSA=^`@4V2)ieCyz=t&Wp{}xSn%nL4M+GJxiETR zBSK68Y50yK4gY9?yuj&=#dTLEh4$Hq1p*~(e{>b%4id zhG^P)HT{#V{izD8k8#(sf;os)0%|sh0XgclS|qH=oz47e&T@#b3p%v4REe|e9c$;I ziC0|7K5nlTmuHABlfkH0c5xqJbJ9?ZnZz!h`{W$*>&o{nVU%*O&CUkrZvzt=4C$uW zL!wpomW$qtgCacXS)VlWsb4dam`LZ5=BnvzD1HE1e{kaSnl)_UjXC^>46c>;I<)Ee zuZm=SZ{NqQQ%%jAIk72u)=E_&!l8vamo)-P@62A5wHqC&S{Rs{Eme zGTydf1rXR#7j<>{x+L(skt#OP%4I_z)EOTlK+$G$dEP>^>TwD>aMC{&ICB&GS7@N| zbqtDdNdwhprlJD)a|d2v6o+YHMqZLU5SZYd^-on>=}Vov?j5kMNS3ntG!2{Y<2kdE zoZ~n2U8ig#!-BY-Vx_rmg=%c_1b_XZK7?3Ic$pV)f_+htw%8{$Idg0Es?qX}7UPEi zGt3pe8e8S`aVy7u2ai9d_6>|+3G#VS=i$BghEra#!-_x%w23jHMuw04u8;Ryz{j(11@Ab=^$y{sSFp8st zot^XGMu8wejfV_ST+}b@^65AiAX)1)a#+HqytpjobrMr#wmzIyb~wc6TWp{M!UsIO zGl&EW4t}bde6v7)0kR33ct0%|_y4r_oncL_O}kOHAc!C$ARviu6%+*Np+`|<3rO!B zLX$|75^Cb6h)7dFdM^pR2%%SLN|i1kLwNi>>$$R? zS(91w%-r|PTI+!tA{Uw6+B~88f->i$O(w-o>y^(ETr!KP`>BR2nW@Gzd_TdT9_e|I zvRzM@$V?w)4r&^dyAYjTajAvUk9YlMi|knW!n$3oV<$`0k(uGeMw8Piij61vU4f(l z&|HbjDKCQ5dc|kpy5!8ZSmXMOWgJ{~2^ZHQ!zPeIyx?c>>%P6v6Q@Hje>@$tWc9nK zx1bJYgsbdZSg&hWEVFlTfDfwe=Y{^k2}ayp=nUj{%L>vO{?{dg2uaDQep&w8PW=_> zPoi3LxEqFsAf_SV26Y736)=*JP&+wucMLq&P1zGl-M6>+;!-o2nSp~7`WX8*GI}0r z>HSqKUW-C?QX5+k{P2WHyH#X^D0A`j8*1#!tEsqIG!ZJIn-Nau1q>v|{|qvlhR-j9 z1v@mH<*roP5v?7_&Ktn#FdyZ<_8&j)ZTVTUs{8Dn;=+%8+}SO=zTVXDOO!t4Og*qE zA0(KEAy3*vw_P~QBWe^VTsH!SMWmK8l?;U|E2?IyIf>*sc2iFR?FR4%X!&%cPRjG3 zL%?2P%g4Lh-MO=&8Obtx)DtO1^y$X^s>|^{T*A)DLK-ip#HYW9%X#|js#jJo{3eHU zTgF)+$!7kZ%h%({lLg*4NUG2@=U6=o!^yrfHnS~gpR_mXh$ z)|V&npHVPp7@}f9G)pctT)D9jvzGB{TRN%ctuPR*bE?7$b zmRGxN7xcvZ@M_~mzVcMuW?PoMob!p8%0$4{$e}A)P0si9=2puAgFoeck~ayG9)fSe z9oMcKB>W1@dFwiSUs=}|&Uhn|quJ)J5b1~6;U4yc59ogyW+)B6$ZYC<7x9`Rn)-U1 z>*OeF9K`PM)6;L`<#CqRP}%lYg3}kVbgu_YCJOE+gE3gYO})c5m$wxw^!D=`WOV=j zrN4`HTGSFyEcw#{j>#w@ybN)@+WyM4m(hb{*~*Hj8*KwwNrspJi=VH%W&D?u7ZYW> ztzA9%o^cycLP5Zel@*~q9$^kyFO8o(i4Y{qQ79a$gl#R2oQDO2}XlLr6XlUQyl$pi-U5EZD=u>8C2%f zJah*&7;r_SX^-P@V9>c0Q#1QM+~su=RujMuBoAO|c@d}%m!}*^<+j#_Js6Y$J>BQ0mr>;qP z^+3Mdt$RIkd7cgF*+{fU>HXC_Ko#|!J?@_Z^1%PIS?Sav9hT49$^TD0;!3j*+{VG- z;&hEurqvI}^uhX(~Mpn4NuGX}h|T;o6Qkh|6h9Ss6(>scR{(A}q2>XxQSD^lle6_d)z`w+f|on0y!`=cGsb->Bhfj`M#CpP zPx`o4x?3X@`W#N#J|{a}=X?@Syh9mciC|)eQkhx-C+*u%#wDh`U+y5pIi?vumIKlL z7OU}D<>S9CsLMZg`^m@>^_6}Z(3j4T*}a(9opk|<%Za<#enr+!Hy^b*D|w1E0pn7V z$i$?e9A+$cwBO!i?*k)cYRBkO7gDg)jRs93reyw8Pc1-|q57Yp(E8licd4!$h{G>* z8KKPnYaF$>Xqd31%=-%jyZP@y@xKmp4mxwVArMr>pVF=^N{J#l)>HNB4h}-Ht|6m5@ynRyP8*no4!kslYCQF-fpGI;pXHLTm8=l<+GzA+kf}%9H*ZDXRq#mM*sAy|Hl&l zS1nP%!9OOh-(=oh(@cSy`nC5bf?b#f0=6n$e`L`;`Ma^Yj}~mYos&F%G`47ft1%!0 z8|dgNyk=@+yCsPKNq|bL9l-Ie#XOPDf1$MdFiRtj9N;~Vxm?qbi_cU(9 zP*9N4C603Z4wc(ky_&4Qd_P$PN~^HjjO-y$q$$(2OGha&=Epzn(<8+)ydAd>Lm@jx zKPjziJ46H)a>`>jaN`OV_X2;IuycryToz1(X!y?t6aib66-cC=W$_Hv> zNu@>ls2%D)lo1&4llnNEsHn{8EOD07dWc%JhfvtkPl9#a21W*+YG^PY1N%GoHoBJh zP|eK>2RnuG^!eAo z-_FwpzrSoXc0Tapy?6OHulcr(2i$iosC}adGbw2@o^}+_7BmH#!1k?ue0woBRah$C ze-)CwXDB&&>(+yFF^@!(lG2HHSl>QUWWV}42Cp0~=DxJh7ZLrI2&NFpAOPS^efwBA zc~Ch~h^$@LUp|a^%T%vbQ1VdE)&qZ3A}Vkr zkMwFsbon64q&a6|HnlKBHK7QLksmxdbsT2iYQRMV=%D+*FBgp$c7HPS7}*c-P)Hh- z^?ro3rvU&Sk>`#&Pv?YV)7=mgeTfVz8RqihTSFfmuW%QQ9e_^-^viUdEENdJ``oFH z>c(rfYyLiTwm`Yu7bevO%_1W|Q2mK{87IU`NBh037@zft^HiBL27LALdIpIiYI*kG zUrfjnA?YoDVA`^61=ueBmbx$d?9i(%X0gy^#h4ZV(1eU79rVr#>+l5qC@S69P_vrK zaBDS+cDt3t5d6~1a(vx%rYXF#ti~{@8lid8maYTid@}{t-?Q-uXkqy5g zcB{xBS|Dv-EUJDe7qdlXn|3jhH2b<*fX1+|67p^zI{`T1+4Kbo@%OBs3d(E5}# z)iU7B1~Q$~=2V)Q;y^;-xBiP&6!{IYv*1Chs?A75&i*G5xXR*huFTsG^a z%3MRsh)hY`vfF!d`@O)mvAG{Rua>KAB)YukKhg=zVES~KW4QS~`KY~m72)1sk4FSF zK@;2?lhoP2G0s24e^*}z`!9;~t_+oguhG=Up926!HA zX^c6zBx}RFQf>8Qw7MUB;mjBN#~!126(cGh;S9CMxnQ3eb zpd6v&-xB%N4JpkN_ohm<6PYY3H_LIvV~u0!k&pelVh39q1|z(YV}!!e*EA!T2Uq{P ztaKB4HfqX+%}r(Fq^k@edmMfMkey=t5Oi`XBR$LCuiQnk?Zcm7hewp=ymVaCBt_fQ zw0I!TrK~9JroNWNs|Sq=YL%#O%chi}mF%}`qs=8`G0OPxVv#4b1(rtU0IQA%5ob&9 zBacHBssto?b20U~b=KC|X{8o^M0=?W`8*??$dgmEJoPM-X5X}G{FK?+I@Xd7RdqG; zVj=6_zIQZ~Q^UynH4#=BoFrtp~8h7oyeH#fXkKUWV+9kfZ5P#BbxHolbbU?PDs`zjPeBlFTAz0dQt8b{TDfrp2J zi&04mvklOrde~##Kg98G^YFpO);w=jZr$lQWuIoWd~xB6oKWMw6iw%L{k7ZI8Kp-` zqd>BS)h`PM2y^|?R$<2TH1x(wCi+^R3=Z|crs;=qx^f-G=7L&q@-OavgJ@2V-gUI2q5Qs63K^T(SKD==+ z@O<1AoQR+h%y{|~9`r7M1efaD2~thqTXgfvcl(qCX=pVm`bF96M3GyliM|jSZ_z=7 z4gI}nV=y&}SgXC;>F~AnAu&_qV`jAoR9sA73@Rz+Rm86ocB>;Z+tIA9U5!ud({-vc zqt14Hc3sYTwy0PZYfUYTkVvA0h^{sD7e|Pgoh)cQ$%r+mCv%S)ZT=g!U!%{6iP0X* zdU;7=9!$+}r5tww`Gf~|;r{0Cp?f+pY`RBBe4ZnzcY9a>09S!P#y7sLISaX}qu==( zv3Cmcgg)b!bxDfD@mFKYMu=rxsFa6J=y7`b-3w8UE=vhV9_`ruWlz{AmTLe&KCN0g z;El>oq3tnR0@utTUOm$(QwxnZHxV{sjYk$=PFJsox7zd{&2Fw~wp(y0SsaK7`fOX7 zwYk6nk9d@oXaW3fDgJ149yvq7%Gt4excN|b_a$}ty2FQSQ^#;$!j!T^^Rn?}i>l|R zF?{9zyG97oAgr@1r`Om+HwL3iHKylpoPhjt+BNqvp0)XzEJ#18ef3tCn<*^5Ip1D! zLco{ElEmqh-hp2$W0o(CrT9JtA#g9{XN0ssCpdPpf2f6iP_HLE<6}K|^R?Mj>+nua zO4YA$umpm{kjFvClOgoH$pEq{@yCRCgW=_p*dD1`6}(V-?sF631R zu8*W`aI5V2qyn_Q7LD(SbVfh0(8-ff)ya7$A)2KbbpV<|7w<-_%kzwudBy~Cj)=?4 zQ#QJTyX6SeSt@Z$zWNl5)O2BNQ4W(ut#lG6?my`tCG>#S=B!#`Q3{z@G-xa} z`q_QAU!Z-PVN1(x4r`MpZwks`w5||+avD_>yW>D5Z{uL#5O(5^lZ3-$E2#E@iI-|1+V;f+Q-5D z_2jggs`|`rvgE3`;_ZhD`2|R%3aeMfJvlGD%;r0Us#rZ1eXDoE(YQJ!PhcF1guXnIRxmyh&H>P{h+C_ndkUUIP16qfIc- z;sBGHFw0H$G(7QpDO z$F@H{z3a2&&hzF^wmX@Mt$3l_^HEKaB;6xXk^p60z<@aN8x>_@{GOui%I>br2h;9$ zF^^fKU-um+R^1jELgdMXGzyNkbTjW+hL$=`Z2#Wrle19qz-JTe`bS=XzUm9s*u{NQ zlooMdB)_sT<7aRe+X*9e0Wnb*kmoy|Yt<*lWL|ac_IoZJ+p{^6@~4?Kex^%|Q)E9% zE`A_2FXF3&Xd7#f%tw>ba{>2|3DrEz1sW=Rn4JgXZyAacn16eMZo+;b3%mN4ru$Gp zQ~q5(fjtVoqYC`$O~)FepoXWg$=!*)jwQjKuS9{B)j|-KoLe8i<9my6zO8KkpcuQ> z1hq$1{rWaz@1;uvXuWW@L=r#j5lvUlI_L&gu};dhECUdNGh-cE%-UWC{OXnb8i@WM|RnCFmf$P z&OC<^TMkpd_RuAF_P3535#y*je?F#bbkSlY3}V@L@hN=bgXD7-wmYg}*jnY5HKLOl z&?%`STk05wX00>o5me|xR|&O`P1`Tu&^R>k$rsl2X;feQCZ|wspJyiGShzk7*YaO5 ziNF_C&?v7hbt#+!{CcKq1IWC3UfFI%8ISZWI|R$~3Mb_w9(^d|$PC%VRAI7330&Iu;asx0B~o`V%w3C%nn8 zhToHYxPBg(N6sR&LCbgYq0`fz6G|3qK|wqc#Y&*d4i(Cmh?80OiHW1-30o_TTK7Y% z9cD`>lWU!8XIFNM%^x0C&K~)e?c%0j4udRQIGx0l(DGVsc#OFt{amPAC55 z)95*_pT6ZlM-X2$<(*gV!_kf;o&9mtW{<+eONQp*TsUyzqrz=Zc$vjYwN%FLYcGez zF6`Q@QYB{Oenl>9>L*8>FX7&dm`BXk;56DZ1+~Uk35jdb5!hb?8xGERsO6j<)$5n~ zm}Hnssc6Ro{j<*evW7gM3+RUx76LN*|ZCpYE8rL0F=ww_-@b`9CH=IW- zIPHWR=fPPW$)?OcxUU9)0Y25|F9#hC${(xjTyr??so>iE#-DZtkXd-X?!pwQm#y%9 zT+0BPrq&%=!2YABU@;9uT|;adT&a_JUo%nazG4Re+~c6Kkw=&BH==flV`-|cLK$87m zFcA&?!r8^&BYyQyTELs%&ty3B2FITa3&fru&prrVD$SZr#b|&i;|aXj6i12XoAvvEe45{ppORpmi5TH5 z9hgm@WWbTf;?j~#ja@I5!yMyV%ILO$St%~p^8*E?k2)ivX%gb5jS7)`DHynG!aZ=MJ?8NHA9Vbd5`f_kb{mVrfp9=IBRo9%-& zU{v8R95^PMSD{Whpp&XG=CC;fs4=Wu0^XvJY-!&VB{4+Mi_lE%jeQvs!`N&*xa@#T zBbe6y?q0gN@GaKy$IT&nQGW~i%xdBPf}DjA;%4^3kLxUUnk*RSNHs;Z#wCcPS@eLn zifVOW97|4_LC=>Y8k zgoMS?is92h^>-rBnnIO5rI)Ma3S4!TCGoi+eZ&W>J5}$xAJ`LSk;Q?q^MD!#+93XW z_cXn{s>M3{$4h({KN*aoUT|+tRx0DVB4wAklD-Q13sK#U;V~_s@K1UmZ?O2Q zADZ;^^i$YwGVZny4 zF9HNHFDNKjEbXdt!OkY7FA+$ogtsegjDR;mREHhAWBTdk_slFOsFKmhuwJ zU!#&f>4iO4Q`04G%}97{7;aA2Xo!f2?0U=TQp*?jv;{bhX&#wriS{LS^Y*Ew%T3br z=83>yqGDng_hof-GAjsVF{f@%O}VybK5sWC3>|Ms6o#V0`cuFfMn*>J;L4bhPPNvs z$VfeH?U-b+OKDtO+<4pLixtmux)qAY@CFWM`gQ=`TUHNSKHKseo)YO*g_^&F^e}i36SI++y z4MhKZ-1V8l-|S+v>)pfTVXOeDXk`UMpQMS+5E3vz0)GPq2KK3 zI0;{WOWC8LTf{b4{CRbZlkn4MP^ahAU7qet#wZ!h-ue)zIzR$U{lT$RI{Gx4^ z<>jKRr32SOVq)fk|HXDQ`T1|ye0kiiYyY4@6sq_lj>j&LT}dT)>CBqL93R{-Mc?xx%im=Uo5)t2~~MRsaiuNHqO6} zTGL;=$$DROG#I2j`wVC>E`6q7<^#6os52n|QwQn=rG84Ed^oepFPZ=ILjuS~O7FA3 S#)8w?iJmK|KP^?X4E$d@z$5|y literal 0 HcmV?d00001 diff --git a/public/images/guide/templates/0.png b/public/images/guide/templates/0.png deleted file mode 100644 index 93b53680900b6de2faf2f14155670fa4258119da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82123 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�b|Qa->R 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 z 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%0APvaP49!eDUiwqWaXT!zNR~(9^Xf;$L`#xq-?L= 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�AISU)-itk*RG@s%ye2FfXz} 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 diff --git a/public/images/guide/templates/clone-commands.png b/public/images/guide/templates/clone-commands.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3b6d7c58cbd5e506ac485c2f0c3ad5a6f148c3 GIT binary patch literal 44053 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 S#)8w?iJmK|KP^?X4E$d@z$5|y literal 0 HcmV?d00001 diff --git a/public/images/guide/templates/main-view.png b/public/images/guide/templates/main-view.png new file mode 100644 index 0000000000000000000000000000000000000000..e6202376188198d71300d8dc0ffdbe980817e81e GIT binary patch literal 113898 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Ξsrgf6dvcg}J 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 literal 0 HcmV?d00001 diff --git a/public/images/guide/templates/select-wordle.png b/public/images/guide/templates/select-wordle.png new file mode 100644 index 0000000000000000000000000000000000000000..f11cb525826e732cb6a707069ffad747d4a87597 GIT binary patch literal 103848 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 BDun<5 literal 0 HcmV?d00001 From ba1cac3978de3a8494d58b5f8e992c52a22fd5bb Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 17 Aug 2026 14:12:31 +0200 Subject: [PATCH 52/62] max file size for $ImageLoadFromURL --- content/docs/(functions)/Image/imageLoadFromURL.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/docs/(functions)/Image/imageLoadFromURL.mdx b/content/docs/(functions)/Image/imageLoadFromURL.mdx index dfac0516..85ec0fea 100644 --- a/content/docs/(functions)/Image/imageLoadFromURL.mdx +++ b/content/docs/(functions)/Image/imageLoadFromURL.mdx @@ -40,6 +40,9 @@ $image[$imageOutput] // Output the resulting image

    3. **`$imageDraw[avatar;0;0;300;300]`**: Draws the image named "avatar" (loaded in the previous step) onto the created image. The coordinates `0;0` specify the top-left corner of where the avatar should be placed, and `300;300` defines the width and height of the drawn image (effectively stretching or shrinking the avatar to fill the entire canvas). 4. **`$image[$imageOutput]`**: Outputs the final image. `$imageOutput` is a special variable that tells the command processor to display the generated image. +** Max file size ** +The image max size is 3MB. + **Key takeaways:** * The `$imageLoadFromURL` function doesn't directly display the image. It loads it into memory for further processing with other `$image...` functions. From 02a925b53f6a6d686465ca89a557ef0a2e0f14d2 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 17 Aug 2026 14:14:47 +0200 Subject: [PATCH 53/62] newTicket use community codes instead --- content/docs/(functions)/Channel/newTicket.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index 10500b1d..aa571ee8 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -32,7 +32,7 @@ This command will: -Take advantage of pre-built ticket system templates! You can find and clone highly customizable button-based ticket systems directly from the [dashboard](https://ccommandbot.com/dashboard). These templates simplify the process of setting up a robust ticket system. +Take advantage of pre-built ticket system! You can find and clone highly customizable button-based ticket systems directly from the [dashboard](https://ccommandbot.com/dashboard). These community commands simplify the process of setting up a robust ticket system. From 96d068a561e3be0663405fc34202be85749313a2 Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 17 Aug 2026 17:06:46 +0200 Subject: [PATCH 54/62] usage depth same for all functions --- content/docs/(functions)/Bot/botCount.mdx | 2 +- content/docs/(functions)/Bot/cacheMember.mdx | 2 +- content/docs/(functions)/Bot/clientID.mdx | 2 +- content/docs/(functions)/Bot/ping.mdx | 2 +- content/docs/(functions)/Bot/ram.mdx | 2 +- content/docs/(functions)/Bot/serverCount.mdx | 2 +- content/docs/(functions)/Bot/uptime.mdx | 2 +- content/docs/(functions)/Channel/channel.mdx | 2 +- content/docs/(functions)/Channel/channelCategoryID.mdx | 2 +- content/docs/(functions)/Channel/channelCount.mdx | 2 +- content/docs/(functions)/Channel/channelExists.mdx | 2 +- content/docs/(functions)/Channel/channelID.mdx | 2 +- content/docs/(functions)/Channel/channelName.mdx | 2 +- content/docs/(functions)/Channel/channelType.mdx | 2 +- content/docs/(functions)/Channel/channelUsed.mdx | 2 +- content/docs/(functions)/Channel/clear.mdx | 2 +- content/docs/(functions)/Channel/closeTicket.mdx | 2 +- content/docs/(functions)/Channel/createChannel.mdx | 2 +- content/docs/(functions)/Channel/deleteChannels.mdx | 2 +- content/docs/(functions)/Channel/editChannel.mdx | 2 +- content/docs/(functions)/Channel/eventChannelID.mdx | 2 +- content/docs/(functions)/Channel/findChannel.mdx | 2 +- content/docs/(functions)/Channel/modifyChannelPerms.mdx | 2 +- content/docs/(functions)/Channel/newTicket.mdx | 2 +- content/docs/(functions)/Channel/useChannel.mdx | 2 +- content/docs/(functions)/Date/creationDate.mdx | 2 +- content/docs/(functions)/Date/dateStamp.mdx | 2 +- content/docs/(functions)/Date/day.mdx | 2 +- content/docs/(functions)/Date/formatDate.mdx | 2 +- content/docs/(functions)/Date/hour.mdx | 2 +- content/docs/(functions)/Date/humanizeMS.mdx | 2 +- content/docs/(functions)/Date/memberJoinedDate.mdx | 2 +- content/docs/(functions)/Date/minute.mdx | 2 +- content/docs/(functions)/Date/month.mdx | 2 +- content/docs/(functions)/Date/parseDate.mdx | 2 +- content/docs/(functions)/Date/second.mdx | 2 +- content/docs/(functions)/Date/timeStamp.mdx | 2 +- content/docs/(functions)/Date/timezone.mdx | 2 +- content/docs/(functions)/Date/year.mdx | 2 +- content/docs/(functions)/Interaction/interactionDelete.mdx | 2 +- content/docs/(functions)/Interaction/interactionEdit.mdx | 2 +- content/docs/(functions)/Interaction/interactionId.mdx | 2 +- content/docs/(functions)/Interaction/interactionReply.mdx | 2 +- content/docs/(functions)/Interaction/modal.mdx | 2 +- content/docs/(functions)/Interaction/modalAnswer.mdx | 2 +- content/docs/(functions)/Interaction/modalID.mdx | 2 +- content/docs/(functions)/Message/addCmdReactions.mdx | 2 +- content/docs/(functions)/Message/addMessageReactions.mdx | 2 +- content/docs/(functions)/Message/addReactions.mdx | 2 +- content/docs/(functions)/Message/channelSendMessage.mdx | 4 ++-- content/docs/(functions)/Message/clearReaction.mdx | 2 +- content/docs/(functions)/Message/clearReactions.mdx | 2 +- content/docs/(functions)/Message/createWebhook.mdx | 2 +- content/docs/(functions)/Message/deleteIn.mdx | 2 +- content/docs/(functions)/Message/deleteMessage.mdx | 2 +- content/docs/(functions)/Message/deleteWebhook.mdx | 2 +- content/docs/(functions)/Message/dm.mdx | 2 +- content/docs/(functions)/Message/editMessage.mdx | 2 +- content/docs/(functions)/Message/forwardMessage.mdx | 2 +- content/docs/(functions)/Message/getCommandOption.mdx | 2 +- content/docs/(functions)/Message/getReactions.mdx | 2 +- content/docs/(functions)/Message/messageAttachment.mdx | 2 +- content/docs/(functions)/Message/messageExists.mdx | 2 +- content/docs/(functions)/Message/messageFlags.mdx | 2 +- content/docs/(functions)/Message/messageID.mdx | 2 +- content/docs/(functions)/Message/messagePublish.mdx | 4 ++-- content/docs/(functions)/Message/messageSlice.mdx | 2 +- content/docs/(functions)/Message/messageType.mdx | 2 +- content/docs/(functions)/Message/messageWebhookID.mdx | 2 +- content/docs/(functions)/Message/modifyWebhook.mdx | 2 +- content/docs/(functions)/Message/msg.mdx | 2 +- content/docs/(functions)/Message/noEscapingMessage.mdx | 2 +- content/docs/(functions)/Message/noMentionMessage.mdx | 2 +- content/docs/(functions)/Message/sendDM.mdx | 2 +- content/docs/(functions)/Message/sendMessage.mdx | 2 +- content/docs/(functions)/Message/sendWebhook.mdx | 2 +- content/docs/(functions)/Message/webhookExists.mdx | 2 +- content/docs/(functions)/Random/random.mdx | 2 +- content/docs/(functions)/Random/randomChannelID.mdx | 2 +- content/docs/(functions)/Random/randomMention.mdx | 2 +- content/docs/(functions)/Random/randomRoleID.mdx | 2 +- content/docs/(functions)/Random/randomString.mdx | 2 +- content/docs/(functions)/Random/randomText.mdx | 2 +- content/docs/(functions)/Random/randomUserID.mdx | 2 +- content/docs/(functions)/Random/resetRandom.mdx | 2 +- content/docs/(functions)/Role/blackListRoleIDs.mdx | 2 +- content/docs/(functions)/Role/colorRole.mdx | 2 +- content/docs/(functions)/Role/createRole.mdx | 2 +- content/docs/(functions)/Role/deleteRoles.mdx | 2 +- content/docs/(functions)/Role/findRole.mdx | 2 +- content/docs/(functions)/Role/getRoleColor.mdx | 2 +- content/docs/(functions)/Role/giveRoles.mdx | 2 +- content/docs/(functions)/Role/guildRoles.mdx | 2 +- content/docs/(functions)/Role/hasRole.mdx | 2 +- content/docs/(functions)/Role/highestRole.mdx | 2 +- content/docs/(functions)/Role/highestServerRole.mdx | 2 +- content/docs/(functions)/Role/lowestRole.mdx | 2 +- content/docs/(functions)/Role/lowestServerRole.mdx | 2 +- content/docs/(functions)/Role/modifyRole.mdx | 2 +- content/docs/(functions)/Role/modifyRolePerms.mdx | 2 +- content/docs/(functions)/Role/role.mdx | 2 +- content/docs/(functions)/Role/roleCount.mdx | 2 +- content/docs/(functions)/Role/roleExists.mdx | 2 +- content/docs/(functions)/Role/roleID.mdx | 2 +- content/docs/(functions)/Role/roleMembersCount.mdx | 2 +- content/docs/(functions)/Role/roleName.mdx | 2 +- content/docs/(functions)/Role/rolePerms.mdx | 2 +- content/docs/(functions)/Role/rolePosition.mdx | 2 +- content/docs/(functions)/Role/setRoles.mdx | 2 +- content/docs/(functions)/Role/takeRoles.mdx | 2 +- content/docs/(functions)/Role/toggleRoles.mdx | 2 +- content/docs/(functions)/Server/addEmoji.mdx | 2 +- content/docs/(functions)/Server/allMembersCount.mdx | 2 +- content/docs/(functions)/Server/guild.mdx | 2 +- content/docs/(functions)/Server/membersCount.mdx | 2 +- content/docs/(functions)/Server/ownerID.mdx | 2 +- content/docs/(functions)/Server/serverBanner.mdx | 2 +- content/docs/(functions)/Server/serverBoostCount.mdx | 2 +- content/docs/(functions)/Server/serverBoostLevel.mdx | 2 +- content/docs/(functions)/Server/serverContentFilter.mdx | 2 +- content/docs/(functions)/Server/serverDescription.mdx | 4 ++-- content/docs/(functions)/Server/serverEmojis.mdx | 2 +- content/docs/(functions)/Server/serverFeatures.mdx | 2 +- content/docs/(functions)/Server/serverIcon.mdx | 2 +- content/docs/(functions)/Server/serverName.mdx | 2 +- content/docs/(functions)/Server/serverRegion.mdx | 2 +- content/docs/(functions)/Server/serverSplash.mdx | 2 +- content/docs/(functions)/Server/serverVerificationLevel.mdx | 2 +- content/docs/(functions)/Server/setGuildIcon.mdx | 2 +- content/docs/(functions)/Server/setGuildName.mdx | 2 +- content/docs/(functions)/Server/systemChannelID.mdx | 2 +- content/docs/(functions)/Text/Components/awaitButton.mdx | 2 +- content/docs/(functions)/Text/Components/disableButton.mdx | 2 +- content/docs/(functions)/Text/Components/editButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButton.mdx | 2 +- content/docs/(functions)/Text/Components/removeButtons.mdx | 2 +- content/docs/(functions)/Text/Components/selectMenu.mdx | 2 +- content/docs/(functions)/Text/Embed/addField.mdx | 2 +- content/docs/(functions)/Text/Embed/addTimestamp.mdx | 2 +- content/docs/(functions)/Text/Embed/author.mdx | 2 +- content/docs/(functions)/Text/Embed/description.mdx | 2 +- content/docs/(functions)/Text/Embed/footer.mdx | 2 +- content/docs/(functions)/Text/Embed/image.mdx | 2 +- content/docs/(functions)/Text/Embed/thumbnail.mdx | 2 +- content/docs/(functions)/Text/Embed/title.mdx | 2 +- content/docs/(functions)/Text/Math/abbreviate.mdx | 2 +- content/docs/(functions)/Text/Math/divide.mdx | 2 +- content/docs/(functions)/Text/Math/math.mdx | 4 ++-- content/docs/(functions)/Text/Math/modulo.mdx | 2 +- content/docs/(functions)/Text/Math/multi.mdx | 2 +- content/docs/(functions)/Text/Math/ordinal.mdx | 2 +- content/docs/(functions)/Text/Math/round.mdx | 2 +- content/docs/(functions)/Text/Math/roundTenth.mdx | 2 +- content/docs/(functions)/Text/Math/sub.mdx | 2 +- content/docs/(functions)/Text/Math/sum.mdx | 2 +- content/docs/(functions)/Text/Math/truncate.mdx | 2 +- content/docs/(functions)/Text/Object/getObject.mdx | 2 +- content/docs/(functions)/Text/Object/objectCreate.mdx | 2 +- content/docs/(functions)/Text/Object/objectGet.mdx | 2 +- content/docs/(functions)/Text/Object/objectSet.mdx | 2 +- content/docs/(functions)/Text/Regex/regexMatch.mdx | 2 +- content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx | 2 +- content/docs/(functions)/Text/channelNSFW.mdx | 2 +- content/docs/(functions)/Text/charCount.mdx | 2 +- content/docs/(functions)/Text/disableMentions.mdx | 2 +- content/docs/(functions)/Text/isandhas/isBoosting.mdx | 2 +- content/docs/(functions)/Text/isandhas/isBot.mdx | 2 +- content/docs/(functions)/Text/isandhas/isDeafened.mdx | 2 +- content/docs/(functions)/Text/isandhas/isEmoji.mdx | 2 +- content/docs/(functions)/Text/isandhas/isHoisted.mdx | 2 +- content/docs/(functions)/Text/isandhas/isManaged.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMentionable.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMentioned.mdx | 2 +- content/docs/(functions)/Text/isandhas/isMuted.mdx | 2 +- content/docs/(functions)/Text/isandhas/isNumber.mdx | 2 +- content/docs/(functions)/Text/isandhas/isTicket.mdx | 2 +- content/docs/(functions)/Text/isandhas/isValidHex.mdx | 2 +- content/docs/(functions)/Text/isandhas/isValidInvite.mdx | 2 +- content/docs/(functions)/Text/isandhas/isValidLink.mdx | 2 +- content/docs/(functions)/Text/isandhas/isValidObject.mdx | 2 +- content/docs/(functions)/Text/mentionedChannels.mdx | 2 +- content/docs/(functions)/Text/mentionedRoles.mdx | 2 +- content/docs/(functions)/Text/noMentionMessage.mdx | 2 +- content/docs/(functions)/Text/only/onlyBotPerms.mdx | 2 +- content/docs/(functions)/Text/only/onlyForCategories.mdx | 2 +- content/docs/(functions)/Text/only/onlyForIDs.mdx | 2 +- content/docs/(functions)/Text/only/onlyForRoles.mdx | 2 +- content/docs/(functions)/Text/only/onlyIf.mdx | 2 +- content/docs/(functions)/Text/only/onlyNSFW.mdx | 2 +- content/docs/(functions)/Text/only/onlyPerms.mdx | 2 +- content/docs/(functions)/Text/repeatMessage.mdx | 2 +- content/docs/(functions)/Text/replaceText.mdx | 2 +- content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx | 2 +- content/docs/(functions)/Text/textSplit/concatTextSplit.mdx | 2 +- .../docs/(functions)/Text/textSplit/editTextSplitElement.mdx | 2 +- .../docs/(functions)/Text/textSplit/findTextSplitIndex.mdx | 2 +- .../(functions)/Text/textSplit/removeTextSplitElement.mdx | 2 +- content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx | 2 +- content/docs/(functions)/Text/textSplit/splitText.mdx | 2 +- content/docs/(functions)/Text/textSplit/textSplit.mdx | 2 +- content/docs/(functions)/Text/toLocaleUpperCase.mdx | 2 +- content/docs/(functions)/Text/toLowercase.mdx | 2 +- content/docs/(functions)/Text/toUppercase.mdx | 2 +- content/docs/(functions)/Threads/createThread.mdx | 2 +- content/docs/(functions)/Threads/deleteThreads.mdx | 2 +- content/docs/(functions)/Threads/editThread.mdx | 2 +- content/docs/(functions)/Threads/getThreads.mdx | 2 +- content/docs/(functions)/Threads/joinThreads.mdx | 2 +- content/docs/(functions)/Threads/leaveThreads.mdx | 2 +- content/docs/(functions)/Threads/thread.mdx | 2 +- content/docs/(functions)/Useful/callFunction.mdx | 2 +- content/docs/(functions)/Useful/function.mdx | 2 +- content/docs/(functions)/Useful/redirectErrors.mdx | 2 +- content/docs/(functions)/Useful/seq.mdx | 2 +- content/docs/(functions)/Useful/setTimeout.mdx | 2 +- content/docs/(functions)/Useful/spread.mdx | 2 +- content/docs/(functions)/Useful/stop.mdx | 2 +- content/docs/(functions)/Useful/suppressErrors.mdx | 2 +- content/docs/(functions)/Useful/wait.mdx | 2 +- content/docs/(functions)/Variables/deleteChannelVar.mdx | 2 +- content/docs/(functions)/Variables/deleteMessageVar.mdx | 2 +- content/docs/(functions)/Variables/deleteServerVar.mdx | 2 +- content/docs/(functions)/Variables/deleteUserVar.mdx | 2 +- content/docs/(functions)/Variables/getChannelVar.mdx | 2 +- content/docs/(functions)/Variables/getMessageVar.mdx | 2 +- content/docs/(functions)/Variables/getServerVar.mdx | 2 +- content/docs/(functions)/Variables/getUserVar.mdx | 2 +- content/docs/(functions)/Variables/let.mdx | 2 +- content/docs/(functions)/Variables/resetUserVar.mdx | 2 +- content/docs/(functions)/Variables/setChannelVar.mdx | 2 +- content/docs/(functions)/Variables/setMessageVar.mdx | 2 +- content/docs/(functions)/Variables/setServerVar.mdx | 2 +- content/docs/(functions)/Variables/setUserVar.mdx | 2 +- content/docs/(functions)/Variables/userLeaderboard.mdx | 2 +- content/docs/(functions)/Variables/userVarRank.mdx | 2 +- 235 files changed, 239 insertions(+), 239 deletions(-) diff --git a/content/docs/(functions)/Bot/botCount.mdx b/content/docs/(functions)/Bot/botCount.mdx index 972d64f0..784a6663 100644 --- a/content/docs/(functions)/Bot/botCount.mdx +++ b/content/docs/(functions)/Bot/botCount.mdx @@ -4,7 +4,7 @@ title: "$botCount" This function returns the total number of bots present in your Discord server (guild). -#### Usage +## Usage ```cc $botCount ``` diff --git a/content/docs/(functions)/Bot/cacheMember.mdx b/content/docs/(functions)/Bot/cacheMember.mdx index 535c02b6..4bb0fa96 100644 --- a/content/docs/(functions)/Bot/cacheMember.mdx +++ b/content/docs/(functions)/Bot/cacheMember.mdx @@ -8,7 +8,7 @@ This function caches a member in the bot's memory. This is useful for functions **Note:** Functions like `$toggleRoles` and `$giveRoles` don't require you to manually cache members, as they handle member retrieval internally. -#### Usage +## Usage ```cc $cacheMember[userID (optional)] ``` diff --git a/content/docs/(functions)/Bot/clientID.mdx b/content/docs/(functions)/Bot/clientID.mdx index 7a880c3e..fdc34480 100644 --- a/content/docs/(functions)/Bot/clientID.mdx +++ b/content/docs/(functions)/Bot/clientID.mdx @@ -4,7 +4,7 @@ title: "$clientID" Retrieves the bot's User ID, also referred to as the Client ID. This is a unique identifier for your bot on Discord. -#### Usage +## Usage ```cc $clientID ``` diff --git a/content/docs/(functions)/Bot/ping.mdx b/content/docs/(functions)/Bot/ping.mdx index 5c4fa293..ab8cdfef 100644 --- a/content/docs/(functions)/Bot/ping.mdx +++ b/content/docs/(functions)/Bot/ping.mdx @@ -4,7 +4,7 @@ title: "$ping" This command provides the bot's ping (latency) in milliseconds. It's a quick and easy way to check if the bot is online, responsive, and functioning correctly. Think of it like a simple "health check" for the bot! -#### Usage +## Usage ```cc $ping ``` diff --git a/content/docs/(functions)/Bot/ram.mdx b/content/docs/(functions)/Bot/ram.mdx index 939cc5e8..b92cd8e0 100644 --- a/content/docs/(functions)/Bot/ram.mdx +++ b/content/docs/(functions)/Bot/ram.mdx @@ -4,7 +4,7 @@ title: "$ram" Displays the amount of RAM (Random Access Memory) currently being used by the bot. This command provides insight into the bot's resource consumption. -#### Usage +## Usage ```cc $ram ``` diff --git a/content/docs/(functions)/Bot/serverCount.mdx b/content/docs/(functions)/Bot/serverCount.mdx index b9aa88d7..e96dc99b 100644 --- a/content/docs/(functions)/Bot/serverCount.mdx +++ b/content/docs/(functions)/Bot/serverCount.mdx @@ -4,7 +4,7 @@ title: "$serverCount" This function returns the total number of servers (guilds) the bot is currently in. It's a simple way to display the bot's reach. -#### Usage +## Usage ```cc $serverCount ``` diff --git a/content/docs/(functions)/Bot/uptime.mdx b/content/docs/(functions)/Bot/uptime.mdx index e129c080..898755d2 100644 --- a/content/docs/(functions)/Bot/uptime.mdx +++ b/content/docs/(functions)/Bot/uptime.mdx @@ -4,7 +4,7 @@ title: "$uptime" This command displays how long the bot has been running since it was last started. -#### Usage +## Usage ```cc $uptime ``` diff --git a/content/docs/(functions)/Channel/channel.mdx b/content/docs/(functions)/Channel/channel.mdx index 587a07d8..dec4ef88 100644 --- a/content/docs/(functions)/Channel/channel.mdx +++ b/content/docs/(functions)/Channel/channel.mdx @@ -4,7 +4,7 @@ title: "$channel" Retrieves information about a specific channel. -#### Usage: +## Usage: `$channel[Channel ID;Option]` diff --git a/content/docs/(functions)/Channel/channelCategoryID.mdx b/content/docs/(functions)/Channel/channelCategoryID.mdx index 1f752afa..e1871b9c 100644 --- a/content/docs/(functions)/Channel/channelCategoryID.mdx +++ b/content/docs/(functions)/Channel/channelCategoryID.mdx @@ -6,7 +6,7 @@ Retrieves the ID of the category channel the current channel or a specified chan **What it does:** This function returns the unique identifier (ID) of the category channel that the channel where the command is executed is in. You can also specify a different channel ID to get its category ID. -#### Usage: +## Usage: * `$channelCategoryID` - Returns the category ID of the current channel where the command is used. * `$channelCategoryID[channelID]` - Returns the category ID of the specified channel ID. Replace `channelID` with the actual ID of the channel. diff --git a/content/docs/(functions)/Channel/channelCount.mdx b/content/docs/(functions)/Channel/channelCount.mdx index 0bfd1149..2e4f1bc6 100644 --- a/content/docs/(functions)/Channel/channelCount.mdx +++ b/content/docs/(functions)/Channel/channelCount.mdx @@ -4,7 +4,7 @@ title: "$channelCount" This function returns the total number of channels present in the server. -#### Usage +## Usage ```cc $channelCount[Channel Type (optional)] ``` diff --git a/content/docs/(functions)/Channel/channelExists.mdx b/content/docs/(functions)/Channel/channelExists.mdx index 09b529b5..86859c30 100644 --- a/content/docs/(functions)/Channel/channelExists.mdx +++ b/content/docs/(functions)/Channel/channelExists.mdx @@ -4,7 +4,7 @@ title: "$channelExists" Checks if a channel with the provided ID exists. Returns `true` if the channel exists, and `false` if it doesn't. -#### Usage: +## Usage: `$channelExists[channelID]` diff --git a/content/docs/(functions)/Channel/channelID.mdx b/content/docs/(functions)/Channel/channelID.mdx index 9584976a..4441e073 100644 --- a/content/docs/(functions)/Channel/channelID.mdx +++ b/content/docs/(functions)/Channel/channelID.mdx @@ -4,7 +4,7 @@ title: "$channelID" Returns the ID of the channel where the command is executed. You can also use it to find the ID of another channel by providing its name. -#### Usage +## Usage ```cc $channelID[channel name (optional)] ``` diff --git a/content/docs/(functions)/Channel/channelName.mdx b/content/docs/(functions)/Channel/channelName.mdx index 41418ee6..509f00ea 100644 --- a/content/docs/(functions)/Channel/channelName.mdx +++ b/content/docs/(functions)/Channel/channelName.mdx @@ -4,7 +4,7 @@ title: "$channelName" Retrieves the name of a Discord channel. -#### Usage +## Usage ```cc $channelName[channelID] ``` diff --git a/content/docs/(functions)/Channel/channelType.mdx b/content/docs/(functions)/Channel/channelType.mdx index 4317d6cf..4f7e79d2 100644 --- a/content/docs/(functions)/Channel/channelType.mdx +++ b/content/docs/(functions)/Channel/channelType.mdx @@ -4,7 +4,7 @@ title: "$channelType" Retrieves the type of a channel based on its ID. -#### Usage +## Usage ```cc $channelType[channelID] ``` diff --git a/content/docs/(functions)/Channel/channelUsed.mdx b/content/docs/(functions)/Channel/channelUsed.mdx index 75dd7071..00d947a5 100644 --- a/content/docs/(functions)/Channel/channelUsed.mdx +++ b/content/docs/(functions)/Channel/channelUsed.mdx @@ -4,7 +4,7 @@ title: "$channelUsed" Returns the ID of the channel used. If no channel ID is specified, it defaults to the current channel where the command was executed. -#### Usage +## Usage ```cc $channelUsed[channelID (optional)] ``` diff --git a/content/docs/(functions)/Channel/clear.mdx b/content/docs/(functions)/Channel/clear.mdx index 081984a8..0acabfe6 100644 --- a/content/docs/(functions)/Channel/clear.mdx +++ b/content/docs/(functions)/Channel/clear.mdx @@ -4,7 +4,7 @@ title: "$clear" Clears messages from a channel. You can clear messages from a specific user, or clear all messages in the channel. -#### Usage: +## Usage: `$clear[amount;userID or everyone (optional);channelID (optional);skip pinned messages (optional)]` diff --git a/content/docs/(functions)/Channel/closeTicket.mdx b/content/docs/(functions)/Channel/closeTicket.mdx index 4f058cd2..408f2ed4 100644 --- a/content/docs/(functions)/Channel/closeTicket.mdx +++ b/content/docs/(functions)/Channel/closeTicket.mdx @@ -4,7 +4,7 @@ title: "$closeTicket" Closes a ticket that was previously created by the bot using the `$newTicket` command. This is used to finalize and close a support or request ticket channel. -#### Usage +## Usage ```cc $closeTicket[optional error message] ``` diff --git a/content/docs/(functions)/Channel/createChannel.mdx b/content/docs/(functions)/Channel/createChannel.mdx index cf251425..a19c1b03 100644 --- a/content/docs/(functions)/Channel/createChannel.mdx +++ b/content/docs/(functions)/Channel/createChannel.mdx @@ -4,7 +4,7 @@ title: "$createChannel" Creates a new channel within your Discord server. -#### Usage: +## Usage: ```cc $createChannel[name;type;return ID (yes/no);categoryID (optional);topic;NSFW (yes/no);Bitrate (i.e 64000, VC only);Position;Slowmode in Seconds (optional);User Limit (VC only);RTC Region (VC Only)] diff --git a/content/docs/(functions)/Channel/deleteChannels.mdx b/content/docs/(functions)/Channel/deleteChannels.mdx index f4ff8f69..7a3b3575 100644 --- a/content/docs/(functions)/Channel/deleteChannels.mdx +++ b/content/docs/(functions)/Channel/deleteChannels.mdx @@ -4,7 +4,7 @@ title: "$deleteChannels" Deletes one or more channels from the server. -#### Usage: +## Usage: `$deleteChannels[channelID1;channelID2;channelID3;...]` diff --git a/content/docs/(functions)/Channel/editChannel.mdx b/content/docs/(functions)/Channel/editChannel.mdx index d17ee7a3..d8e999d0 100644 --- a/content/docs/(functions)/Channel/editChannel.mdx +++ b/content/docs/(functions)/Channel/editChannel.mdx @@ -4,7 +4,7 @@ title: "$editChannel" Edits the properties of a channel. -#### Usage: +## Usage: `$editChannel[channelID;categoryID/$default;name/$default;position/$default;nsfw/$default (yes/no);bitrate/$default;userLimit/$default;syncPermission/$default (yes/no);reason (optional);RTC region/$default]` diff --git a/content/docs/(functions)/Channel/eventChannelID.mdx b/content/docs/(functions)/Channel/eventChannelID.mdx index 9492de91..fde36b1b 100644 --- a/content/docs/(functions)/Channel/eventChannelID.mdx +++ b/content/docs/(functions)/Channel/eventChannelID.mdx @@ -4,7 +4,7 @@ title: "$eventChannelID" Returns the ID of the channel that was created or deleted. This function is used specifically for the **Channel Creation** or **Channel Deletion** triggers. -#### Usage +## Usage ```cc $eventChannelID ``` diff --git a/content/docs/(functions)/Channel/findChannel.mdx b/content/docs/(functions)/Channel/findChannel.mdx index f75ad347..c60bb005 100644 --- a/content/docs/(functions)/Channel/findChannel.mdx +++ b/content/docs/(functions)/Channel/findChannel.mdx @@ -4,7 +4,7 @@ title: "$findChannel" Searches for a channel by its ID, mention, or name. -#### Usage: +## Usage: `$findChannel[ID/mention/name;returnCurrentChannel (yes/no) (optional)]` diff --git a/content/docs/(functions)/Channel/modifyChannelPerms.mdx b/content/docs/(functions)/Channel/modifyChannelPerms.mdx index 3050123d..5a39dfd5 100644 --- a/content/docs/(functions)/Channel/modifyChannelPerms.mdx +++ b/content/docs/(functions)/Channel/modifyChannelPerms.mdx @@ -4,7 +4,7 @@ title: "$modifyChannelPerms" Modifies channel permissions, including those for categories. This function allows you to grant, deny, or set permissions to neutral for specific roles or users within a channel. -#### Usage: +## Usage: `$modifyChannelPerms[channelID;+perm1;-perm2;/perm3;+perm4;...;roleID/userID]` diff --git a/content/docs/(functions)/Channel/newTicket.mdx b/content/docs/(functions)/Channel/newTicket.mdx index aa571ee8..7753e1f0 100644 --- a/content/docs/(functions)/Channel/newTicket.mdx +++ b/content/docs/(functions)/Channel/newTicket.mdx @@ -4,7 +4,7 @@ title: "$newTicket" Create a new support ticket. This function allows users to easily open tickets for assistance, which can be closed later using the `$closeTicket` function. -#### Usage +## Usage ```cc $newTicket[ticket name;ticket message (optional);categoryID (optional);return ticket ID (yes/no) (optional);error message (optional)] ``` diff --git a/content/docs/(functions)/Channel/useChannel.mdx b/content/docs/(functions)/Channel/useChannel.mdx index 724728f0..8edf05d4 100644 --- a/content/docs/(functions)/Channel/useChannel.mdx +++ b/content/docs/(functions)/Channel/useChannel.mdx @@ -4,7 +4,7 @@ title: "$useChannel" This function allows you to specify a different channel for subsequent actions within your command. It essentially redirects where the following functions will execute. -#### Usage +## Usage ```cc $useChannel[channelID] ``` diff --git a/content/docs/(functions)/Date/creationDate.mdx b/content/docs/(functions)/Date/creationDate.mdx index ae5af6c4..ee7ecdc5 100644 --- a/content/docs/(functions)/Date/creationDate.mdx +++ b/content/docs/(functions)/Date/creationDate.mdx @@ -4,7 +4,7 @@ title: "$creationDate" Retrieves the creation date of a Discord entity (channel, guild, emoji, user, or role) based on its ID. -#### Usage +## Usage ```cc $creationDate[entityID;format (optional)] ``` diff --git a/content/docs/(functions)/Date/dateStamp.mdx b/content/docs/(functions)/Date/dateStamp.mdx index bec64756..7dd7eae8 100644 --- a/content/docs/(functions)/Date/dateStamp.mdx +++ b/content/docs/(functions)/Date/dateStamp.mdx @@ -4,7 +4,7 @@ title: "$dateStamp" Returns the current Unix timestamp (the number of milliseconds that have elapsed since January 1, 1970 UTC). -#### Usage +## Usage ```cc $dateStamp[Return in Seconds (Yes/No)] ``` diff --git a/content/docs/(functions)/Date/day.mdx b/content/docs/(functions)/Date/day.mdx index dd7e89c8..26cd42a9 100644 --- a/content/docs/(functions)/Date/day.mdx +++ b/content/docs/(functions)/Date/day.mdx @@ -4,7 +4,7 @@ title: "$day" Returns the current date. Optionally, you can also retrieve the day of the week. -#### Usage +## Usage ```cc $day[yes/no (optional)] ``` diff --git a/content/docs/(functions)/Date/formatDate.mdx b/content/docs/(functions)/Date/formatDate.mdx index 38c51173..7d9988f0 100644 --- a/content/docs/(functions)/Date/formatDate.mdx +++ b/content/docs/(functions)/Date/formatDate.mdx @@ -4,7 +4,7 @@ title: "$formatDate" Formats a date provided as milliseconds, a string, or an ISO string into a specified format. You can find a detailed explanation of the formatting syntax [here](https://momentjs.com/docs/#/parsing/string-format/). -#### Usage +## Usage ```cc $formatDate[date;format] ``` diff --git a/content/docs/(functions)/Date/hour.mdx b/content/docs/(functions)/Date/hour.mdx index 221fb890..9d34a952 100644 --- a/content/docs/(functions)/Date/hour.mdx +++ b/content/docs/(functions)/Date/hour.mdx @@ -4,7 +4,7 @@ title: "$hour" This command returns the current hour (in 24-hour format). -#### Usage +## Usage ```cc $hour ``` diff --git a/content/docs/(functions)/Date/humanizeMS.mdx b/content/docs/(functions)/Date/humanizeMS.mdx index 8b7700eb..79691ef8 100644 --- a/content/docs/(functions)/Date/humanizeMS.mdx +++ b/content/docs/(functions)/Date/humanizeMS.mdx @@ -4,7 +4,7 @@ title: "$humanizeMS" Converts milliseconds into a human-readable duration string. This function is useful for displaying elapsed time or time remaining in a user-friendly format. -#### Usage +## Usage ```cc $humanizeMS[milliseconds; limit (optional); separator (optional)] ``` diff --git a/content/docs/(functions)/Date/memberJoinedDate.mdx b/content/docs/(functions)/Date/memberJoinedDate.mdx index 978eb221..578722da 100644 --- a/content/docs/(functions)/Date/memberJoinedDate.mdx +++ b/content/docs/(functions)/Date/memberJoinedDate.mdx @@ -4,7 +4,7 @@ title: "$memberJoinedDate" Retrieves the date and time a member joined the server. You can specify a user ID or use it without any arguments to get the join date of the command executor. -#### Usage +## Usage ```cc $memberJoinedDate[userID;format(optional)] or $memberJoinedDate ``` diff --git a/content/docs/(functions)/Date/minute.mdx b/content/docs/(functions)/Date/minute.mdx index da9b6941..6e308204 100644 --- a/content/docs/(functions)/Date/minute.mdx +++ b/content/docs/(functions)/Date/minute.mdx @@ -4,7 +4,7 @@ title: "$minute" Returns the current minute (0-59). -#### Usage: +## Usage: ```cc $minute diff --git a/content/docs/(functions)/Date/month.mdx b/content/docs/(functions)/Date/month.mdx index 0a18a867..171899ff 100644 --- a/content/docs/(functions)/Date/month.mdx +++ b/content/docs/(functions)/Date/month.mdx @@ -4,7 +4,7 @@ title: "$month" Returns the current month's number or name. -#### Usage +## Usage ```cc $month[return name (yes/no)] ``` diff --git a/content/docs/(functions)/Date/parseDate.mdx b/content/docs/(functions)/Date/parseDate.mdx index d098e4a5..9a0f2ad9 100644 --- a/content/docs/(functions)/Date/parseDate.mdx +++ b/content/docs/(functions)/Date/parseDate.mdx @@ -4,7 +4,7 @@ title: "$parseDate" Converts milliseconds into a human-readable date or time format. -#### Usage +## Usage ```cc $parseDate[milliseconds; format] ``` diff --git a/content/docs/(functions)/Date/second.mdx b/content/docs/(functions)/Date/second.mdx index 20a47def..89690531 100644 --- a/content/docs/(functions)/Date/second.mdx +++ b/content/docs/(functions)/Date/second.mdx @@ -4,7 +4,7 @@ title: "$second" Returns the current second (0-59). -#### Usage +## Usage ```cc $second ``` diff --git a/content/docs/(functions)/Date/timeStamp.mdx b/content/docs/(functions)/Date/timeStamp.mdx index 946889df..0baed9f4 100644 --- a/content/docs/(functions)/Date/timeStamp.mdx +++ b/content/docs/(functions)/Date/timeStamp.mdx @@ -6,7 +6,7 @@ Returns the current Unix timestamp (the number of milliseconds that have elapsed **Think of it as:** Getting a numerical representation of the current date and time. -#### Usage +## Usage ```cc $timeStamp[Return in Seconds (Yes/No)] ``` diff --git a/content/docs/(functions)/Date/timezone.mdx b/content/docs/(functions)/Date/timezone.mdx index a49a7c47..4ff26496 100644 --- a/content/docs/(functions)/Date/timezone.mdx +++ b/content/docs/(functions)/Date/timezone.mdx @@ -8,7 +8,7 @@ This function sets the timezone used by subsequent date and time functions withi To find a valid timezone name, refer to the comprehensive list on [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Use the values from the "TZ database name" column. -#### Usage +## Usage ```cc $timezone[Region/City] ``` diff --git a/content/docs/(functions)/Date/year.mdx b/content/docs/(functions)/Date/year.mdx index 50f78d75..f3925fb7 100644 --- a/content/docs/(functions)/Date/year.mdx +++ b/content/docs/(functions)/Date/year.mdx @@ -6,7 +6,7 @@ Get the current year. This command returns the current year based on the configured timezone (default is UTC). -#### Usage: +## Usage: ```cc $year diff --git a/content/docs/(functions)/Interaction/interactionDelete.mdx b/content/docs/(functions)/Interaction/interactionDelete.mdx index 69dcb85d..9396d699 100644 --- a/content/docs/(functions)/Interaction/interactionDelete.mdx +++ b/content/docs/(functions)/Interaction/interactionDelete.mdx @@ -4,7 +4,7 @@ title: "$interactionDelete" Deletes an interaction reply previously sent using `$interactionReply`. -#### Usage +## Usage ```cc $interactionDelete[message ID (optional, defaults to the previous interaction reply)] ``` diff --git a/content/docs/(functions)/Interaction/interactionEdit.mdx b/content/docs/(functions)/Interaction/interactionEdit.mdx index 576e9515..f21b4b99 100644 --- a/content/docs/(functions)/Interaction/interactionEdit.mdx +++ b/content/docs/(functions)/Interaction/interactionEdit.mdx @@ -4,7 +4,7 @@ title: "$interactionEdit" Edits a previously sent interaction, typically one created using `$interactionReply`. -#### Usage +## Usage ```cc $interactionEdit[New Message;message id (optional, defaults to the original interaction reply)] ``` diff --git a/content/docs/(functions)/Interaction/interactionId.mdx b/content/docs/(functions)/Interaction/interactionId.mdx index 33b63c2c..7eecf001 100644 --- a/content/docs/(functions)/Interaction/interactionId.mdx +++ b/content/docs/(functions)/Interaction/interactionId.mdx @@ -4,7 +4,7 @@ title: "$interactionId" Retrieves the unique ID of an interaction (e.g., button press, menu selection). -#### Usage +## Usage ```cc $interactionId ``` diff --git a/content/docs/(functions)/Interaction/interactionReply.mdx b/content/docs/(functions)/Interaction/interactionReply.mdx index 24e987cc..a0fe60c1 100644 --- a/content/docs/(functions)/Interaction/interactionReply.mdx +++ b/content/docs/(functions)/Interaction/interactionReply.mdx @@ -4,7 +4,7 @@ title: "$interactionReply" Sends a reply to an interaction (buttons, menus, slash commands). -#### Usage +## Usage ```cc $interactionReply[message; ephemeral(yes/no); return id(yes/no)] ``` diff --git a/content/docs/(functions)/Interaction/modal.mdx b/content/docs/(functions)/Interaction/modal.mdx index 014d344a..0c38d1f2 100644 --- a/content/docs/(functions)/Interaction/modal.mdx +++ b/content/docs/(functions)/Interaction/modal.mdx @@ -3,7 +3,7 @@ title: "$modal" --- Used to send a modal, it must be used inside interaction like button/menu/slash triggers -#### Usage +## Usage ```cc $modal[Input] ``` diff --git a/content/docs/(functions)/Interaction/modalAnswer.mdx b/content/docs/(functions)/Interaction/modalAnswer.mdx index 28fd6ff7..f809825f 100644 --- a/content/docs/(functions)/Interaction/modalAnswer.mdx +++ b/content/docs/(functions)/Interaction/modalAnswer.mdx @@ -4,7 +4,7 @@ title: "$modalAnswer" Retrieves the value entered by a user in a modal. This function is used to access the data submitted through a modal triggered by the [`modal` trigger](/Trigger/modal). -#### Usage +## Usage ```cc $modalAnswer[Input Value;Seperator (optional)] ``` diff --git a/content/docs/(functions)/Interaction/modalID.mdx b/content/docs/(functions)/Interaction/modalID.mdx index 64201d7b..233c638d 100644 --- a/content/docs/(functions)/Interaction/modalID.mdx +++ b/content/docs/(functions)/Interaction/modalID.mdx @@ -4,7 +4,7 @@ title: "$modalID" This variable returns the unique ID of the modal that activated the [modal trigger](/Trigger/modal). -#### Usage +## Usage ```cc $modalID ``` diff --git a/content/docs/(functions)/Message/addCmdReactions.mdx b/content/docs/(functions)/Message/addCmdReactions.mdx index 16f5d321..0cc35857 100644 --- a/content/docs/(functions)/Message/addCmdReactions.mdx +++ b/content/docs/(functions)/Message/addCmdReactions.mdx @@ -6,7 +6,7 @@ Reacts to the user's message with multiple emojis. This function allows you to add multiple reactions to the message that triggered the command. -#### Usage +## Usage ```cc $addCmdReactions[emoji1;emoji2;...] ``` diff --git a/content/docs/(functions)/Message/addMessageReactions.mdx b/content/docs/(functions)/Message/addMessageReactions.mdx index 83599a20..52cce3a3 100644 --- a/content/docs/(functions)/Message/addMessageReactions.mdx +++ b/content/docs/(functions)/Message/addMessageReactions.mdx @@ -4,7 +4,7 @@ title: "$addMessageReactions" Adds reactions (emojis) to a message by its ID. -#### Usage +## Usage ```cc $addMessageReactions[channelId;messageId;emoji;emoji;...] ``` diff --git a/content/docs/(functions)/Message/addReactions.mdx b/content/docs/(functions)/Message/addReactions.mdx index ce6947b6..fcdcbf91 100644 --- a/content/docs/(functions)/Message/addReactions.mdx +++ b/content/docs/(functions)/Message/addReactions.mdx @@ -4,7 +4,7 @@ title: "$addReactions" Adds reactions to the bot's response. -#### Usage +## Usage ```cc $addReactions[emoji1;emoji2;...] ``` diff --git a/content/docs/(functions)/Message/channelSendMessage.mdx b/content/docs/(functions)/Message/channelSendMessage.mdx index 5aae2aba..eba7e7f9 100644 --- a/content/docs/(functions)/Message/channelSendMessage.mdx +++ b/content/docs/(functions)/Message/channelSendMessage.mdx @@ -4,7 +4,7 @@ title: "$channelSendMessage" Sends a message to a specified channel. This function allows you to send messages to any channel your bot has access to. -#### Usage +## Usage ```cc $channelSendMessage[channelID;message;return ID (yes/no) (optional, default=no)] ``` @@ -25,7 +25,7 @@ This is a fantastic message! -#### Examples +## Examples Here are some examples of how to use the `$channelSendMessage` function: diff --git a/content/docs/(functions)/Message/clearReaction.mdx b/content/docs/(functions)/Message/clearReaction.mdx index e2d9fe93..b8f7fc58 100644 --- a/content/docs/(functions)/Message/clearReaction.mdx +++ b/content/docs/(functions)/Message/clearReaction.mdx @@ -4,7 +4,7 @@ title: "$clearReaction" Removes a specific reaction from a message for a given user. -#### Usage +## Usage ```cc $clearReaction[channelId;messageId;userId;emoji] ``` diff --git a/content/docs/(functions)/Message/clearReactions.mdx b/content/docs/(functions)/Message/clearReactions.mdx index cf63f88b..54e18c70 100644 --- a/content/docs/(functions)/Message/clearReactions.mdx +++ b/content/docs/(functions)/Message/clearReactions.mdx @@ -4,7 +4,7 @@ title: "$clearReactions" This function allows you to clear reactions from a specific message. You can either clear all reactions or only those associated with a particular emoji. -#### Usage +## Usage ```cc $clearReactions[channelId;messageId;all/emoji] ``` diff --git a/content/docs/(functions)/Message/createWebhook.mdx b/content/docs/(functions)/Message/createWebhook.mdx index 056c97bf..562d861b 100644 --- a/content/docs/(functions)/Message/createWebhook.mdx +++ b/content/docs/(functions)/Message/createWebhook.mdx @@ -16,7 +16,7 @@ The bot requires the `Manage Webhooks` permission in the target channel to execu -#### Usage +## Usage ```cc $createWebhook[channelID;name;avatarURL;returnWebhookID&Token (yes/no);separator] ``` diff --git a/content/docs/(functions)/Message/deleteIn.mdx b/content/docs/(functions)/Message/deleteIn.mdx index 1729caf9..56653dbe 100644 --- a/content/docs/(functions)/Message/deleteIn.mdx +++ b/content/docs/(functions)/Message/deleteIn.mdx @@ -4,7 +4,7 @@ title: "$deleteIn" Deletes the bot's message after a specified duration. -#### Usage +## Usage ```cc $deleteIn[time] ``` diff --git a/content/docs/(functions)/Message/deleteMessage.mdx b/content/docs/(functions)/Message/deleteMessage.mdx index 274b26ee..908bc0f8 100644 --- a/content/docs/(functions)/Message/deleteMessage.mdx +++ b/content/docs/(functions)/Message/deleteMessage.mdx @@ -4,7 +4,7 @@ title: "$deleteMessage" Deletes a specified message from a channel. -#### Usage +## Usage ```cc $deleteMessage[channelID;messageID] ``` diff --git a/content/docs/(functions)/Message/deleteWebhook.mdx b/content/docs/(functions)/Message/deleteWebhook.mdx index 90b6c46c..a5c975d8 100644 --- a/content/docs/(functions)/Message/deleteWebhook.mdx +++ b/content/docs/(functions)/Message/deleteWebhook.mdx @@ -4,7 +4,7 @@ title: "$deleteWebhook" Deletes a webhook using its ID and token. -#### Usage +## Usage ```cc $deleteWebhook[webhookID;webhookToken] ``` diff --git a/content/docs/(functions)/Message/dm.mdx b/content/docs/(functions)/Message/dm.mdx index 70cdf6a4..4a75992d 100644 --- a/content/docs/(functions)/Message/dm.mdx +++ b/content/docs/(functions)/Message/dm.mdx @@ -6,7 +6,7 @@ title: "$dm" Sends the output of your code directly to the author via Discord Direct Message (DM), or to the specified user ID's DM. -#### Usage +## Usage ```cc $dm[userID (optional)] ``` diff --git a/content/docs/(functions)/Message/editMessage.mdx b/content/docs/(functions)/Message/editMessage.mdx index 1ac02a6e..080f15a6 100644 --- a/content/docs/(functions)/Message/editMessage.mdx +++ b/content/docs/(functions)/Message/editMessage.mdx @@ -4,7 +4,7 @@ title: "$editMessage" Edits a message previously sent by the bot. This function allows you to modify the content of a message. -#### Usage +## Usage ```cc $editMessage[messageId;newMessage;channelId (optional)] ``` diff --git a/content/docs/(functions)/Message/forwardMessage.mdx b/content/docs/(functions)/Message/forwardMessage.mdx index 8fb2177e..933a5e0e 100644 --- a/content/docs/(functions)/Message/forwardMessage.mdx +++ b/content/docs/(functions)/Message/forwardMessage.mdx @@ -4,7 +4,7 @@ title: "$forwardMessage" forward a message to another channel -#### Usage +## Usage ```cc $forwardMessage[Source Channel ID;Source Message ID;Target Channel ID;Return the new message id (yes/no)] ``` diff --git a/content/docs/(functions)/Message/getCommandOption.mdx b/content/docs/(functions)/Message/getCommandOption.mdx index 3543cdcb..b706807d 100644 --- a/content/docs/(functions)/Message/getCommandOption.mdx +++ b/content/docs/(functions)/Message/getCommandOption.mdx @@ -4,7 +4,7 @@ title: "$getCommandOption" Retrieves the value of a specific option from a slash command. -#### Usage +## Usage ```cc $getCommandOption[type;Option Name] ``` diff --git a/content/docs/(functions)/Message/getReactions.mdx b/content/docs/(functions)/Message/getReactions.mdx index 39b7ce92..8bc8b301 100644 --- a/content/docs/(functions)/Message/getReactions.mdx +++ b/content/docs/(functions)/Message/getReactions.mdx @@ -4,7 +4,7 @@ title: "$getReactions" Retrieve a list of users who reacted with a specific emoji to a message. -#### Usage +## Usage ```cc $getReactions[channelId;messageId;emoji;mention/username/id] ``` diff --git a/content/docs/(functions)/Message/messageAttachment.mdx b/content/docs/(functions)/Message/messageAttachment.mdx index 1a8a59b3..55b4e80e 100644 --- a/content/docs/(functions)/Message/messageAttachment.mdx +++ b/content/docs/(functions)/Message/messageAttachment.mdx @@ -4,7 +4,7 @@ title: "$messageAttachment" This function retrieves the URL of the first attachment found in a message. If a message has multiple attachments, only the URL of the first one will be returned. -#### Usage: +## Usage: ```cc $messageAttachment diff --git a/content/docs/(functions)/Message/messageExists.mdx b/content/docs/(functions)/Message/messageExists.mdx index 05f34375..1936e282 100644 --- a/content/docs/(functions)/Message/messageExists.mdx +++ b/content/docs/(functions)/Message/messageExists.mdx @@ -4,7 +4,7 @@ title: "$messageExists" Checks if a message exists in a specified channel and returns `true` or `false`. -#### Usage: +## Usage: `$messageExists[channelID;messageID]` diff --git a/content/docs/(functions)/Message/messageFlags.mdx b/content/docs/(functions)/Message/messageFlags.mdx index d245ffd4..bae06f2d 100644 --- a/content/docs/(functions)/Message/messageFlags.mdx +++ b/content/docs/(functions)/Message/messageFlags.mdx @@ -4,7 +4,7 @@ title: "$messageFlags" This function retrieves the flags associated with a message. Message flags provide additional information about the message, such as whether it's a crosspost or if it's a system message. -#### Usage +## Usage ```cc $messageFlags ``` diff --git a/content/docs/(functions)/Message/messageID.mdx b/content/docs/(functions)/Message/messageID.mdx index 818e5ab4..38f8e613 100644 --- a/content/docs/(functions)/Message/messageID.mdx +++ b/content/docs/(functions)/Message/messageID.mdx @@ -6,7 +6,7 @@ Retrieves the ID of the message that triggered the command. This function returns the unique ID of the Discord message that initiated the execution of your custom command. -#### Usage +## Usage ```cc $messageID ``` diff --git a/content/docs/(functions)/Message/messagePublish.mdx b/content/docs/(functions)/Message/messagePublish.mdx index 98c85438..6ce9f009 100644 --- a/content/docs/(functions)/Message/messagePublish.mdx +++ b/content/docs/(functions)/Message/messagePublish.mdx @@ -4,7 +4,7 @@ title: "$messagePublish" Publishes a message to an announcement channel. This command allows you to easily share a message from one channel to another, typically an announcement channel. -#### Usage: +## Usage: You can use `$messagePublish` in three ways: @@ -14,7 +14,7 @@ You can use `$messagePublish` in three ways: * **`$messagePublish[channelID;messageID]`**: Publishes the message with the specified `messageID` from the specified `channelID`. Replace `channelID` with the ID of the channel containing the message, and `messageID` with the ID of the message itself. -##### Examples: +## Examples: * To publish the message triggering the command: ```cc diff --git a/content/docs/(functions)/Message/messageSlice.mdx b/content/docs/(functions)/Message/messageSlice.mdx index 7cd36cd7..3787583e 100644 --- a/content/docs/(functions)/Message/messageSlice.mdx +++ b/content/docs/(functions)/Message/messageSlice.mdx @@ -4,7 +4,7 @@ title: "$messageSlice" Extracts a portion of the message arguments, from a specified start position to an optional end position. -#### Usage +## Usage ```cc $messageSlice[from;to (optional)] ``` diff --git a/content/docs/(functions)/Message/messageType.mdx b/content/docs/(functions)/Message/messageType.mdx index 284ec5b6..f9966e16 100644 --- a/content/docs/(functions)/Message/messageType.mdx +++ b/content/docs/(functions)/Message/messageType.mdx @@ -4,7 +4,7 @@ title: "$messageType" This function returns the type of the message that triggered the command. This can be useful for creating commands that behave differently depending on how they were called. -#### Usage +## Usage ```cc $messageType ``` diff --git a/content/docs/(functions)/Message/messageWebhookID.mdx b/content/docs/(functions)/Message/messageWebhookID.mdx index 47c30dc9..364dffc8 100644 --- a/content/docs/(functions)/Message/messageWebhookID.mdx +++ b/content/docs/(functions)/Message/messageWebhookID.mdx @@ -4,7 +4,7 @@ title: "$messageWebhookID" Retrieves the ID of the webhook that sent the message. -#### Usage: +## Usage: `$messageWebhookID` diff --git a/content/docs/(functions)/Message/modifyWebhook.mdx b/content/docs/(functions)/Message/modifyWebhook.mdx index 6fe8544e..3b25b2e3 100644 --- a/content/docs/(functions)/Message/modifyWebhook.mdx +++ b/content/docs/(functions)/Message/modifyWebhook.mdx @@ -4,7 +4,7 @@ title: "Modify Webhook" This function allows you to modify a webhook's name and avatar using its ID and token. -#### Usage: +## Usage: `$modifyWebhook[webhookID;webhookToken;name;avatar (optional)]` diff --git a/content/docs/(functions)/Message/msg.mdx b/content/docs/(functions)/Message/msg.mdx index 356dbe09..af8f4bd8 100644 --- a/content/docs/(functions)/Message/msg.mdx +++ b/content/docs/(functions)/Message/msg.mdx @@ -4,7 +4,7 @@ title: "$msg" The `$msg` function is a powerful and compact tool that lets you extract a wide range of information from Discord messages. -### Usage +## Usage ```cc $msg[channelid;messageid;property] ``` diff --git a/content/docs/(functions)/Message/noEscapingMessage.mdx b/content/docs/(functions)/Message/noEscapingMessage.mdx index 0940d77f..7232ba2e 100644 --- a/content/docs/(functions)/Message/noEscapingMessage.mdx +++ b/content/docs/(functions)/Message/noEscapingMessage.mdx @@ -6,7 +6,7 @@ title: "$noEscapingMessage" This function behaves similarly to `$message`, but it **does not escape special characters**. This means characters like backticks (`) or newlines will be interpreted literally and won't be replaced with their escaped counterparts. -#### Usage +## Usage ```cc $noEscapingMessage ``` diff --git a/content/docs/(functions)/Message/noMentionMessage.mdx b/content/docs/(functions)/Message/noMentionMessage.mdx index c046185b..77bd0229 100644 --- a/content/docs/(functions)/Message/noMentionMessage.mdx +++ b/content/docs/(functions)/Message/noMentionMessage.mdx @@ -4,7 +4,7 @@ title: "$noMentionMessage" The `$noMentionMessage` function returns the content of the message sent by the command executor, but with all mentions removed. This is particularly useful for preventing your bot from accidentally pinging roles or users when echoing user input or using it in other command logic. -#### Usage: +## Usage: `$noMentionMessage` diff --git a/content/docs/(functions)/Message/sendDM.mdx b/content/docs/(functions)/Message/sendDM.mdx index b6ead234..1d8068b7 100644 --- a/content/docs/(functions)/Message/sendDM.mdx +++ b/content/docs/(functions)/Message/sendDM.mdx @@ -6,7 +6,7 @@ title: "$sendDM" Sends the output of the code to the message author's DMs or to the DMs of a specified user. -#### Usage +## Usage ```cc $sendDM[userID;message] ``` diff --git a/content/docs/(functions)/Message/sendMessage.mdx b/content/docs/(functions)/Message/sendMessage.mdx index 6ac9678e..a8346aec 100644 --- a/content/docs/(functions)/Message/sendMessage.mdx +++ b/content/docs/(functions)/Message/sendMessage.mdx @@ -4,7 +4,7 @@ title: "$sendMessage" Sends a message to the channel where the command was executed. -#### Usage +## Usage ```cc $sendMessage[message;return ID (yes/no) (optional)] ``` diff --git a/content/docs/(functions)/Message/sendWebhook.mdx b/content/docs/(functions)/Message/sendWebhook.mdx index 9583e6eb..3762c982 100644 --- a/content/docs/(functions)/Message/sendWebhook.mdx +++ b/content/docs/(functions)/Message/sendWebhook.mdx @@ -4,7 +4,7 @@ title: "$sendWebhook" Sends a message via a Discord webhook using its ID and token. -#### Usage +## Usage ```cc $sendWebhook[webhookID;webhookToken;message;return message ID (yes/no, optional);username (optional);avatar URL (optional)] ``` diff --git a/content/docs/(functions)/Message/webhookExists.mdx b/content/docs/(functions)/Message/webhookExists.mdx index fa96186e..8f5d4395 100644 --- a/content/docs/(functions)/Message/webhookExists.mdx +++ b/content/docs/(functions)/Message/webhookExists.mdx @@ -4,7 +4,7 @@ title: "$webhookExists" Checks if a webhook exists using its ID and token. Returns `true` if the webhook exists, and `false` otherwise. -#### Usage: +## Usage: `$webhookExists[webhookID;webhookToken]` diff --git a/content/docs/(functions)/Random/random.mdx b/content/docs/(functions)/Random/random.mdx index 3f493c50..470ac87b 100644 --- a/content/docs/(functions)/Random/random.mdx +++ b/content/docs/(functions)/Random/random.mdx @@ -4,7 +4,7 @@ title: "$random" This function returns a random number within a specified range. -#### Usage: +## Usage: `$random[min;max;allowDecimals (yes/no)(optional, default=no)]` diff --git a/content/docs/(functions)/Random/randomChannelID.mdx b/content/docs/(functions)/Random/randomChannelID.mdx index d84f75d5..e60f49d9 100644 --- a/content/docs/(functions)/Random/randomChannelID.mdx +++ b/content/docs/(functions)/Random/randomChannelID.mdx @@ -4,7 +4,7 @@ title: "$randomChannelID" This function returns a random Channel ID from any channel within the server. -#### Usage: +## Usage: Simply use `$randomChannelID` in your command or custom function. diff --git a/content/docs/(functions)/Random/randomMention.mdx b/content/docs/(functions)/Random/randomMention.mdx index 4a969c34..d25ec47f 100644 --- a/content/docs/(functions)/Random/randomMention.mdx +++ b/content/docs/(functions)/Random/randomMention.mdx @@ -4,7 +4,7 @@ title: "$randomMention" Returns a random mention from the current server. This function is useful for things like raffles, giveaways, or randomly selecting a user. -#### Usage: +## Usage: ```cc $randomMention diff --git a/content/docs/(functions)/Random/randomRoleID.mdx b/content/docs/(functions)/Random/randomRoleID.mdx index 5f23e123..d2753f0f 100644 --- a/content/docs/(functions)/Random/randomRoleID.mdx +++ b/content/docs/(functions)/Random/randomRoleID.mdx @@ -4,7 +4,7 @@ title: "$randomRoleID" This function returns a random Role ID from a Role present in the server. It's a simple way to pick a random role ID for various purposes in your custom commands. -#### Usage: +## Usage: ```cc $randomRoleID diff --git a/content/docs/(functions)/Random/randomString.mdx b/content/docs/(functions)/Random/randomString.mdx index 3efed59a..fa37211a 100644 --- a/content/docs/(functions)/Random/randomString.mdx +++ b/content/docs/(functions)/Random/randomString.mdx @@ -4,7 +4,7 @@ title: "$randomString" Generates a random string of a specified length. This function is useful for creating unique identifiers, temporary passwords, or simply adding randomness to your commands. -#### Usage: +## Usage: `$randomString[length]` diff --git a/content/docs/(functions)/Random/randomText.mdx b/content/docs/(functions)/Random/randomText.mdx index 86b77997..265b1928 100644 --- a/content/docs/(functions)/Random/randomText.mdx +++ b/content/docs/(functions)/Random/randomText.mdx @@ -4,7 +4,7 @@ title: "$randomText" Returns a random text from a list of provided texts. This function is useful for creating variety in your bot's responses. -#### Usage: +## Usage: `$randomText[text1;text2;text3;...]` diff --git a/content/docs/(functions)/Random/randomUserID.mdx b/content/docs/(functions)/Random/randomUserID.mdx index 55c44c68..c795b2f1 100644 --- a/content/docs/(functions)/Random/randomUserID.mdx +++ b/content/docs/(functions)/Random/randomUserID.mdx @@ -4,7 +4,7 @@ title: "$randomUserID" Retrieves a random user ID from a user within the server. -#### Usage: +## Usage: ```cc $randomUserID diff --git a/content/docs/(functions)/Random/resetRandom.mdx b/content/docs/(functions)/Random/resetRandom.mdx index 2b65e0ce..c5d38aba 100644 --- a/content/docs/(functions)/Random/resetRandom.mdx +++ b/content/docs/(functions)/Random/resetRandom.mdx @@ -4,7 +4,7 @@ title: "$resetRandom" The `$resetRandom` function clears the stored seed used by the `$random` function, effectively resetting the random number generator. This means that subsequent calls to `$random` will generate a new sequence of random numbers, potentially different from the previous sequence before the reset. This is useful when you want to ensure a fresh set of random numbers. -### Usage +## Usage ```cc $resetRandom ``` diff --git a/content/docs/(functions)/Role/blackListRoleIDs.mdx b/content/docs/(functions)/Role/blackListRoleIDs.mdx index 413439cd..c5b457bf 100644 --- a/content/docs/(functions)/Role/blackListRoleIDs.mdx +++ b/content/docs/(functions)/Role/blackListRoleIDs.mdx @@ -4,7 +4,7 @@ title: "$blackListRoleIds" This function prevents users with specific roles from using a command. You specify the role IDs and an error message to display when someone with a blacklisted role tries to execute the command. -#### Usage +## Usage ```cc $blackListRoleIDs[roleID;roleID;...;error message] ``` diff --git a/content/docs/(functions)/Role/colorRole.mdx b/content/docs/(functions)/Role/colorRole.mdx index 0a9eca17..93bafd63 100644 --- a/content/docs/(functions)/Role/colorRole.mdx +++ b/content/docs/(functions)/Role/colorRole.mdx @@ -4,7 +4,7 @@ title: "$colorRole" Changes the color of given role ID -#### Usage +## Usage ```cc $colorRole[Role ID;Primary Color (i.e hex or int);Second Color (optional);Third Color (optional)] ``` diff --git a/content/docs/(functions)/Role/createRole.mdx b/content/docs/(functions)/Role/createRole.mdx index a92b7e26..e046d7a9 100644 --- a/content/docs/(functions)/Role/createRole.mdx +++ b/content/docs/(functions)/Role/createRole.mdx @@ -4,7 +4,7 @@ title: "$createRole" Creates a role in the server -#### Usage: +## Usage: `$createRole[name;color (optional);mentionable (optional);hoisted (optional);position (optional);permission;permission;...;return role id (yes/no, default no, optional)]` #### Parameters: diff --git a/content/docs/(functions)/Role/deleteRoles.mdx b/content/docs/(functions)/Role/deleteRoles.mdx index 469a2b70..83c73ad0 100644 --- a/content/docs/(functions)/Role/deleteRoles.mdx +++ b/content/docs/(functions)/Role/deleteRoles.mdx @@ -4,7 +4,7 @@ title: "$deleteRoles" Deletes one or more roles from the server. -#### Usage: +## Usage: `$deleteRoles[roleID1;roleID2;roleID3;...]` diff --git a/content/docs/(functions)/Role/findRole.mdx b/content/docs/(functions)/Role/findRole.mdx index f8824952..757e7275 100644 --- a/content/docs/(functions)/Role/findRole.mdx +++ b/content/docs/(functions)/Role/findRole.mdx @@ -4,7 +4,7 @@ title: "$findRole" Searches for a role by its ID, mention, or name. This function allows you to retrieve a role's ID based on the provided search query. -#### Usage: +## Usage: `$findRole[ID/mention/name;return current channelID, (yes/no) (Optional, default=yes)]` diff --git a/content/docs/(functions)/Role/getRoleColor.mdx b/content/docs/(functions)/Role/getRoleColor.mdx index a06fc47b..7d2f6623 100644 --- a/content/docs/(functions)/Role/getRoleColor.mdx +++ b/content/docs/(functions)/Role/getRoleColor.mdx @@ -4,7 +4,7 @@ title: "$getRoleColor" Retrieves the hexadecimal color code of a role. -#### Usage +## Usage ```cc $getRoleColor[roleID] ``` diff --git a/content/docs/(functions)/Role/giveRoles.mdx b/content/docs/(functions)/Role/giveRoles.mdx index 5d4bf7b6..f1b93554 100644 --- a/content/docs/(functions)/Role/giveRoles.mdx +++ b/content/docs/(functions)/Role/giveRoles.mdx @@ -4,7 +4,7 @@ title: "$giveRoles" Grants one or more roles to a specified user. -#### Usage: +## Usage: `$giveRoles[userID;roleID 1;roleID 2;roleID 3;...]` diff --git a/content/docs/(functions)/Role/guildRoles.mdx b/content/docs/(functions)/Role/guildRoles.mdx index 83005e49..cb4a588a 100644 --- a/content/docs/(functions)/Role/guildRoles.mdx +++ b/content/docs/(functions)/Role/guildRoles.mdx @@ -6,7 +6,7 @@ Returns a list of all roles in the guild, displaying their names, IDs, or mentio You can specify the type of information you want (ID, name, or mention) and limit the number of roles returned. -#### Usage: +## Usage: `$guildRoles[type;amount;separator]` diff --git a/content/docs/(functions)/Role/hasRole.mdx b/content/docs/(functions)/Role/hasRole.mdx index 5241f37b..a3601562 100644 --- a/content/docs/(functions)/Role/hasRole.mdx +++ b/content/docs/(functions)/Role/hasRole.mdx @@ -4,7 +4,7 @@ title: "$hasRole" Determines if a user possesses a specific role within the server. Returns `true` if the user has the role, and `false` otherwise. -#### Usage +## Usage ```cc $hasRole[userID;roleID] ``` diff --git a/content/docs/(functions)/Role/highestRole.mdx b/content/docs/(functions)/Role/highestRole.mdx index 440e3309..17025c3d 100644 --- a/content/docs/(functions)/Role/highestRole.mdx +++ b/content/docs/(functions)/Role/highestRole.mdx @@ -4,7 +4,7 @@ title: "$highestRole" Retrieves the highest role (in terms of hierarchy) a user has in the current guild. -#### Usage: +## Usage: `$highestRole[userID]` - Returns the highest role of the user with the specified `userID`. diff --git a/content/docs/(functions)/Role/highestServerRole.mdx b/content/docs/(functions)/Role/highestServerRole.mdx index c8a356d2..5ce8a247 100644 --- a/content/docs/(functions)/Role/highestServerRole.mdx +++ b/content/docs/(functions)/Role/highestServerRole.mdx @@ -4,7 +4,7 @@ title: "$highestServerRole" Retrieves the ID of the server's highest role. This is the role with the highest position in the server's role hierarchy. -#### Usage +## Usage ```cc $highestServerRole ``` diff --git a/content/docs/(functions)/Role/lowestRole.mdx b/content/docs/(functions)/Role/lowestRole.mdx index 4e8ff913..71e76ced 100644 --- a/content/docs/(functions)/Role/lowestRole.mdx +++ b/content/docs/(functions)/Role/lowestRole.mdx @@ -4,7 +4,7 @@ title: "$lowestRole" Returns the user's lowest role in the current guild. You can specify a user ID, or if omitted, it will use the command executor (the user who ran the command). "Lowest" refers to the role with the lowest position in the server's role hierarchy (typically, the role created first). -#### Usage: +## Usage: * `$lowestRole[userID]` - Returns the lowest role for the user with the specified `userID`. * `$lowestRole` - Returns the lowest role for the user who executed the command. diff --git a/content/docs/(functions)/Role/lowestServerRole.mdx b/content/docs/(functions)/Role/lowestServerRole.mdx index c49c6d8b..a8400bcd 100644 --- a/content/docs/(functions)/Role/lowestServerRole.mdx +++ b/content/docs/(functions)/Role/lowestServerRole.mdx @@ -4,7 +4,7 @@ title: "$lowestServerRole" Retrieves the ID of the server's lowest role (the role with the highest position in the role hierarchy). -#### Usage +## Usage ```cc $lowestServerRole ``` diff --git a/content/docs/(functions)/Role/modifyRole.mdx b/content/docs/(functions)/Role/modifyRole.mdx index 9d154e0f..4bbe15f1 100644 --- a/content/docs/(functions)/Role/modifyRole.mdx +++ b/content/docs/(functions)/Role/modifyRole.mdx @@ -4,7 +4,7 @@ title: "$modifyRole" Modifies the properties of a role, such as its name, color, mentionability, hoisted status, and position. -#### Usage: +## Usage: `$modifyRole[roleID;name (optional);color (optional);mentionable (yes/no, optional);hoisted (yes/no, optional);position (optional)]` diff --git a/content/docs/(functions)/Role/modifyRolePerms.mdx b/content/docs/(functions)/Role/modifyRolePerms.mdx index b229acd0..ef869c69 100644 --- a/content/docs/(functions)/Role/modifyRolePerms.mdx +++ b/content/docs/(functions)/Role/modifyRolePerms.mdx @@ -4,7 +4,7 @@ title: "$modifyRolePerms" Modifies the permissions of a specified role. -#### Usage: +## Usage: `$modifyRolePerms[roleID;+perm1;-perm2;/perm3;+perm4;...]` diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index f8215829..e5e55b80 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -4,7 +4,7 @@ title: "$role" A powerful and compact function to retrieve various properties of a Discord role! -### Usage +## Usage ```cc $role[roleid;property] ``` diff --git a/content/docs/(functions)/Role/roleCount.mdx b/content/docs/(functions)/Role/roleCount.mdx index 336e7b96..99a0cad7 100644 --- a/content/docs/(functions)/Role/roleCount.mdx +++ b/content/docs/(functions)/Role/roleCount.mdx @@ -4,7 +4,7 @@ title: "$roleCount" The `$roleCount` function returns the total number of roles present in your Discord server (guild). -#### Usage +## Usage ```cc $roleCount ``` diff --git a/content/docs/(functions)/Role/roleExists.mdx b/content/docs/(functions)/Role/roleExists.mdx index a028da6d..c0853fe8 100644 --- a/content/docs/(functions)/Role/roleExists.mdx +++ b/content/docs/(functions)/Role/roleExists.mdx @@ -4,7 +4,7 @@ title: "$roleExists" Checks if a role exists within the server and returns a boolean value (true or false). -#### Usage: +## Usage: `$roleExists[Role Name/ID]` diff --git a/content/docs/(functions)/Role/roleID.mdx b/content/docs/(functions)/Role/roleID.mdx index 8ff78d6d..af23e642 100644 --- a/content/docs/(functions)/Role/roleID.mdx +++ b/content/docs/(functions)/Role/roleID.mdx @@ -4,7 +4,7 @@ title: "$roleID" Retrieves the ID of a specified role. -#### Usage: +## Usage: `$roleID[ROLE NAME]` diff --git a/content/docs/(functions)/Role/roleMembersCount.mdx b/content/docs/(functions)/Role/roleMembersCount.mdx index a6ef0c80..e1633ee2 100644 --- a/content/docs/(functions)/Role/roleMembersCount.mdx +++ b/content/docs/(functions)/Role/roleMembersCount.mdx @@ -10,7 +10,7 @@ The data used by this function comes from the bot's cache, not the Discord API d -#### Usage +## Usage ```cc $roleMembersCount[roleId] ``` diff --git a/content/docs/(functions)/Role/roleName.mdx b/content/docs/(functions)/Role/roleName.mdx index 4c8e4cf6..8e4e850b 100644 --- a/content/docs/(functions)/Role/roleName.mdx +++ b/content/docs/(functions)/Role/roleName.mdx @@ -4,7 +4,7 @@ title: "$roleName" Retrieves the name of a role using its ID. -#### Usage: +## Usage: `$roleName[roleID]` diff --git a/content/docs/(functions)/Role/rolePerms.mdx b/content/docs/(functions)/Role/rolePerms.mdx index 9c07c94f..24bd687b 100644 --- a/content/docs/(functions)/Role/rolePerms.mdx +++ b/content/docs/(functions)/Role/rolePerms.mdx @@ -4,7 +4,7 @@ title: "$rolePerms" Returns the permissions a role has. -#### Usage: +## Usage: `$rolePerms[roleID;separator (optional)]` diff --git a/content/docs/(functions)/Role/rolePosition.mdx b/content/docs/(functions)/Role/rolePosition.mdx index dca7b6cd..83a6dcfd 100644 --- a/content/docs/(functions)/Role/rolePosition.mdx +++ b/content/docs/(functions)/Role/rolePosition.mdx @@ -4,7 +4,7 @@ title: "$rolePosition" Returns the position of a role in the server's role hierarchy. Roles with higher positions appear higher in the server's role list. -#### Usage: +## Usage: `$rolePosition[role ID]` diff --git a/content/docs/(functions)/Role/setRoles.mdx b/content/docs/(functions)/Role/setRoles.mdx index 2a8fa4c4..7b08035e 100644 --- a/content/docs/(functions)/Role/setRoles.mdx +++ b/content/docs/(functions)/Role/setRoles.mdx @@ -4,7 +4,7 @@ title: "$setRoles" Gives a user specific roles, removing all other roles. This is useful for setting a user's roles to a specific configuration, like assigning a "Muted" role and removing all other roles. -#### Usage: +## Usage: ```cc $setRoles[userID;roleID 1;roleID 2;roleID 3;...] diff --git a/content/docs/(functions)/Role/takeRoles.mdx b/content/docs/(functions)/Role/takeRoles.mdx index b2abb4cd..e177c230 100644 --- a/content/docs/(functions)/Role/takeRoles.mdx +++ b/content/docs/(functions)/Role/takeRoles.mdx @@ -4,7 +4,7 @@ title: "$takeRoles" Takes away a role from a user. -#### Usage: +## Usage: `$takeRoles[userID;roleID 1;roleID 2;roleID 3;...]` diff --git a/content/docs/(functions)/Role/toggleRoles.mdx b/content/docs/(functions)/Role/toggleRoles.mdx index e7db5eb3..0f0d5454 100644 --- a/content/docs/(functions)/Role/toggleRoles.mdx +++ b/content/docs/(functions)/Role/toggleRoles.mdx @@ -4,7 +4,7 @@ title: "$toggleRoles" Toggles roles on a user. This means it removes specified roles if the user already has them, and adds them if they don't. -#### Usage: +## Usage: `$toggleRoles[userID;roleID 1;roleID 2;roleID 3;...]` diff --git a/content/docs/(functions)/Server/addEmoji.mdx b/content/docs/(functions)/Server/addEmoji.mdx index 9fbe9c54..714fe241 100644 --- a/content/docs/(functions)/Server/addEmoji.mdx +++ b/content/docs/(functions)/Server/addEmoji.mdx @@ -4,7 +4,7 @@ title: "$addEmoji" Adds an emoji to the current Discord server (guild). You can optionally restrict the emoji's use to specific roles. -#### Usage +## Usage ```cc $addEmoji[url;name;returnEmoji (yes/no)(optional);roleID1;roleID2;...] ``` diff --git a/content/docs/(functions)/Server/allMembersCount.mdx b/content/docs/(functions)/Server/allMembersCount.mdx index a23d78a3..9dc1463c 100644 --- a/content/docs/(functions)/Server/allMembersCount.mdx +++ b/content/docs/(functions)/Server/allMembersCount.mdx @@ -4,7 +4,7 @@ title: "$allMembersCount" Returns the total number of users the bot is currently serving across all servers it's in. -#### Usage +## Usage ```cc $allMembersCount ``` diff --git a/content/docs/(functions)/Server/guild.mdx b/content/docs/(functions)/Server/guild.mdx index aa4f6b07..cbd55f8a 100644 --- a/content/docs/(functions)/Server/guild.mdx +++ b/content/docs/(functions)/Server/guild.mdx @@ -4,7 +4,7 @@ title: "$guild" A versatile function packed with information about the current server! -### Usage +## Usage ```cc $guild[property] ``` diff --git a/content/docs/(functions)/Server/membersCount.mdx b/content/docs/(functions)/Server/membersCount.mdx index d44b92ae..4adfa303 100644 --- a/content/docs/(functions)/Server/membersCount.mdx +++ b/content/docs/(functions)/Server/membersCount.mdx @@ -4,7 +4,7 @@ title: "$membersCount" Returns the amount of users in your server/guild! -#### Usage +## Usage ```cc $membersCount ``` diff --git a/content/docs/(functions)/Server/ownerID.mdx b/content/docs/(functions)/Server/ownerID.mdx index d23bf4e1..2094e7aa 100644 --- a/content/docs/(functions)/Server/ownerID.mdx +++ b/content/docs/(functions)/Server/ownerID.mdx @@ -4,7 +4,7 @@ title: "$ownerID" Returns the guild's owner ID. -#### Usage +## Usage ```cc $ownerID ``` diff --git a/content/docs/(functions)/Server/serverBanner.mdx b/content/docs/(functions)/Server/serverBanner.mdx index 589a21e5..de4ba587 100644 --- a/content/docs/(functions)/Server/serverBanner.mdx +++ b/content/docs/(functions)/Server/serverBanner.mdx @@ -4,7 +4,7 @@ title: "$serverBanner" Returns the current server banner -#### Usage +## Usage ```cc $serverBanner[size (optional);dynamic (yes/no)(optional)] ``` diff --git a/content/docs/(functions)/Server/serverBoostCount.mdx b/content/docs/(functions)/Server/serverBoostCount.mdx index 6beb4c1c..0ac7fab8 100644 --- a/content/docs/(functions)/Server/serverBoostCount.mdx +++ b/content/docs/(functions)/Server/serverBoostCount.mdx @@ -4,7 +4,7 @@ title: "$serverBoostCount" Returns the number of boosts this server has. -#### Usage +## Usage ```cc $serverBoostCount ``` diff --git a/content/docs/(functions)/Server/serverBoostLevel.mdx b/content/docs/(functions)/Server/serverBoostLevel.mdx index 894f91c1..bd75250c 100644 --- a/content/docs/(functions)/Server/serverBoostLevel.mdx +++ b/content/docs/(functions)/Server/serverBoostLevel.mdx @@ -4,7 +4,7 @@ title: "$serverBoostLevel" Returns the boost level of the server. -#### Usage +## Usage ```cc $serverBoostLevel ``` diff --git a/content/docs/(functions)/Server/serverContentFilter.mdx b/content/docs/(functions)/Server/serverContentFilter.mdx index 2213f867..1b7181be 100644 --- a/content/docs/(functions)/Server/serverContentFilter.mdx +++ b/content/docs/(functions)/Server/serverContentFilter.mdx @@ -4,7 +4,7 @@ title: "$serverContentFilter" Returns the content filter level of this guild. This determines the level of explicit content filtering applied to media content within the server. -#### Usage +## Usage ```cc $serverContentFilter ``` diff --git a/content/docs/(functions)/Server/serverDescription.mdx b/content/docs/(functions)/Server/serverDescription.mdx index 7b0bd46b..d7419715 100644 --- a/content/docs/(functions)/Server/serverDescription.mdx +++ b/content/docs/(functions)/Server/serverDescription.mdx @@ -4,7 +4,7 @@ title: "$serverDescription" Returns the current server description -#### Usage +## Usage ```cc $serverDescription ``` @@ -25,7 +25,7 @@ Custom Command Support Server Returns the current server description. This command retrieves the description set for the Discord server. -#### Usage +## Usage ```cc $serverDescription ``` diff --git a/content/docs/(functions)/Server/serverEmojis.mdx b/content/docs/(functions)/Server/serverEmojis.mdx index 597692d6..d797c944 100644 --- a/content/docs/(functions)/Server/serverEmojis.mdx +++ b/content/docs/(functions)/Server/serverEmojis.mdx @@ -4,7 +4,7 @@ title: "serverEmojis" Returns the server emojis. -#### Usage +## Usage ```cc $serverEmojis ``` diff --git a/content/docs/(functions)/Server/serverFeatures.mdx b/content/docs/(functions)/Server/serverFeatures.mdx index 18f0a9db..ec055b10 100644 --- a/content/docs/(functions)/Server/serverFeatures.mdx +++ b/content/docs/(functions)/Server/serverFeatures.mdx @@ -4,7 +4,7 @@ title: "serverFeatures" Returns the server features. This function returns a comma-separated list of features enabled on the server. -#### Usage +## Usage ```cc $serverFeatures ``` diff --git a/content/docs/(functions)/Server/serverIcon.mdx b/content/docs/(functions)/Server/serverIcon.mdx index c8d1cf5f..07439e13 100644 --- a/content/docs/(functions)/Server/serverIcon.mdx +++ b/content/docs/(functions)/Server/serverIcon.mdx @@ -4,7 +4,7 @@ title: "$serverIcon" Returns the current server's icon. -#### Usage +## Usage ```cc $serverIcon ``` diff --git a/content/docs/(functions)/Server/serverName.mdx b/content/docs/(functions)/Server/serverName.mdx index 8b47cdeb..03b1c1d6 100644 --- a/content/docs/(functions)/Server/serverName.mdx +++ b/content/docs/(functions)/Server/serverName.mdx @@ -4,7 +4,7 @@ title: "$serverName" Returns the name of the current server. -#### Usage +## Usage ```cc $serverName ``` diff --git a/content/docs/(functions)/Server/serverRegion.mdx b/content/docs/(functions)/Server/serverRegion.mdx index dd0370cb..ab448623 100644 --- a/content/docs/(functions)/Server/serverRegion.mdx +++ b/content/docs/(functions)/Server/serverRegion.mdx @@ -4,7 +4,7 @@ title: "$serverRegion" Returns the current server region or `undefined` if not available. -#### Usage +## Usage ```cc $serverRegion ``` diff --git a/content/docs/(functions)/Server/serverSplash.mdx b/content/docs/(functions)/Server/serverSplash.mdx index 8ea08bae..6f0fddda 100644 --- a/content/docs/(functions)/Server/serverSplash.mdx +++ b/content/docs/(functions)/Server/serverSplash.mdx @@ -4,7 +4,7 @@ title: "$serverSplash" Returns the current server invite splash -#### Usage +## Usage ```cc $serverSplash[size (optional)] ``` diff --git a/content/docs/(functions)/Server/serverVerificationLevel.mdx b/content/docs/(functions)/Server/serverVerificationLevel.mdx index 213d9c8e..93505f6d 100644 --- a/content/docs/(functions)/Server/serverVerificationLevel.mdx +++ b/content/docs/(functions)/Server/serverVerificationLevel.mdx @@ -4,7 +4,7 @@ title: "$serverVerificationLevel" Returns the verification level of the server -#### Usage +## Usage ```cc $serverVerificationLevel ``` diff --git a/content/docs/(functions)/Server/setGuildIcon.mdx b/content/docs/(functions)/Server/setGuildIcon.mdx index 2845f930..8db69823 100644 --- a/content/docs/(functions)/Server/setGuildIcon.mdx +++ b/content/docs/(functions)/Server/setGuildIcon.mdx @@ -4,7 +4,7 @@ title: "$setGuildIcon" Sets a new Icon for the server -#### Usage +## Usage ```cc $setGuildIcon[URL] ``` diff --git a/content/docs/(functions)/Server/setGuildName.mdx b/content/docs/(functions)/Server/setGuildName.mdx index 7d6e3c85..13c40921 100644 --- a/content/docs/(functions)/Server/setGuildName.mdx +++ b/content/docs/(functions)/Server/setGuildName.mdx @@ -4,7 +4,7 @@ title: "$setGuildName" Sets the name of your server to something, you have put in. -#### Usage +## Usage ```cc $setGuildName[name] ``` diff --git a/content/docs/(functions)/Server/systemChannelID.mdx b/content/docs/(functions)/Server/systemChannelID.mdx index 578cbfca..7fe6ef42 100644 --- a/content/docs/(functions)/Server/systemChannelID.mdx +++ b/content/docs/(functions)/Server/systemChannelID.mdx @@ -6,7 +6,7 @@ title: "$systemChannelID" Returns the system channel ID of this server (if any) -#### Usage +## Usage ```cc $systemChannelID ``` diff --git a/content/docs/(functions)/Text/Components/awaitButton.mdx b/content/docs/(functions)/Text/Components/awaitButton.mdx index a644d1a6..fc4d73f7 100644 --- a/content/docs/(functions)/Text/Components/awaitButton.mdx +++ b/content/docs/(functions)/Text/Components/awaitButton.mdx @@ -10,7 +10,7 @@ This way, you can send a message with buttons by using `{button:label:style/url: -#### Usage +## Usage ```cc $awaitButton[Message (optional);user id (optional, default:author);timeout (optional, default:15s);button id1 (optional);button id2...] ``` diff --git a/content/docs/(functions)/Text/Components/disableButton.mdx b/content/docs/(functions)/Text/Components/disableButton.mdx index 27e1dfa2..4ebd87e2 100644 --- a/content/docs/(functions)/Text/Components/disableButton.mdx +++ b/content/docs/(functions)/Text/Components/disableButton.mdx @@ -4,7 +4,7 @@ title: "$disableButton" Disables a button using its `(ID/label/Emoji/URL)`. -#### Usage +## Usage ```cc $disableButton[Message ID;Label/Emoji/URL/ID (optional, default: disables the last button); Channel ID (optional, default $channelID)] ``` diff --git a/content/docs/(functions)/Text/Components/editButton.mdx b/content/docs/(functions)/Text/Components/editButton.mdx index e0b5b7fe..daf9d492 100644 --- a/content/docs/(functions)/Text/Components/editButton.mdx +++ b/content/docs/(functions)/Text/Components/editButton.mdx @@ -4,7 +4,7 @@ title: "$editButton" Edits an existing button using its `(ID/label/Emoji/URL)`. -#### Usage +## Usage ```cc $editButton[Message ID;Query (optional, default: edit the last button);label/style/emoji/disabled/url/custom_id;New Value] ``` diff --git a/content/docs/(functions)/Text/Components/removeButton.mdx b/content/docs/(functions)/Text/Components/removeButton.mdx index fe94aa7c..847ec051 100644 --- a/content/docs/(functions)/Text/Components/removeButton.mdx +++ b/content/docs/(functions)/Text/Components/removeButton.mdx @@ -4,7 +4,7 @@ title: "$removeButton" Removes a button from an existing message using its `(ID/label/Emoji/URL)`. -#### Usage +## Usage ```cc $removeButton[Message ID;Label/Emoji/URL/ID (optional, empty means removing the last button)] ``` diff --git a/content/docs/(functions)/Text/Components/removeButtons.mdx b/content/docs/(functions)/Text/Components/removeButtons.mdx index c5849320..54343c38 100644 --- a/content/docs/(functions)/Text/Components/removeButtons.mdx +++ b/content/docs/(functions)/Text/Components/removeButtons.mdx @@ -4,7 +4,7 @@ title: "$removeButtons" Removes multiple buttons from a message using their IDs. -#### Usage +## Usage ```cc $removeButtons[Message ID;Button ID1;Button ID2...] ``` diff --git a/content/docs/(functions)/Text/Components/selectMenu.mdx b/content/docs/(functions)/Text/Components/selectMenu.mdx index abd2281c..1c4cef2b 100644 --- a/content/docs/(functions)/Text/Components/selectMenu.mdx +++ b/content/docs/(functions)/Text/Components/selectMenu.mdx @@ -4,7 +4,7 @@ title: "$selectMenu" Creates a Menu with options. -#### Usage +## Usage ```cc $selectMenu[{menu structure}] ``` diff --git a/content/docs/(functions)/Text/Embed/addField.mdx b/content/docs/(functions)/Text/Embed/addField.mdx index dbfaae04..ec1130d9 100644 --- a/content/docs/(functions)/Text/Embed/addField.mdx +++ b/content/docs/(functions)/Text/Embed/addField.mdx @@ -4,7 +4,7 @@ title: "$addField" Adds fields to a message embed. -#### Usage +## Usage ```cc $addField[title;value;inline(yes/no default=yes)(optional)] ``` diff --git a/content/docs/(functions)/Text/Embed/addTimestamp.mdx b/content/docs/(functions)/Text/Embed/addTimestamp.mdx index e2b6ede9..cfb8c780 100644 --- a/content/docs/(functions)/Text/Embed/addTimestamp.mdx +++ b/content/docs/(functions)/Text/Embed/addTimestamp.mdx @@ -4,7 +4,7 @@ title: "$addTimestamp" Adds a timestamp to a message embed. -#### Usage +## Usage ```cc $addTimestamp ``` or `$addTimestamp[ms]` diff --git a/content/docs/(functions)/Text/Embed/author.mdx b/content/docs/(functions)/Text/Embed/author.mdx index 852e41ec..5c22d7f8 100644 --- a/content/docs/(functions)/Text/Embed/author.mdx +++ b/content/docs/(functions)/Text/Embed/author.mdx @@ -4,7 +4,7 @@ title: "$author" Adds an author to a message embed, with an optional icon url and/or hyperlink. -#### Usage +## Usage ```cc $author[text;icon url(optional);hyperlink(optional)] ``` diff --git a/content/docs/(functions)/Text/Embed/description.mdx b/content/docs/(functions)/Text/Embed/description.mdx index d672a9ee..11379d50 100644 --- a/content/docs/(functions)/Text/Embed/description.mdx +++ b/content/docs/(functions)/Text/Embed/description.mdx @@ -4,7 +4,7 @@ title: "$description" Adds a description to a message embed. -#### Usage +## Usage ```cc $description[your text] ``` diff --git a/content/docs/(functions)/Text/Embed/footer.mdx b/content/docs/(functions)/Text/Embed/footer.mdx index 9a4f1f62..f71fc8cc 100644 --- a/content/docs/(functions)/Text/Embed/footer.mdx +++ b/content/docs/(functions)/Text/Embed/footer.mdx @@ -4,7 +4,7 @@ title: "$footer" Adds a footer to a message embed with an optional icon url -#### Usage +## Usage ```cc $footer[text;icon url(optional)] ``` diff --git a/content/docs/(functions)/Text/Embed/image.mdx b/content/docs/(functions)/Text/Embed/image.mdx index 0a28a6e7..9cc5f814 100644 --- a/content/docs/(functions)/Text/Embed/image.mdx +++ b/content/docs/(functions)/Text/Embed/image.mdx @@ -4,7 +4,7 @@ title: "$image" Adds an image to a message embed -#### Usage +## Usage ```cc $image[YOUR URL HERE] ``` diff --git a/content/docs/(functions)/Text/Embed/thumbnail.mdx b/content/docs/(functions)/Text/Embed/thumbnail.mdx index 9b1172ff..9d57222c 100644 --- a/content/docs/(functions)/Text/Embed/thumbnail.mdx +++ b/content/docs/(functions)/Text/Embed/thumbnail.mdx @@ -4,7 +4,7 @@ title: "$thumbnail" Adds a thumbnail to a message embed. -#### Usage +## Usage ```cc $thumbnail[YOUR URL HERE] ``` diff --git a/content/docs/(functions)/Text/Embed/title.mdx b/content/docs/(functions)/Text/Embed/title.mdx index 0b6eddff..df03e2c9 100644 --- a/content/docs/(functions)/Text/Embed/title.mdx +++ b/content/docs/(functions)/Text/Embed/title.mdx @@ -4,7 +4,7 @@ title: "$title" Adds a title to a message embed. -#### Usage +## Usage ```cc $title[YOUR TITLE TEXT HERE;url(optional)] ``` diff --git a/content/docs/(functions)/Text/Math/abbreviate.mdx b/content/docs/(functions)/Text/Math/abbreviate.mdx index 864bd443..cb516e8f 100644 --- a/content/docs/(functions)/Text/Math/abbreviate.mdx +++ b/content/docs/(functions)/Text/Math/abbreviate.mdx @@ -9,7 +9,7 @@ Abbreviation to: * b - billions * t - trillions -#### Usage +## Usage ```cc $abbreviate[number] ``` diff --git a/content/docs/(functions)/Text/Math/divide.mdx b/content/docs/(functions)/Text/Math/divide.mdx index aebca3e6..46ef6e04 100644 --- a/content/docs/(functions)/Text/Math/divide.mdx +++ b/content/docs/(functions)/Text/Math/divide.mdx @@ -4,7 +4,7 @@ title: "$divide" divides (a) number(s) from each other, from left to right -#### Usage +## Usage ```cc $divide[10;2;...] ``` diff --git a/content/docs/(functions)/Text/Math/math.mdx b/content/docs/(functions)/Text/Math/math.mdx index bc69b369..21eadb83 100644 --- a/content/docs/(functions)/Text/Math/math.mdx +++ b/content/docs/(functions)/Text/Math/math.mdx @@ -5,11 +5,11 @@ title: "$math" Calculates numbers with any mathematically correct quantifier(s) in between. -#### Usage +## Usage ```cc $math[10*(2+5)/7*8-2] ``` -e#### Usage +e## Usage ```cc $math[Expression;Name1=Value1;Name1=Value2] ``` diff --git a/content/docs/(functions)/Text/Math/modulo.mdx b/content/docs/(functions)/Text/Math/modulo.mdx index 97c1fab4..42763b5c 100644 --- a/content/docs/(functions)/Text/Math/modulo.mdx +++ b/content/docs/(functions)/Text/Math/modulo.mdx @@ -4,7 +4,7 @@ title: "$modulo" calculates the remainder of a division operation -#### Usage +## Usage ```cc $modulo[10;2;...] ``` diff --git a/content/docs/(functions)/Text/Math/multi.mdx b/content/docs/(functions)/Text/Math/multi.mdx index 953aaf85..c4600abb 100644 --- a/content/docs/(functions)/Text/Math/multi.mdx +++ b/content/docs/(functions)/Text/Math/multi.mdx @@ -4,7 +4,7 @@ title: "$multi" Multiplies (a) number(s) with each other -#### Usage +## Usage ```cc $multi[10;4;...] ``` diff --git a/content/docs/(functions)/Text/Math/ordinal.mdx b/content/docs/(functions)/Text/Math/ordinal.mdx index efef783c..11e9cbe1 100644 --- a/content/docs/(functions)/Text/Math/ordinal.mdx +++ b/content/docs/(functions)/Text/Math/ordinal.mdx @@ -5,7 +5,7 @@ title: "$ordinal" adds the correct suffix after the number `st`,`nd`,`rd`,`th` -#### Usage +## Usage ```cc $ordinal[number] ``` diff --git a/content/docs/(functions)/Text/Math/round.mdx b/content/docs/(functions)/Text/Math/round.mdx index a01dd387..1e02ca81 100644 --- a/content/docs/(functions)/Text/Math/round.mdx +++ b/content/docs/(functions)/Text/Math/round.mdx @@ -4,7 +4,7 @@ title: "$round" Rounds the number to the nearest integer. -#### Usage +## Usage ```cc $round[number] ``` diff --git a/content/docs/(functions)/Text/Math/roundTenth.mdx b/content/docs/(functions)/Text/Math/roundTenth.mdx index 795c38e6..df317cce 100644 --- a/content/docs/(functions)/Text/Math/roundTenth.mdx +++ b/content/docs/(functions)/Text/Math/roundTenth.mdx @@ -4,7 +4,7 @@ title: "$roundTenth" Rounds the number to the nearest decimal specified in `toFixed` -#### Usage +## Usage ```cc $roundTenth[number;tofixed] ``` diff --git a/content/docs/(functions)/Text/Math/sub.mdx b/content/docs/(functions)/Text/Math/sub.mdx index db3a3186..c216d68a 100644 --- a/content/docs/(functions)/Text/Math/sub.mdx +++ b/content/docs/(functions)/Text/Math/sub.mdx @@ -4,7 +4,7 @@ title: "$sub" Subtracts (a) number(s) from each other -#### Usage +## Usage ```cc $sub[10;4;...] ``` diff --git a/content/docs/(functions)/Text/Math/sum.mdx b/content/docs/(functions)/Text/Math/sum.mdx index 420a2cf1..72e277cd 100644 --- a/content/docs/(functions)/Text/Math/sum.mdx +++ b/content/docs/(functions)/Text/Math/sum.mdx @@ -4,7 +4,7 @@ title: "$sum" Sum's up the given args -#### Usage +## Usage ```cc $sum[1;3;...] ``` diff --git a/content/docs/(functions)/Text/Math/truncate.mdx b/content/docs/(functions)/Text/Math/truncate.mdx index 4a44a743..29ca3dc2 100644 --- a/content/docs/(functions)/Text/Math/truncate.mdx +++ b/content/docs/(functions)/Text/Math/truncate.mdx @@ -4,7 +4,7 @@ title: "$truncate" Truncates the number to 0 decimals. -#### Usage +## Usage ```cc $truncate[number] ``` diff --git a/content/docs/(functions)/Text/Object/getObject.mdx b/content/docs/(functions)/Text/Object/getObject.mdx index 9257d2d5..caeb65f9 100644 --- a/content/docs/(functions)/Text/Object/getObject.mdx +++ b/content/docs/(functions)/Text/Object/getObject.mdx @@ -4,7 +4,7 @@ title: "$getObject" returns the JSON of the created/modified object -#### Usage +## Usage ```cc $getObject[spaces(optional, default 0)] ``` diff --git a/content/docs/(functions)/Text/Object/objectCreate.mdx b/content/docs/(functions)/Text/Object/objectCreate.mdx index 21daee85..2b8a0849 100644 --- a/content/docs/(functions)/Text/Object/objectCreate.mdx +++ b/content/docs/(functions)/Text/Object/objectCreate.mdx @@ -5,7 +5,7 @@ title: "$objectCreate" Creates a json object from the input Use `$getObjectProperty` or `$objectGet` to get a key value. -#### Usage +## Usage ```cc $objectCreate[JSON string] ``` diff --git a/content/docs/(functions)/Text/Object/objectGet.mdx b/content/docs/(functions)/Text/Object/objectGet.mdx index 67765984..29a792a4 100644 --- a/content/docs/(functions)/Text/Object/objectGet.mdx +++ b/content/docs/(functions)/Text/Object/objectGet.mdx @@ -4,7 +4,7 @@ title: "$objectGet" Get a object value/property by key, if the key is not found then return `undefined` (same as `$getObjectProperty`) -#### Usage +## Usage ```cc $objectGet[key] ``` diff --git a/content/docs/(functions)/Text/Object/objectSet.mdx b/content/docs/(functions)/Text/Object/objectSet.mdx index 699f10ec..17d749fb 100644 --- a/content/docs/(functions)/Text/Object/objectSet.mdx +++ b/content/docs/(functions)/Text/Object/objectSet.mdx @@ -4,7 +4,7 @@ title: "$objectSet" set an object property value by key -#### Usage +## Usage ```cc $objectSet[key;key;key....;value] ``` diff --git a/content/docs/(functions)/Text/Regex/regexMatch.mdx b/content/docs/(functions)/Text/Regex/regexMatch.mdx index f93811f0..1bbc9220 100644 --- a/content/docs/(functions)/Text/Regex/regexMatch.mdx +++ b/content/docs/(functions)/Text/Regex/regexMatch.mdx @@ -4,7 +4,7 @@ title: "$regexMatch" Matches a string with the given Regex Pattern and returns the matched text or multiple matches seperated by the seperator -#### Usage +## Usage ```cc $regexMatch[text;regexp;flags(optional);group index(optional, 0 by default) or all;separator (optional)] ``` diff --git a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx index c6955d9f..f3b6e8a7 100644 --- a/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx +++ b/content/docs/(functions)/Text/Regex/replaceTextWithRegex.mdx @@ -4,7 +4,7 @@ title: "$replaceTextWithRegex" Uses a regular expression to replace matching queries -#### Usage: +## Usage: `$replaceTextWithRegex[text;regex;flags;new text]`
    diff --git a/content/docs/(functions)/Text/channelNSFW.mdx b/content/docs/(functions)/Text/channelNSFW.mdx index f5530f44..59cc4c39 100644 --- a/content/docs/(functions)/Text/channelNSFW.mdx +++ b/content/docs/(functions)/Text/channelNSFW.mdx @@ -4,7 +4,7 @@ title: "$channelNSFW" Returns whether the channel is nsfw or not -#### Usage +## Usage ```cc $channelNSFW[channelID] ``` diff --git a/content/docs/(functions)/Text/charCount.mdx b/content/docs/(functions)/Text/charCount.mdx index 36d7389b..ef42d249 100644 --- a/content/docs/(functions)/Text/charCount.mdx +++ b/content/docs/(functions)/Text/charCount.mdx @@ -4,7 +4,7 @@ title: "$charCount[text]" this functions returns the number of characters in the provided text -#### Usage: +## Usage: `$charCount[text]`
    diff --git a/content/docs/(functions)/Text/disableMentions.mdx b/content/docs/(functions)/Text/disableMentions.mdx index a3597d93..dae4e99d 100644 --- a/content/docs/(functions)/Text/disableMentions.mdx +++ b/content/docs/(functions)/Text/disableMentions.mdx @@ -4,7 +4,7 @@ title: "$disableMentions" will not ping a user even though mentioned -#### Usage +## Usage ```cc $disableMentions ``` diff --git a/content/docs/(functions)/Text/isandhas/isBoosting.mdx b/content/docs/(functions)/Text/isandhas/isBoosting.mdx index 92e801df..22e11fb8 100644 --- a/content/docs/(functions)/Text/isandhas/isBoosting.mdx +++ b/content/docs/(functions)/Text/isandhas/isBoosting.mdx @@ -4,7 +4,7 @@ title: "$isBoosting" checks if a user is Boosting ,returns true or false -#### Usage +## Usage ```cc $isBoosting[userid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isBot.mdx b/content/docs/(functions)/Text/isandhas/isBot.mdx index c6ba7c65..5412059a 100644 --- a/content/docs/(functions)/Text/isandhas/isBot.mdx +++ b/content/docs/(functions)/Text/isandhas/isBot.mdx @@ -4,7 +4,7 @@ title: "$isbot" checks if the user is a bot or not ,returns true or false -#### Usage +## Usage ```cc $isbot ``` or `$isbot[userid]` diff --git a/content/docs/(functions)/Text/isandhas/isDeafened.mdx b/content/docs/(functions)/Text/isandhas/isDeafened.mdx index fd204915..c686d252 100644 --- a/content/docs/(functions)/Text/isandhas/isDeafened.mdx +++ b/content/docs/(functions)/Text/isandhas/isDeafened.mdx @@ -4,7 +4,7 @@ title: "$isDeafened" checks if a user is Deafened ,returns true,false or undefined -#### Usage +## Usage ```cc $isDeafened[userid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isEmoji.mdx b/content/docs/(functions)/Text/isandhas/isEmoji.mdx index eb1331d4..747cc68f 100644 --- a/content/docs/(functions)/Text/isandhas/isEmoji.mdx +++ b/content/docs/(functions)/Text/isandhas/isEmoji.mdx @@ -4,7 +4,7 @@ title: "$isEmoji" Checks if the given Emoji is a default emoji ,returns true or false -#### Usage +## Usage ```cc $isEmoji[emoji] ``` diff --git a/content/docs/(functions)/Text/isandhas/isHoisted.mdx b/content/docs/(functions)/Text/isandhas/isHoisted.mdx index 5b149af0..3a9a1f94 100644 --- a/content/docs/(functions)/Text/isandhas/isHoisted.mdx +++ b/content/docs/(functions)/Text/isandhas/isHoisted.mdx @@ -4,7 +4,7 @@ title: "$isHoisted" Checks if the given id of role is hoisted above all the other roles ,returns true or false -#### Usage +## Usage ```cc $isHoisted[roleid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isManaged.mdx b/content/docs/(functions)/Text/isandhas/isManaged.mdx index 181db7f2..b6d37540 100644 --- a/content/docs/(functions)/Text/isandhas/isManaged.mdx +++ b/content/docs/(functions)/Text/isandhas/isManaged.mdx @@ -4,7 +4,7 @@ title: "$isManaged" Checks if the given id of role is Managed ,returns true or false -#### Usage +## Usage ```cc $isManaged[roleid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isMentionable.mdx b/content/docs/(functions)/Text/isandhas/isMentionable.mdx index 6704e8f3..498422c4 100644 --- a/content/docs/(functions)/Text/isandhas/isMentionable.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentionable.mdx @@ -4,7 +4,7 @@ title: "$isMentionable" Checks if the given id of role is Mentionable ,returns true or false -#### Usage +## Usage ```cc $isMentionable[roleid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isMentioned.mdx b/content/docs/(functions)/Text/isandhas/isMentioned.mdx index 1dc0d943..ba49649b 100644 --- a/content/docs/(functions)/Text/isandhas/isMentioned.mdx +++ b/content/docs/(functions)/Text/isandhas/isMentioned.mdx @@ -4,7 +4,7 @@ title: "$isMentioned" Checks if the given id of userID/roleID/channelID/everyone is Mentioned ,returns true or false -#### Usage +## Usage ```cc $isMentioned[userID/roleID/channelID/everyone] ``` diff --git a/content/docs/(functions)/Text/isandhas/isMuted.mdx b/content/docs/(functions)/Text/isandhas/isMuted.mdx index 2a6c7bf7..807c0909 100644 --- a/content/docs/(functions)/Text/isandhas/isMuted.mdx +++ b/content/docs/(functions)/Text/isandhas/isMuted.mdx @@ -4,7 +4,7 @@ title: "$isMuted" checks if a user is selfMuted ,returns true,false or undefined -#### Usage +## Usage ```cc $isMuted[userid] ``` diff --git a/content/docs/(functions)/Text/isandhas/isNumber.mdx b/content/docs/(functions)/Text/isandhas/isNumber.mdx index a0c3865d..203c894f 100644 --- a/content/docs/(functions)/Text/isandhas/isNumber.mdx +++ b/content/docs/(functions)/Text/isandhas/isNumber.mdx @@ -4,7 +4,7 @@ title: "$isNumber" Checks if a string is a valid number. -#### Usage +## Usage ```cc $isNumber[number] ``` diff --git a/content/docs/(functions)/Text/isandhas/isTicket.mdx b/content/docs/(functions)/Text/isandhas/isTicket.mdx index fa4b1c1d..5bc52c4b 100644 --- a/content/docs/(functions)/Text/isandhas/isTicket.mdx +++ b/content/docs/(functions)/Text/isandhas/isTicket.mdx @@ -4,7 +4,7 @@ title: "$isTicket" checks if a channel is a ticket or not created with $newTicket function,returns true or false -#### Usage +## Usage ```cc $isTicket ``` or `$isTicket[channelid]` diff --git a/content/docs/(functions)/Text/isandhas/isValidHex.mdx b/content/docs/(functions)/Text/isandhas/isValidHex.mdx index b55597d6..100c730f 100644 --- a/content/docs/(functions)/Text/isandhas/isValidHex.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidHex.mdx @@ -4,7 +4,7 @@ title: "$isValidHex" checks if the given int or hex code or [color name](/CodeReferences/ref.embed.colors) is valid ,returns true,false -#### Usage +## Usage ```cc $isValidHex[int or hexcode or color name] ``` diff --git a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx index c949c109..cbf37fc1 100644 --- a/content/docs/(functions)/Text/isandhas/isValidInvite.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidInvite.mdx @@ -4,7 +4,7 @@ title: "$isValidInvite" checks if the given Invite code is valid ,returns true,false -#### Usage +## Usage ```cc $isValidInvite[invite code] ``` diff --git a/content/docs/(functions)/Text/isandhas/isValidLink.mdx b/content/docs/(functions)/Text/isandhas/isValidLink.mdx index 5729e339..82ac89fa 100644 --- a/content/docs/(functions)/Text/isandhas/isValidLink.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidLink.mdx @@ -4,7 +4,7 @@ title: "$isValidLink" checks if the given Link / url is valid ,returns true,false -#### Usage +## Usage ```cc $isValidLink[Link] ``` diff --git a/content/docs/(functions)/Text/isandhas/isValidObject.mdx b/content/docs/(functions)/Text/isandhas/isValidObject.mdx index 3399bfd1..110a6a62 100644 --- a/content/docs/(functions)/Text/isandhas/isValidObject.mdx +++ b/content/docs/(functions)/Text/isandhas/isValidObject.mdx @@ -4,7 +4,7 @@ title: "$isValidObject" checks if the given Object is valid ,returns true,false -#### Usage +## Usage ```cc $isValidObject[Object] ``` diff --git a/content/docs/(functions)/Text/mentionedChannels.mdx b/content/docs/(functions)/Text/mentionedChannels.mdx index 6bb06f28..3076a4e3 100644 --- a/content/docs/(functions)/Text/mentionedChannels.mdx +++ b/content/docs/(functions)/Text/mentionedChannels.mdx @@ -4,7 +4,7 @@ title: "$mentionedChannels" Returns the ID of one of the channels that was mentioned by the user -#### Usage +## Usage ```cc $mentionedChannels[number] ``` diff --git a/content/docs/(functions)/Text/mentionedRoles.mdx b/content/docs/(functions)/Text/mentionedRoles.mdx index d70d4f30..d57e1c09 100644 --- a/content/docs/(functions)/Text/mentionedRoles.mdx +++ b/content/docs/(functions)/Text/mentionedRoles.mdx @@ -4,7 +4,7 @@ title: "$mentionedRoles" Returns the ID of one of the roles that was mentioned by the user -#### Usage +## Usage ```cc $mentionedRoles[number] ``` diff --git a/content/docs/(functions)/Text/noMentionMessage.mdx b/content/docs/(functions)/Text/noMentionMessage.mdx index 6b2f5871..33cddae4 100644 --- a/content/docs/(functions)/Text/noMentionMessage.mdx +++ b/content/docs/(functions)/Text/noMentionMessage.mdx @@ -4,7 +4,7 @@ title: "$noMentionMessage" User's message without any mentions. (members, roles & channels) -#### Usage +## Usage ```cc $noMentionMessage ``` diff --git a/content/docs/(functions)/Text/only/onlyBotPerms.mdx b/content/docs/(functions)/Text/only/onlyBotPerms.mdx index 30e64595..13e787e3 100644 --- a/content/docs/(functions)/Text/only/onlyBotPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyBotPerms.mdx @@ -4,7 +4,7 @@ title: "$onlyBotPerms" Only if custom command bot has the permssions,user will be able to execute this command -#### Usage +## Usage ```cc $onlyBotPerms[perm;perm;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyForCategories.mdx b/content/docs/(functions)/Text/only/onlyForCategories.mdx index 545caa51..a62c2597 100644 --- a/content/docs/(functions)/Text/only/onlyForCategories.mdx +++ b/content/docs/(functions)/Text/only/onlyForCategories.mdx @@ -4,7 +4,7 @@ title: "$onlyForCategories" The command will only be executable in the provided categories. -#### Usage +## Usage ```cc $onlyForCategories[categoryID;categoryID;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyForIDs.mdx b/content/docs/(functions)/Text/only/onlyForIDs.mdx index 28dc2b7d..1f0a4e50 100644 --- a/content/docs/(functions)/Text/only/onlyForIDs.mdx +++ b/content/docs/(functions)/Text/only/onlyForIDs.mdx @@ -4,7 +4,7 @@ title: "$onlyForIDs" Only given user IDs will be able to execute this command -#### Usage +## Usage ```cc $onlyForIDs[userID;userID;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyForRoles.mdx b/content/docs/(functions)/Text/only/onlyForRoles.mdx index 7cdb5f01..084a2ddb 100644 --- a/content/docs/(functions)/Text/only/onlyForRoles.mdx +++ b/content/docs/(functions)/Text/only/onlyForRoles.mdx @@ -4,7 +4,7 @@ title: "$onlyForRoles" Only person with the given Roles will be able to execute this command -#### Usage +## Usage ```cc $onlyForRoles[roleID;roleID;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyIf.mdx b/content/docs/(functions)/Text/only/onlyIf.mdx index 1b59ee91..3be4a1d1 100644 --- a/content/docs/(functions)/Text/only/onlyIf.mdx +++ b/content/docs/(functions)/Text/only/onlyIf.mdx @@ -4,7 +4,7 @@ title: "$onlyIf" Continue the execution only if certain [expression](/CodeReferences/ref.expression) is satisfied, otherwise stop the execution and send the error message. In theory $onlyif can replace all other $onlyFor with the proper [expression](/CodeReferences/ref.expression) -#### Usage +## Usage ```cc $onlyif[Expression;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyNSFW.mdx b/content/docs/(functions)/Text/only/onlyNSFW.mdx index 82db9f34..ec43962f 100644 --- a/content/docs/(functions)/Text/only/onlyNSFW.mdx +++ b/content/docs/(functions)/Text/only/onlyNSFW.mdx @@ -4,7 +4,7 @@ title: "$onlyNSFW" Only in given nsfw channel user will be able to execute this command -#### Usage +## Usage ```cc $onlyNSFW[channelID;channelID;...;error message] ``` diff --git a/content/docs/(functions)/Text/only/onlyPerms.mdx b/content/docs/(functions)/Text/only/onlyPerms.mdx index cc48a85a..4f251e98 100644 --- a/content/docs/(functions)/Text/only/onlyPerms.mdx +++ b/content/docs/(functions)/Text/only/onlyPerms.mdx @@ -4,7 +4,7 @@ title: "$onlyPerms" Only if user has the given permssions,they will be able to execute this command -#### Usage +## Usage ```cc $onlyPerms[perm;perm;...;error message] ``` diff --git a/content/docs/(functions)/Text/repeatMessage.mdx b/content/docs/(functions)/Text/repeatMessage.mdx index e61a7ca6..164e36b6 100644 --- a/content/docs/(functions)/Text/repeatMessage.mdx +++ b/content/docs/(functions)/Text/repeatMessage.mdx @@ -4,7 +4,7 @@ title: "$repeatMessage" this functions repeats the provided message x times -#### Usage: +## Usage: `$repeatMessage[times;text]`
    diff --git a/content/docs/(functions)/Text/replaceText.mdx b/content/docs/(functions)/Text/replaceText.mdx index 850553f1..b340fba8 100644 --- a/content/docs/(functions)/Text/replaceText.mdx +++ b/content/docs/(functions)/Text/replaceText.mdx @@ -4,7 +4,7 @@ title: "$replaceText" Replaces `A` with `X` in `TEXT` -#### Usage: +## Usage: `$replaceText[some text;sample;new]`
    diff --git a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx index ad0aa44f..56a54103 100644 --- a/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/advancedTextSplit.mdx @@ -7,7 +7,7 @@ field would be the split/seperator used in the text, and the next field would ge fields work as splitters/seperators and new indexes for this new text. -#### Usage +## Usage ```cc $advancedTextSplit[text;split;index;split;index;...] ``` diff --git a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx index 0c41bcc8..2e92740d 100644 --- a/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/concatTextSplit.mdx @@ -4,7 +4,7 @@ title: "$concatTextSplit" adds an array to the end of an array from `$textsplit` -#### Usage +## Usage ```cc $concatTextSplit[text;separator(optional, default = ,)] ``` diff --git a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx index 0ec3c24b..2e20ef4f 100644 --- a/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/editTextSplitElement.mdx @@ -4,7 +4,7 @@ title: "$editTextSplitElement" adds an element to an array from `$textsplit` or replaces the value by index of the split text from `$textsplit` -#### Usage +## Usage ```cc $editTextSplitElement[index;new value] ``` diff --git a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx index 6671fc8e..793eb90b 100644 --- a/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx +++ b/content/docs/(functions)/Text/textSplit/findTextSplitIndex.mdx @@ -4,7 +4,7 @@ title: "$findTextSplitIndex" returns the index of the first occurrence of a value in an array from `$textsplit` -#### Usage +## Usage ```cc $findTextSplitIndex[value] ``` diff --git a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx index ca86a7e7..2bf85794 100644 --- a/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx +++ b/content/docs/(functions)/Text/textSplit/removeTextSplitElement.mdx @@ -4,7 +4,7 @@ title: "$removeTextSplitElement" removes an element from an array from `$textsplit` -#### Usage +## Usage ```cc $removeTextSplitElement[Index] ``` diff --git a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx index ff274929..a772b496 100644 --- a/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx +++ b/content/docs/(functions)/Text/textSplit/spliceTextJoin.mdx @@ -4,7 +4,7 @@ title: "$spliceTextJoin" Splits a text with `separator1`, then joins with it `separator2` every `x` times, and then joins with `separator3` every `x-1` times. -#### Usage +## Usage ```cc $spliceTextJoin[text;separator1;separator2;separator3;every] ``` diff --git a/content/docs/(functions)/Text/textSplit/splitText.mdx b/content/docs/(functions)/Text/textSplit/splitText.mdx index 7f6f3555..bb6822ac 100644 --- a/content/docs/(functions)/Text/textSplit/splitText.mdx +++ b/content/docs/(functions)/Text/textSplit/splitText.mdx @@ -4,7 +4,7 @@ title: "$splitText" returns the element by index from `$textSplit` -#### Usage +## Usage ```cc $splitText[index] ``` diff --git a/content/docs/(functions)/Text/textSplit/textSplit.mdx b/content/docs/(functions)/Text/textSplit/textSplit.mdx index 8071cae6..bb46bd72 100644 --- a/content/docs/(functions)/Text/textSplit/textSplit.mdx +++ b/content/docs/(functions)/Text/textSplit/textSplit.mdx @@ -5,7 +5,7 @@ title: "$textSplit" Splits the provided text with `seperator` and creates an array. To access them use: `$arrayGet` or other array functions -#### Usage +## Usage ```cc $textSplit[text;separator(optional, default = ,)] ``` diff --git a/content/docs/(functions)/Text/toLocaleUpperCase.mdx b/content/docs/(functions)/Text/toLocaleUpperCase.mdx index dbc68b37..fa34294d 100644 --- a/content/docs/(functions)/Text/toLocaleUpperCase.mdx +++ b/content/docs/(functions)/Text/toLocaleUpperCase.mdx @@ -4,7 +4,7 @@ title: "$toLocaleUppercase[text]" this sentence uppercases every first char of a word in a sentence -#### Usage: +## Usage: `$toLocaleUppercase[text]`
    diff --git a/content/docs/(functions)/Text/toLowercase.mdx b/content/docs/(functions)/Text/toLowercase.mdx index e6a76296..42fc3d9c 100644 --- a/content/docs/(functions)/Text/toLowercase.mdx +++ b/content/docs/(functions)/Text/toLowercase.mdx @@ -4,7 +4,7 @@ title: "$toLowercase[text]" this functions lowercases every character -#### Usage: +## Usage: `$toLowercase[text]`
    diff --git a/content/docs/(functions)/Text/toUppercase.mdx b/content/docs/(functions)/Text/toUppercase.mdx index 2c767518..b8ff94a6 100644 --- a/content/docs/(functions)/Text/toUppercase.mdx +++ b/content/docs/(functions)/Text/toUppercase.mdx @@ -4,7 +4,7 @@ title: "$toUppercase[text]" this functions uppercases every character -#### Usage: +## Usage: `$toUppercase[text]`
    diff --git a/content/docs/(functions)/Threads/createThread.mdx b/content/docs/(functions)/Threads/createThread.mdx index 896df37a..d8dd91d2 100644 --- a/content/docs/(functions)/Threads/createThread.mdx +++ b/content/docs/(functions)/Threads/createThread.mdx @@ -5,7 +5,7 @@ title: "$createThread" Create a thread, corresponding to the messageID specified in the function -#### Usage: +## Usage: `$createThread[Channel ID;Message ID;Thread Name;Reason;Duration (1h/1d/3d/7d)(optional);Return ID (yes/no)(optional);Private Thread? (yes/no)]` #### Example (Create Thread on user message): diff --git a/content/docs/(functions)/Threads/deleteThreads.mdx b/content/docs/(functions)/Threads/deleteThreads.mdx index 39181353..eec1ea00 100644 --- a/content/docs/(functions)/Threads/deleteThreads.mdx +++ b/content/docs/(functions)/Threads/deleteThreads.mdx @@ -3,7 +3,7 @@ title: "$deleteThreads" --- threads with the provided thread id gets deleted -### Usage +## Usage ```cc $deleteThreads[threadid;threadid2;...] ``` diff --git a/content/docs/(functions)/Threads/editThread.mdx b/content/docs/(functions)/Threads/editThread.mdx index 3d9da0f4..7bc08361 100644 --- a/content/docs/(functions)/Threads/editThread.mdx +++ b/content/docs/(functions)/Threads/editThread.mdx @@ -6,7 +6,7 @@ title: "$editThread" Edit a Thread. -#### Usage: +## Usage: `$editThread[Channel ID;Thread ID;Thread Name;Archived (yes/no);duration (1h/1d/3d/7d)(optional);Slowmode;Locked (yes/no)]` #### Example: diff --git a/content/docs/(functions)/Threads/getThreads.mdx b/content/docs/(functions)/Threads/getThreads.mdx index fe5395e2..ef756214 100644 --- a/content/docs/(functions)/Threads/getThreads.mdx +++ b/content/docs/(functions)/Threads/getThreads.mdx @@ -4,7 +4,7 @@ title: "$getThreads" Get all threads from a channel. -#### Usage: +## Usage: `$getThreads[Channel ID;Type to return (name/id);Seperator (default:, )]`
    diff --git a/content/docs/(functions)/Threads/joinThreads.mdx b/content/docs/(functions)/Threads/joinThreads.mdx index 4cd3ebab..64c22aaa 100644 --- a/content/docs/(functions)/Threads/joinThreads.mdx +++ b/content/docs/(functions)/Threads/joinThreads.mdx @@ -3,7 +3,7 @@ title: "$joinThreads" --- custom command bot joins the threads with the provided thread id -### Usage +## Usage ```cc $joinThreads[threadid;threadid2;...] ``` diff --git a/content/docs/(functions)/Threads/leaveThreads.mdx b/content/docs/(functions)/Threads/leaveThreads.mdx index bc8b5127..057f16af 100644 --- a/content/docs/(functions)/Threads/leaveThreads.mdx +++ b/content/docs/(functions)/Threads/leaveThreads.mdx @@ -3,7 +3,7 @@ title: "$leaveThreads" --- custom command bot leaves the threads with the provided thread id -### Usage +## Usage ```cc $leaveThreads[threadid;threadid2;...] ``` diff --git a/content/docs/(functions)/Threads/thread.mdx b/content/docs/(functions)/Threads/thread.mdx index 0fdc6f08..199c3aba 100644 --- a/content/docs/(functions)/Threads/thread.mdx +++ b/content/docs/(functions)/Threads/thread.mdx @@ -4,7 +4,7 @@ title: "$thread" Gets info trom a thread. -#### Usage: +## Usage: `$thread[Thread ID;Type]`
    diff --git a/content/docs/(functions)/Useful/callFunction.mdx b/content/docs/(functions)/Useful/callFunction.mdx index 7fec58f1..8641182e 100644 --- a/content/docs/(functions)/Useful/callFunction.mdx +++ b/content/docs/(functions)/Useful/callFunction.mdx @@ -5,7 +5,7 @@ title: "$callFunction" To call a user-defined function created with `$function` -#### Usage: +## Usage: `$callFunction[Function Name;Argument 1 (optional);Argument 2....(optional)]` #### Example: diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index fc88d787..1aeaad7a 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -5,7 +5,7 @@ title: "$function" Create a user-defined function that can be called by $callFunction or $functionName -#### Usage: +## Usage: `$function[Function name;Param 1 (optional);Param 2...(optional)]` #### Example: diff --git a/content/docs/(functions)/Useful/redirectErrors.mdx b/content/docs/(functions)/Useful/redirectErrors.mdx index 71f53bf9..ce6a0a6a 100644 --- a/content/docs/(functions)/Useful/redirectErrors.mdx +++ b/content/docs/(functions)/Useful/redirectErrors.mdx @@ -4,7 +4,7 @@ title: "$redirectErrors" To redirect any kind of errors to a specific channel, by default errors will appear in the execution channel -#### Usage: +## Usage: `$redirectErrors[Channel ID]` #### Example: diff --git a/content/docs/(functions)/Useful/seq.mdx b/content/docs/(functions)/Useful/seq.mdx index 5daf491f..a53cd534 100644 --- a/content/docs/(functions)/Useful/seq.mdx +++ b/content/docs/(functions)/Useful/seq.mdx @@ -4,7 +4,7 @@ title: "$seq" Returns a sequence of numbers, decided by a starting (inclusive) number and stop at ending (inclusive) number with step. -#### Usage: +## Usage: `$seq[Start;End;Step (optional, default=1);Separator (default ' ')]` #### Example: diff --git a/content/docs/(functions)/Useful/setTimeout.mdx b/content/docs/(functions)/Useful/setTimeout.mdx index 639ec4a7..dc9bcc33 100644 --- a/content/docs/(functions)/Useful/setTimeout.mdx +++ b/content/docs/(functions)/Useful/setTimeout.mdx @@ -4,7 +4,7 @@ title: "$setTimeout" Will execute the code inside it after certain time -#### Usage: +## Usage: `$setTimeout[time;file name (optional, default=$undefined));author (optional, default=$authorID)]` #### Example: diff --git a/content/docs/(functions)/Useful/spread.mdx b/content/docs/(functions)/Useful/spread.mdx index acf79a6b..f38398da 100644 --- a/content/docs/(functions)/Useful/spread.mdx +++ b/content/docs/(functions)/Useful/spread.mdx @@ -4,7 +4,7 @@ title: "$spread" spreads text as arguments inside functions -#### Usage +## Usage ```cc $spread[separator (optional, default: ,);data to spread] ``` diff --git a/content/docs/(functions)/Useful/stop.mdx b/content/docs/(functions)/Useful/stop.mdx index 7ff938d4..22d116ba 100644 --- a/content/docs/(functions)/Useful/stop.mdx +++ b/content/docs/(functions)/Useful/stop.mdx @@ -4,7 +4,7 @@ title: "$stop" This function will cause the interpetender to stop the command execution & return a message if wanted. -#### Usage: +## Usage: `$stop[Message (optional)]` #### Example: diff --git a/content/docs/(functions)/Useful/suppressErrors.mdx b/content/docs/(functions)/Useful/suppressErrors.mdx index d58a7b70..53ebc29b 100644 --- a/content/docs/(functions)/Useful/suppressErrors.mdx +++ b/content/docs/(functions)/Useful/suppressErrors.mdx @@ -4,7 +4,7 @@ title: "$suppressErrors" Suppress all the errors and sends a custom one. \{error} will contain the error that was thrown. -#### Usage: +## Usage: `$suppressErrors[message]` #### Example: diff --git a/content/docs/(functions)/Useful/wait.mdx b/content/docs/(functions)/Useful/wait.mdx index a7e9229e..d354b0ed 100644 --- a/content/docs/(functions)/Useful/wait.mdx +++ b/content/docs/(functions)/Useful/wait.mdx @@ -4,7 +4,7 @@ title: "$wait" Will wait an X time, before executing the code below it. -#### Usage: +## Usage: `$wait[time]` #### Example: diff --git a/content/docs/(functions)/Variables/deleteChannelVar.mdx b/content/docs/(functions)/Variables/deleteChannelVar.mdx index 5308a158..3542143e 100644 --- a/content/docs/(functions)/Variables/deleteChannelVar.mdx +++ b/content/docs/(functions)/Variables/deleteChannelVar.mdx @@ -4,7 +4,7 @@ title: "$deleteChannelVar" Deletes a channel variable, from the command trigger channel or from the ID specified. -#### Usage +## Usage ```cc $deleteChannelVar[variable;channelID(optional)] ``` diff --git a/content/docs/(functions)/Variables/deleteMessageVar.mdx b/content/docs/(functions)/Variables/deleteMessageVar.mdx index 537636d7..f99683d9 100644 --- a/content/docs/(functions)/Variables/deleteMessageVar.mdx +++ b/content/docs/(functions)/Variables/deleteMessageVar.mdx @@ -4,7 +4,7 @@ title: "$deleteMessageVar" Deletes a message variable, from the command trigger or from the ID specified. -#### Usage +## Usage ```cc $deleteMessageVar[variable;MessageID(optional)] ``` diff --git a/content/docs/(functions)/Variables/deleteServerVar.mdx b/content/docs/(functions)/Variables/deleteServerVar.mdx index 5707fb97..6e09df78 100644 --- a/content/docs/(functions)/Variables/deleteServerVar.mdx +++ b/content/docs/(functions)/Variables/deleteServerVar.mdx @@ -4,7 +4,7 @@ title: "$deleteServerVar" Deletes a server variable. -#### Usage +## Usage ```cc $deleteServerVar[variable] ``` diff --git a/content/docs/(functions)/Variables/deleteUserVar.mdx b/content/docs/(functions)/Variables/deleteUserVar.mdx index efc2a161..dbf4e676 100644 --- a/content/docs/(functions)/Variables/deleteUserVar.mdx +++ b/content/docs/(functions)/Variables/deleteUserVar.mdx @@ -4,7 +4,7 @@ title: "$deleteUserVar" Deletes a user variable, from the author of the command or from the ID specified. -#### Usage +## Usage ```cc $deleteUserVar[variable;userID] ``` diff --git a/content/docs/(functions)/Variables/getChannelVar.mdx b/content/docs/(functions)/Variables/getChannelVar.mdx index 6c20f86a..6a341195 100644 --- a/content/docs/(functions)/Variables/getChannelVar.mdx +++ b/content/docs/(functions)/Variables/getChannelVar.mdx @@ -4,7 +4,7 @@ title: "$getChannelVar" Gets a channel variable value -#### Usage +## Usage ```cc $getChannelVar[variable;channelID(optional)] ``` diff --git a/content/docs/(functions)/Variables/getMessageVar.mdx b/content/docs/(functions)/Variables/getMessageVar.mdx index 4ca0434f..1ce75625 100644 --- a/content/docs/(functions)/Variables/getMessageVar.mdx +++ b/content/docs/(functions)/Variables/getMessageVar.mdx @@ -4,7 +4,7 @@ title: "$getMessageVar" Gets a message variable value -#### Usage +## Usage ```cc $getMessageVar[variable;messageID(optional)] ``` diff --git a/content/docs/(functions)/Variables/getServerVar.mdx b/content/docs/(functions)/Variables/getServerVar.mdx index 812fef85..b96397f2 100644 --- a/content/docs/(functions)/Variables/getServerVar.mdx +++ b/content/docs/(functions)/Variables/getServerVar.mdx @@ -4,7 +4,7 @@ title: "$getServerVar" Gets a server variable value -#### Usage +## Usage ```cc $getServerVar[variable] ``` diff --git a/content/docs/(functions)/Variables/getUserVar.mdx b/content/docs/(functions)/Variables/getUserVar.mdx index 334f6af1..7e58a8be 100644 --- a/content/docs/(functions)/Variables/getUserVar.mdx +++ b/content/docs/(functions)/Variables/getUserVar.mdx @@ -4,7 +4,7 @@ title: "$getUserVar" Gets a user variable value -#### Usage +## Usage ```cc $getUserVar[variable;User ID (Optional)] ``` diff --git a/content/docs/(functions)/Variables/let.mdx b/content/docs/(functions)/Variables/let.mdx index 5aade053..6b5e2ac8 100644 --- a/content/docs/(functions)/Variables/let.mdx +++ b/content/docs/(functions)/Variables/let.mdx @@ -5,7 +5,7 @@ title: "$let" Define a variable, that you can access later through `$get`. This function is useful to temporarily store variables, like to save the result of a calculation -#### Usage +## Usage ```cc $let[variable name;variable value;remain after execution (yes/no , default no) (optional)] ``` diff --git a/content/docs/(functions)/Variables/resetUserVar.mdx b/content/docs/(functions)/Variables/resetUserVar.mdx index 2676fc0c..27ea0a07 100644 --- a/content/docs/(functions)/Variables/resetUserVar.mdx +++ b/content/docs/(functions)/Variables/resetUserVar.mdx @@ -4,7 +4,7 @@ title: "$resetUserVar" Resets a user variable for all users. -#### Usage +## Usage ```cc $resetUserVar[variable] ``` diff --git a/content/docs/(functions)/Variables/setChannelVar.mdx b/content/docs/(functions)/Variables/setChannelVar.mdx index f2f0a0c1..a3a8039f 100644 --- a/content/docs/(functions)/Variables/setChannelVar.mdx +++ b/content/docs/(functions)/Variables/setChannelVar.mdx @@ -4,7 +4,7 @@ title: "$setChannelVar" Sets a channel variable value. -#### Usage +## Usage ```cc $setChannelVar[variable;value;channelID (optional)] ``` diff --git a/content/docs/(functions)/Variables/setMessageVar.mdx b/content/docs/(functions)/Variables/setMessageVar.mdx index d2deb71c..d2031643 100644 --- a/content/docs/(functions)/Variables/setMessageVar.mdx +++ b/content/docs/(functions)/Variables/setMessageVar.mdx @@ -4,7 +4,7 @@ title: "$setMessageVar" Sets a message variable value. -#### Usage +## Usage ```cc $setMessageVar[variable;value;messageID(optional)] ``` diff --git a/content/docs/(functions)/Variables/setServerVar.mdx b/content/docs/(functions)/Variables/setServerVar.mdx index f87a5c75..7340d4f6 100644 --- a/content/docs/(functions)/Variables/setServerVar.mdx +++ b/content/docs/(functions)/Variables/setServerVar.mdx @@ -4,7 +4,7 @@ title: "$setServerVar" Sets a Server variable value. -#### Usage +## Usage ```cc $setServerVar[variable;value] ``` diff --git a/content/docs/(functions)/Variables/setUserVar.mdx b/content/docs/(functions)/Variables/setUserVar.mdx index 817de1c4..5708cd7e 100644 --- a/content/docs/(functions)/Variables/setUserVar.mdx +++ b/content/docs/(functions)/Variables/setUserVar.mdx @@ -4,7 +4,7 @@ title: "$setUserVar" Sets a user variable value. -#### Usage +## Usage ```cc $setUserVar[variable;value;userID(optional)] ``` diff --git a/content/docs/(functions)/Variables/userLeaderboard.mdx b/content/docs/(functions)/Variables/userLeaderboard.mdx index 68da1fcf..113061aa 100644 --- a/content/docs/(functions)/Variables/userLeaderboard.mdx +++ b/content/docs/(functions)/Variables/userLeaderboard.mdx @@ -4,7 +4,7 @@ title: "$userLeaderboard" Generates a leaderboard of a user variable and return it. -#### Usage +## Usage ```cc $userLeaderboard[variable;Sorting Type;{top}.- {username} - {value};limit per page (optional, default=10, max=40);page (optional, default=1)] ``` diff --git a/content/docs/(functions)/Variables/userVarRank.mdx b/content/docs/(functions)/Variables/userVarRank.mdx index 10b72e33..56d80638 100644 --- a/content/docs/(functions)/Variables/userVarRank.mdx +++ b/content/docs/(functions)/Variables/userVarRank.mdx @@ -4,7 +4,7 @@ title: "$userVarRank" Return user's rank returned by `$userleaderboard` for a single user -#### Usage +## Usage ```cc $uservarRank[Variable name;Sorting Type;User ID (optional)] From 050fc22a3d76bf5d38ddf4ec8552e898e6b312ef Mon Sep 17 00:00:00 2001 From: nervn Date: Mon, 17 Aug 2026 18:38:13 +0200 Subject: [PATCH 55/62] Fix $msg with emoji-only button in `component` --- content/docs/Changelogs/1.v1.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 36b2ce26..7ab114e0 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -29,7 +29,7 @@ title: "v1.x (Current)" * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) * Fix for message fails to edit if used some curl message like \{color} inside `$editIn` * Poll Update Trigger, was not triggering properly. - +* In `$msg` if trying to use `component` option and the message has a button with empty text (just emoji), it failed. ## v1.5.0 (Main) > Release Date: 26 July 2026 From 03485d65a4bbd463263f17e21a462a1ff1979fc3 Mon Sep 17 00:00:00 2001 From: nervn Date: Tue, 18 Aug 2026 18:51:09 +0200 Subject: [PATCH 56/62] custom bot status fix --- content/docs/Changelogs/1.v1.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 7ab114e0..b60db746 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -30,6 +30,7 @@ title: "v1.x (Current)" * Fix for message fails to edit if used some curl message like \{color} inside `$editIn` * Poll Update Trigger, was not triggering properly. * In `$msg` if trying to use `component` option and the message has a button with empty text (just emoji), it failed. +* Custom bots (Tier 4+) with a status other than Online were not being set correctly. Custom bots will now properly follow the status configured in the dashboard. ## v1.5.0 (Main) > Release Date: 26 July 2026 From cae566dc61ae0721b1628b3f3feee87cf19644b2 Mon Sep 17 00:00:00 2001 From: nervn Date: Tue, 18 Aug 2026 23:35:16 +0200 Subject: [PATCH 57/62] default value support for $function --- content/docs/(functions)/Useful/function.mdx | 123 +++++++++++++++---- content/docs/Changelogs/1.v1.mdx | 1 + 2 files changed, 101 insertions(+), 23 deletions(-) diff --git a/content/docs/(functions)/Useful/function.mdx b/content/docs/(functions)/Useful/function.mdx index 1aeaad7a..b068a662 100644 --- a/content/docs/(functions)/Useful/function.mdx +++ b/content/docs/(functions)/Useful/function.mdx @@ -2,29 +2,30 @@ title: "$function" --- -Create a user-defined function that can be called by $callFunction or $functionName +Create a user-defined function that can be called by `$callFunction` or `$functionName`. +## Usage -## Usage: `$function[Function name;Param 1 (optional);Param 2...(optional)]` -#### Example: +#### Example + ```cc $function[printHello;name] Hello $name $endFunction -``` +``` + +Call the function using `$callFunction`: -Call the function, using `$callFunction`
    -!!exec $function[printHello;name] -
    -Hello $name 👋 -
    -$endFunction +!!exec $function[printHello;name] +Hello $name 👋 +$endFunction + $callFunction[printhello;Mika]
    @@ -33,16 +34,16 @@ Hello Mika 👋
    -Call the function, using `$printHello` +Call the function using `$printHello`: +
    -!!exec $function[printHello;name] -
    -Hello $name 👋 -
    -$endFunction +!!exec $function[printHello;name] +Hello $name 👋 +$endFunction + $printhello[Mika]
    @@ -51,21 +52,97 @@ Hello Mika 👋
    + + +A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] for short format (`$functionName`) +but if you are using `$callFunction` to call the function, any name is valid. + + + -Code inside the function is isolated from outside, which means changing of variables, arrays, random,...won't effect the outside.\ +Code inside the function is isolated from outside, which means changing of variables, arrays, random,...won't effect the outside. you can access outside temporary variables (assigned by `$let`) but you can't change them. - -A function name can't start with number, and must be within [A-Z or a-z or _ or 0-9] for short format ($functionName) -but if you are using $callFunction to call the function, any name is valid +## Default parameter values - +Parameters can have a default value by using `=`. The default value is used when the parameter is not provided when calling the function. -**Function difficulty:** +```cc +$function[greet;name=Mika] + Hello $name 👋 +$endFunction +``` + +Calling the function without providing `name`: + +```cc +$greet[] +``` + +outputs: + +```text +Hello Mika 👋 +``` + +Providing a value overrides the default: + +```cc +$greet[Alex] +``` + +outputs: + +```text +Hello Alex 👋 +``` + +Default values can also be used with multiple parameters: + +```cc +$function[greet;name=Mika;greeting=Hello] + $greeting $name 👋 +$endFunction +``` + +Calling: + +```cc +$greet[] +``` + +outputs: + +```text +Hello Mika 👋 +``` + +While providing custom values: + +```cc +$greet[Alex;Welcome] +``` + +outputs: + +```text +Welcome Alex 👋 +``` + + + +When defining default parameter values, spaces in the parameter name are ignored, but spaces in the default value are preserved. + +- `param=def` and `param =def` are equivalent. +- `param= def` is different from `param=def` because the spaces are part of the default value. +- `=abc` is invalid because a parameter name is required. + + -**Tags:** +**Function difficulty:** +**Tags:** diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index b60db746..137a19a6 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -24,6 +24,7 @@ title: "v1.x (Current)" * Slash command support is now available for some native commands, such as clone. These slash commands are available on the main bot only. * `$userLeaderboard` and `$userVarRank` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. * `$includeLibrary` respects the status of the included library; disabled libraries cannot be included. +* Added support for **default parameter values** in custom functions defined by `$function` using the `param=default` syntax. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 5c15fb18e3ed8af9c79146f0e1946593ff887406 Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 19 Aug 2026 17:50:09 +0200 Subject: [PATCH 58/62] new function: $botPrefix --- content/docs/(functions)/Bot/botPrefix.mdx | 17 +++++++++++++++++ content/docs/Changelogs/1.v1.mdx | 1 + 2 files changed, 18 insertions(+) create mode 100644 content/docs/(functions)/Bot/botPrefix.mdx diff --git a/content/docs/(functions)/Bot/botPrefix.mdx b/content/docs/(functions)/Bot/botPrefix.mdx new file mode 100644 index 00000000..7b519da2 --- /dev/null +++ b/content/docs/(functions)/Bot/botPrefix.mdx @@ -0,0 +1,17 @@ +--- +title: "$botPrefix" +--- + +This function retrieves and returns the current prefix of the bot. The prefix is used to recognize native bot commands such as `!!clone`, `!!create`, and other built-in commands. + +## Usage +```cc +$botPrefix +``` + + +The `$botPrefix` function returns the prefix currently configured for the bot. + +For the main bot, this is the bot's native command prefix (`!!`). + +For custom bots, the function returns the prefix configured by the administrator in the dashboard. \ No newline at end of file diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 137a19a6..0e63a619 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -25,6 +25,7 @@ title: "v1.x (Current)" * `$userLeaderboard` and `$userVarRank` now uses clearer sorting names to avoid confusion. Sorting options are now `highest-first` and `lowest-first`. * `$includeLibrary` respects the status of the included library; disabled libraries cannot be included. * Added support for **default parameter values** in custom functions defined by `$function` using the `param=default` syntax. +* Added `$botPrefix`, which returns the current bot prefix used for native commands, including custom bot prefixes configured in the dashboard. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 37bdea5348201893a6b6efedc5101e5bba9e2c56 Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 19 Aug 2026 18:02:58 +0200 Subject: [PATCH 59/62] $changeNickname support reseting --- .../(functions)/Member/changeNickname.mdx | 30 ++++++++++++------- content/docs/Changelogs/1.v1.mdx | 1 + 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/content/docs/(functions)/Member/changeNickname.mdx b/content/docs/(functions)/Member/changeNickname.mdx index 16d1a385..ee5a0b13 100644 --- a/content/docs/(functions)/Member/changeNickname.mdx +++ b/content/docs/(functions)/Member/changeNickname.mdx @@ -2,21 +2,23 @@ title: "$changeNickname" --- -Changes the nickname of a specified member in the server. +Changes the nickname of a specified member in the server. The nickname can also be left empty to reset the member's nickname. ## Usage: ```cc -$changeNickname[userID;nickname] -``` +$changeNickname[userID;nickname;reason (optional)] +```` + 1. **userID** - The ID of the member whose nickname you want to change. -2. **nickname** - The new nickname you want to assign to the member. +2. **nickname** - The new nickname you want to assign to the member. Leave this empty to reset the nickname. +3. **reason** - The reason for changing the nickname. This is optional. ## Example -#### Using $changeNickname +### Changing a nickname -Changing the nickname of the command author +Changing the nickname of the command author: @@ -27,15 +29,23 @@ Hello +### Resetting a nickname + +Leave the nickname argument empty to reset the member's nickname: + +```cc +$changeNickname[$authorID;;Reset nickname] +``` + -The bot requires the "Manage Nicknames" permission to change nicknames and only change nicknames of members with roles lower than bots highest role. +The bot requires the "Manage Nicknames" permission to change nicknames and can only change the nicknames of members with roles lower than the bot's highest role. - + -Discord doesn't allow others to change owners nickname. If you will try to change nickname of an invalid member or owner, error message will be shown. +Discord doesn't allow bots to change the owner's nickname. If you try to change the nickname of an invalid member or the server owner, an error message will be shown. @@ -43,4 +53,4 @@ Discord doesn't allow others to change owners nickname. If you will try to chang **Difficulty:** -**Tags:** +**Tags:** \ No newline at end of file diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index 0e63a619..a2259dbd 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -26,6 +26,7 @@ title: "v1.x (Current)" * `$includeLibrary` respects the status of the included library; disabled libraries cannot be included. * Added support for **default parameter values** in custom functions defined by `$function` using the `param=default` syntax. * Added `$botPrefix`, which returns the current bot prefix used for native commands, including custom bot prefixes configured in the dashboard. +* Updated `$changeNickname` to support resetting nicknames and optional audit-log reasons. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 37c3c8e177e3800cf0276cc30acf3279f3df7f9b Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 19 Aug 2026 18:16:53 +0200 Subject: [PATCH 60/62] hex format of colors in $role --- content/docs/(functions)/Role/role.mdx | 50 +++++++++++++------------- content/docs/Changelogs/1.v1.mdx | 1 + 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index e5e55b80..5b9a1304 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -7,37 +7,40 @@ A powerful and compact function to retrieve various properties of a Discord role ## Usage ```cc $role[roleid;property] -``` +```` This function takes two arguments: -* `roleid`: The ID of the role you want to get information from. -* `property`: The specific piece of information you want to retrieve. +* `roleid`: The ID of the role you want to get information from. +* `property`: The specific piece of information you want to retrieve. #### Supported Properties: Here's a list of the available properties you can use with the `$role` function: -* `name`: The role's name (e.g., "Moderator"). -* `mention`: The role's mention string (e.g., `<@&1234567890>`). -* `id`: The role's ID (e.g., `1234567890`). -* `hex`: The role's color in hexadecimal format (e.g., `#FF0000` for red). -* `color`: The role's color as a 10-base number. -* `primaryColor`: same as color. -* `secondColor`: secondary color in case of gradient color. -* `thirdColor`: third color in case of there is tertiary color. -* `created`: The date and time when the role was created. -* `position`: The role's position in the role hierarchy. Lower numbers mean higher priority. -* `rawposition`: The role's raw position in the role list. -* `guildid`: The ID of the guild (server) where the role exists. -* `guildname`: The name of the guild (server) where the role exists. -* `timestamp`: The creation timestamp of the role. -* `ismentionable`: Returns `true` if the role can be mentioned, `false` otherwise. -* `iseditable`: Returns `true` if the bot can edit the role, `false` otherwise. -* `ismanaged`: Returns `true` if the role is managed by an integration (like a bot), `false` otherwise. -* `ishoisted`: Returns `true` if the role is hoisted (displayed separately in the member list), `false` otherwise. -* `usercount`: The number of users who have this role. (Note: This value is cached and might not be perfectly up-to-date.) -* `icon`: Returns the role's icon URL if it exists. Returns `undefined` if the role has no icon. +* `name`: The role's name (e.g., "Moderator"). +* `mention`: The role's mention string (e.g., `<@&1234567890>`). +* `id`: The role's ID (e.g., `1234567890`). +* `hex`: The role's color in hexadecimal format (e.g., `FF0000` for red). +* `color`: The role's primary color as a 10-base number. +* `primaryColor`: Same as `color`. +* `secondColor`: The role's secondary color as a 10-base number, if it has a gradient color. +* `thirdColor`: The role's tertiary color as a 10-base number, if it has a tertiary color. +* `primaryHex`: The role's primary color in hexadecimal format. +* `secondaryHex`: The role's secondary color in hexadecimal format, or `undefined` if no secondary color is set. +* `tertiaryHex`: The role's tertiary color in hexadecimal format, or `undefined` if no tertiary color is set. +* `created`: The date and time when the role was created. +* `position`: The role's position in the role hierarchy. Lower numbers mean higher priority. +* `rawposition`: The role's raw position in the role list. +* `guildid`: The ID of the guild (server) where the role exists. +* `guildname`: The name of the guild (server) where the role exists. +* `timestamp`: The creation timestamp of the role. +* `ismentionable`: Returns `true` if the role can be mentioned, `false` otherwise. +* `iseditable`: Returns `true` if the bot can edit the role, `false` otherwise. +* `ismanaged`: Returns `true` if the role is managed by an integration (like a bot), `false` otherwise. +* `ishoisted`: Returns `true` if the role is hoisted (displayed separately in the member list), `false` otherwise. +* `usercount`: The number of users who have this role. (Note: This value is cached and might not be perfectly up-to-date.) +* `icon`: Returns the role's icon URL if it exists. Returns `undefined` if the role has no icon.
    @@ -56,5 +59,4 @@ This example retrieves the position of the role with the ID `798789079070970`. T **Function difficulty:** - **Tags:** diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index a2259dbd..fcb89a71 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -27,6 +27,7 @@ title: "v1.x (Current)" * Added support for **default parameter values** in custom functions defined by `$function` using the `param=default` syntax. * Added `$botPrefix`, which returns the current bot prefix used for native commands, including custom bot prefixes configured in the dashboard. * Updated `$changeNickname` to support resetting nicknames and optional audit-log reasons. +* Added `primaryHex`, `secondaryHex`, and `tertiaryHex` properties to `$role` for retrieving role gradient colors in hexadecimal format. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) From 1639618d827eb1db0b4eeab5870559175ec39ce9 Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 19 Aug 2026 20:43:01 +0200 Subject: [PATCH 61/62] hasUpvoted and onlyForUpvoters --- .../docs/(functions)/Member/hasUpvoted.mdx | 42 +++++++++++++++++++ .../(functions)/Text/only/onlyForUpvoters.mdx | 35 ++++++++++++++++ content/docs/Changelogs/1.v1.mdx | 3 +- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 content/docs/(functions)/Member/hasUpvoted.mdx create mode 100644 content/docs/(functions)/Text/only/onlyForUpvoters.mdx diff --git a/content/docs/(functions)/Member/hasUpvoted.mdx b/content/docs/(functions)/Member/hasUpvoted.mdx new file mode 100644 index 00000000..e7f3ab11 --- /dev/null +++ b/content/docs/(functions)/Member/hasUpvoted.mdx @@ -0,0 +1,42 @@ +--- +title: "$hasUpvoted" +--- + +Checks whether a user has upvoted the current server within the last 12 hours. + +## Usage + +```cc +$hasUpvoted[userID (optional)] +```` + +This function accepts one optional argument: + +* **userID** - The ID of the user to check. If omitted, the user who triggered the command is used. + +The function returns `true` if the user has upvoted the current server within the last 12 hours. Otherwise, it returns `false`. + +## Example + +#### Checking the command author's upvote status + + + +!!exec $hasUpvoted + + +true + + + +#### Checking a specific user + +```cc +$hasUpvoted[123456789012345678] +``` + +**Related Functions:** `$onlyForUpvoters` + +**Difficulty:** + +**Tags:** \ No newline at end of file diff --git a/content/docs/(functions)/Text/only/onlyForUpvoters.mdx b/content/docs/(functions)/Text/only/onlyForUpvoters.mdx new file mode 100644 index 00000000..04d00f48 --- /dev/null +++ b/content/docs/(functions)/Text/only/onlyForUpvoters.mdx @@ -0,0 +1,35 @@ +--- +title: "$onlyForUpvoters" +--- + +Only allows the command to continue executing if the user has upvoted the current server within the last 12 hours. + +If the user has not upvoted the server within the last 12 hours, the function sends an error message and stops the execution of the command. + +## Usage + +```cc +$onlyForUpvoters[error message (optional)] +```` + +This function accepts one optional argument: + +* **error message** - The message to send when the user has not upvoted. If omitted, a default error message is used. + +## Example + +#### Restricting a command to upvoters + +```cc +$onlyForUpvoters[You must upvote this server to use this command.] +``` + +If the user has not upvoted the server within the last 12 hours, the command will stop executing and the provided message will be sent. + +The command will continue normally if the user has upvoted the server within the last 12 hours. + +**Related Functions:** `$hasUpvoted` + +**Difficulty:** + +**Tags:** diff --git a/content/docs/Changelogs/1.v1.mdx b/content/docs/Changelogs/1.v1.mdx index fcb89a71..c1954340 100644 --- a/content/docs/Changelogs/1.v1.mdx +++ b/content/docs/Changelogs/1.v1.mdx @@ -28,7 +28,8 @@ title: "v1.x (Current)" * Added `$botPrefix`, which returns the current bot prefix used for native commands, including custom bot prefixes configured in the dashboard. * Updated `$changeNickname` to support resetting nicknames and optional audit-log reasons. * Added `primaryHex`, `secondaryHex`, and `tertiaryHex` properties to `$role` for retrieving role gradient colors in hexadecimal format. - +* Added `$hasUpvoted` to check whether a user has upvoted the current server within the last 12 hours. +* Added `$onlyForUpvoters` to restrict command execution to users who have upvoted the current server within the last 12 hours. #### 🐛 Fixes * `$serverCount` and `$allMembersCount` return the correct numbers for custom bots (Tier 3+) * Fix for message fails to edit if used some curl message like \{color} inside `$editIn` From 4d70fbb77309bfa49c49b2723e1ca57dd8025f76 Mon Sep 17 00:00:00 2001 From: nervn Date: Wed, 19 Aug 2026 21:35:55 +0200 Subject: [PATCH 62/62] role color term matching --- content/docs/(functions)/Role/role.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/docs/(functions)/Role/role.mdx b/content/docs/(functions)/Role/role.mdx index 5b9a1304..1c9eb1a4 100644 --- a/content/docs/(functions)/Role/role.mdx +++ b/content/docs/(functions)/Role/role.mdx @@ -25,10 +25,10 @@ Here's a list of the available properties you can use with the `$role` function: * `color`: The role's primary color as a 10-base number. * `primaryColor`: Same as `color`. * `secondColor`: The role's secondary color as a 10-base number, if it has a gradient color. -* `thirdColor`: The role's tertiary color as a 10-base number, if it has a tertiary color. +* `thirdColor`: The role's third color as a 10-base number, if it has a third color. * `primaryHex`: The role's primary color in hexadecimal format. -* `secondaryHex`: The role's secondary color in hexadecimal format, or `undefined` if no secondary color is set. -* `tertiaryHex`: The role's tertiary color in hexadecimal format, or `undefined` if no tertiary color is set. +* `secondHex`: The role's secondary color in hexadecimal format, or `undefined` if no secondary color is set. +* `thirdHex`: The role's third color in hexadecimal format, or `undefined` if no third color is set. * `created`: The date and time when the role was created. * `position`: The role's position in the role hierarchy. Lower numbers mean higher priority. * `rawposition`: The role's raw position in the role list.

    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 literal 0 HcmV?d00001 diff --git a/public/images/guide/cb-setup/nav-to-prem2.png b/public/images/guide/cb-setup/nav-to-prem2.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd03aa0b9e6328d18079c281c445267dc3df795 GIT binary patch literal 129976 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